@ledgerhq/coin-multiversx
Version:
Ledger MultiversX Coin integration
44 lines • 1.73 kB
JavaScript
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