Usage

Contents

Methods

initialize

Inits instance of BladeSDK for correct work with Blade API and Hedera network.

initialize( apiKey: string, dAppCode: string, network: Network, bladeEnv: BladeEnv, force: boolean): Promise<InfoData>

Parameters

NameTypeDescription

apiKey

string

Unique key for API provided by Blade team.

dAppCode

string

your dAppCode - request specific one by contacting Bladelabs team

network

Network

Mainnet or Testnet of Hedera network

bladeEnv

BladeEnv

optional field to set BladeAPI environment (Prod, CI)

force

boolean

field to force init. Will not crash if already initialized

Returns

Promise<InfoData>

Example

import BladeSdk, { BladeEnv, Network } from '@bladelabs/react-native-blade-sdk';

// ...

const apiKey = 'reactsdktest';
const dAppCode = 'FG9dUBQcBaBAPgCHz7DqmNZzrJyhewAMJytjwp3VFIEMFTXQyVSIDq6wRvtPcSAt';
const initResult = await BladeSdk.initialize(apiKey, dAppCode, Network.Testnet, BladeEnv.Prod, true);
console.log('initialize:', initResult);

getInfo

This method returns basic params of initialized instance of BladeSDK. This params may useful for support.

Returned object likely will contain next fields: apiKey, dAppCode, network, visitorId, sdkEnvironment, sdkVersion, nonce

In case of support please not provide full apiKey, limit yourself to the part of the code that includes a few characters at the beginning and at the end (eg. AdR3....BFgd)

getInfo(): Promise<InfoData>

Returns

Promise<InfoData>

Example

const infoResult = await BladeSdk.getInfo();
console.log('getInfo:', infoResult);

createAccount

Create new Hedera account (ECDSA). Only for configured dApps. Depending on dApp config Blade create account, associate tokens, etc.

In case of not using pre-created accounts pool and network high load, this method can return transactionId and no accountId.

In that case account creation added to queue, and you should wait some time and call getPendingAccount() method.

createAccount( privateKey: string, deviceId: string): Promise<CreateAccountData>

Parameters

NameTypeDescription

privateKey

string

optional field if you need specify account key (hex encoded privateKey with DER-prefix)

deviceId

string

optional field for headers for backend check

Returns

Promise<CreateAccountData>

Example

const newAccountPrivateKey = '3030020100300706052b8104000a0422042047203b26c99c5f002d3b5c38b6bcd2ab46de8ad3fa90c5a39dcfdc5904dfa9a0';
const accountResult = await BladeSdk.createAccount(newAccountPrivateKey, '');
console.log('createAccount:', accountResult);

associateToken

Associate token to account. Association fee will be covered by PayMaster, if tokenId configured in dApp

associateToken( tokenId: string, accountId: string, accountPrivateKey: string): Promise<TransactionReceiptData>

Parameters

NameTypeDescription

tokenId

string

token id to associate. Empty to associate all tokens configured in dApp

accountId

string

account id to associate token

accountPrivateKey

string

account private key

Returns

Promise<TransactionReceiptData>

Example

const associateResult = await BladeSdk.associateToken('0.0.1337', '0.0.10001', '3030020100300706052b8104000a0422042047203b26c99c5f002d3b5c38b6bcd2ab46de8ad3fa90c5a39dcfdc5904dfa9a0');
console.log('associateResult:', associateResult);

deleteAccount

Delete Hedera account. This method requires account private key and operator private key. Operator is the one who paying fees

deleteAccount( deleteAccountId: string, deletePrivateKey: string, transferAccountId: string, operatorAccountId: string, operatorPrivateKey: string): Promise<TransactionReceiptData>

Parameters

NameTypeDescription

deleteAccountId

string

account id of account to delete (0.0.xxxxx)

deletePrivateKey

string

account private key (DER encoded hex string)

transferAccountId

string

if any funds left on account, they will be transferred to this account (0.0.xxxxx)

operatorAccountId

string

operator account id (0.0.xxxxx). Used for fee

operatorPrivateKey

string

operator's account private key (DER encoded hex string)

Returns

Promise<TransactionReceiptData>

Example

const accountResult = await BladeSdk.createAccount('', '');
console.log('createAccount:', accountResult);

const deleteResult = await BladeSdk.deleteAccount(
  accountResult.accountId,
  accountResult.privateKey,
  operatorAccountId,
  operatorAccountId,
  operatorPrivateKey
);
console.log('deleteAccount:', result);

getBalance

Get hbar and token balances for specific account.

getBalance(accountId: string): Promise<BalanceData>

Parameters

NameTypeDescription

accountId

string

Hedera account id (0.0.xxxxx)

Returns

Promise<BalanceData>

Example

const balanceResult = await BladeSdk.getBalance('0.0.10001');
console.log('getBalance:', balanceResult);

transferHbars

Method to execute Hbar transfers from current account to receiver

transferHbars( accountId: string, accountPrivateKey: string, receiverId: string, amount: number, memo: string): Promise<TransactionReceiptData>

Parameters

NameTypeDescription

accountId

string

: sender account id (0.0.xxxxx)

accountPrivateKey

string

: sender's hex-encoded private key with DER-header (302e020100300506032b657004220420...). ECDSA or Ed25519

receiverId

string

amount

number

: amount

memo

string

: transaction memo (limited to 100 characters)

Returns

Promise<TransactionReceiptData> - receipt

Example

const senderId = '0.0.10001'
const senderKey = '302d300706052b8104000a032200029dc73991b0d9cd...'
const receiverId = '0.0.10002'
const amount = 2.5

const transferResult = await BladeSdk.transferHbars(senderId, senderKey, receiverId, amount, "Some memo text");
console.log('transferHbars:', transferResult);

transferTokens

Method to execute token transfers from current account to receiver

transferTokens( tokenId: string, accountId: string, accountPrivateKey: string, receiverId: string, amountOrSerial: number, memo: string, usePaymaster: boolean = false): Promise<TransactionReceiptData>

Parameters

NameTypeDescription

tokenId

string

: token id to send (0.0.xxxxx)

accountId

string

: sender account id (0.0.xxxxx)

accountPrivateKey

string

: sender's hex-encoded private key with DER-header (302e020100300506032b657004220420...). ECDSA or Ed25519

receiverId

string

: receiver account id (0.0.xxxxx)

amountOrSerial

number

: amount of fungible tokens to send (with token-decimals correction) on NFT serial number

memo

string

: transaction memo (limited to 100 characters)

usePaymaster

boolean

if true, Paymaster account will pay fee transaction. Only for single dApp configured fungible-token. In that case tokenId not used

Returns

Promise<TransactionReceiptData> - receipt

Example

const tokenId = '0.0.1337'
const senderId = '0.0.10001'
const senderKey = '302d300706052b8104000a032200029dc73991b0d9cd...'
const receiverId = '0.0.10002'
const amount = 2.5

const transferResult = await BladeSdk.transferTokens(senderId, senderKey, receiverId, amount, "Some memo text");
console.log('transferHbars:', transferResult);

getTransactions

Get transactions history for account. Can be filtered by transaction type.

Transaction requested from mirror node. Every transaction requested for child transactions. Result are flattened.

If transaction type is not provided, all transactions will be returned.

If transaction type is CRYPTOTRANSFERTOKEN records will additionally contain plainData field with decoded data.

getTransactions( accountId: string, transactionType: string = '', nextPage: string = '', transactionsLimit: number = 10): Promise<TransactionsHistoryData>

Parameters

NameTypeDescription

accountId

string

account id to get transactions for (0.0.xxxxx)

transactionType

string

one of enum MirrorNodeTransactionType or "CRYPTOTRANSFERTOKEN"

nextPage

string

link to next page of transactions from previous request

transactionsLimit

number

number of transactions to return. Speed of request depends on this value if transactionType is set.

Returns

Promise<TransactionsHistoryData>

Example

const transactionsResult = await BladeSdk.getTransactions('0.0.10001');
console.log('getTransactions:', transactionsResult);

getCoinList

Get list of all available coins on CoinGecko.

getCoinList(): Promise<CoinListData>

Returns

Promise<CoinListData>

Example

const coinListResult = await BladeSdk.getCoinList();
console.log('getCoinList:', coinListResult);

getCoinPrice

Get coin price and coin info from CoinGecko. Search can be coin id or address in one of the coin platforms.

getCoinPrice( search: string, currency: string = 'usd'): Promise<CoinInfoData>

Parameters

NameTypeDescription

search

string

coin alias (get one using getCoinList method)

currency

string

currency to get price in (usd, eur, etc.)

Returns

Promise<CoinInfoData>

Example

const coinPriceResult = await BladeSdk.getCoinPrice('hbar', 'uah');
console.log('getCoinPrice:', coinPriceResult);

exchangeGetQuotes

Get quotes from different services for buy, sell or swap

exchangeGetQuotes( sourceCode: string, sourceAmount: number, targetCode: string, strategy: CryptoFlowServiceStrategy): Promise<SwapQuotesData>

Parameters

NameTypeDescription

sourceCode

string

name (HBAR, KARATE, other token code)

sourceAmount

number

amount to swap, buy or sell

targetCode

string

name (HBAR, KARATE, USDC, other token code)

strategy

CryptoFlowServiceStrategy

one of enum CryptoFlowServiceStrategy (Buy, Sell, Swap)

Returns

Promise<SwapQuotesData>

Example

const quotesResult = await BladeSdk.exchangeGetQuotes('USD', 100, 'HBAR', CryptoFlowServiceStrategy.BUY);
console.log('exchangeGetQuotes:', quotesResult);

getTradeUrl

Get configured url to buy or sell tokens or fiat

getTradeUrl( strategy: CryptoFlowServiceStrategy, accountId: string, sourceCode: string, sourceAmount: number, targetCode: string, slippage: number, serviceId: string, redirectUrl: string = ''): Promise<IntegrationUrlData>

Parameters

NameTypeDescription

strategy

CryptoFlowServiceStrategy

Buy / Sell

accountId

string

account id

sourceCode

string

name (HBAR, KARATE, USDC, other token code)

sourceAmount

number

amount to buy/sell

targetCode

string

name (HBAR, KARATE, USDC, other token code)

slippage

number

slippage in percents. Transaction will revert if the price changes unfavorably by more than this percentage.

serviceId

string

service id to use (saucerswap, onmeta, etc)

redirectUrl

string

optional url to redirect after final step

Returns

Promise<IntegrationUrlData>

Example

const urlResult = await BladeSdk.getTradeUrl(CryptoFlowServiceStrategy.BUY, operatorAccountId, 'USD', 100, 'HBAR', 2, 'moonpay', '');
console.log('getTradeUrl:', urlResult);

getExchangeStatus

Get exchange order status

getExchangeStatus( serviceId: string, orderId: string): Promise<TransakOrderInfo>

Parameters

NameTypeDescription

serviceId

string

service id to use for swap (saucerswap, onmeta, etc)

orderId

string

order id of operation

Returns

Promise<TransakOrderInfo>

Example

const orderInfo = await BladeSdk.getExchangeStatus('transak', 'abaf28be-609f-49f4-a09a-e8e7ea7c8bd9');
console.log('getExchangeStatus:', orderInfo);

swapTokens

Swap tokens

swapTokens( accountId: string, accountPrivateKey: string, sourceCode: string, sourceAmount: number, targetCode: string, slippage: number, serviceId: string): Promise<SwapResultData>

Parameters

NameTypeDescription

accountId

string

: account id

accountPrivateKey

string

: account private key

sourceCode

string

: name (HBAR, KARATE, other token code)

sourceAmount

number

: amount to swap

targetCode

string

: name (HBAR, KARATE, other token code)

slippage

number

: slippage in percents. Transaction will revert if the price changes unfavorably by more than this percentage.

serviceId

string

: service id to use for swap (saucerswap, etc)

Returns

Promise<SwapResultData>

Example

const swapResult = await BladeSdk.swapTokens('0.0.10001', '302d300706052b8104000a032200029dc73991b0d9cd...', 'USDC', 123.4, 'KARATE', 0.5, 'moonpay');
console.log('swapResult:', swapResult);

sign

Sign base64-encoded message with private key. Returns hex-encoded signature.

sign( messageString: string, privateKey: string): Promise<SignMessageData>

Parameters

NameTypeDescription

messageString

string

base64-encoded message to sign

privateKey

string

hex-encoded private key with DER header

Returns

Promise<SignMessageData>

Example

const signResult = await BladeSdk.sign(
  Buffer.from('Hello, World!').toString('base64'),
  newAccountPrivateKey
);
console.log('sign:', signResult);

Last updated