UNPKG

@ledgerhq/coin-multiversx

Version:
44 lines 1.73 kB
import { getAccountNonce, getNetworkConfig } from "./api"; import { GAS_PRICE, TRANSACTION_OPTIONS_TX_HASH_SIGN, TRANSACTION_VERSION_DEFAULT, } from "./constants"; import { isAmountSpentFromBalance } from "./logic"; /** * * @param {MultiversXAccount} account * @param {SubAccount | null | undefined} tokenAccount * @param {Transaction} transaction */ export const buildTransactionToSign = async (account, transaction) => { const sender = account.freshAddress; const nonce = await getAccountNonce(sender); const networkConfig = await getNetworkConfig(); const chainID = networkConfig.ChainID.valueOf(); const isTokenAccount = account.subAccounts?.some(ta => ta.id === transaction.subAccountId); const value = !isTokenAccount && isAmountSpentFromBalance(transaction.mode) ? transaction.amount.toFixed() : "0"; return doBuildTransactionToSign({ transaction, sender: sender, nonce, value, minGasLimit: networkConfig.MinGasLimit, chainID, }); }; export const doBuildTransactionToSign = async (options) => { const gasLimit = options.transaction.gasLimit || options.minGasLimit.valueOf(); const transaction = { nonce: options.nonce.valueOf(), value: options.value, receiver: options.transaction.recipient, sender: options.sender, gasPrice: GAS_PRICE, gasLimit: gasLimit, ...(options.transaction.data ? { data: options.transaction.data } : {}), chainID: options.chainID, version: TRANSACTION_VERSION_DEFAULT, options: TRANSACTION_OPTIONS_TX_HASH_SIGN, }; return JSON.stringify(transaction); }; //# sourceMappingURL=buildTransaction.js.map