@ledgerhq/coin-multiversx
Version:
Ledger MultiversX Coin integration
49 lines • 1.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.doBuildTransactionToSign = exports.buildTransactionToSign = void 0;
const api_1 = require("./api");
const constants_1 = require("./constants");
const logic_1 = require("./logic");
/**
*
* @param {MultiversXAccount} account
* @param {SubAccount | null | undefined} tokenAccount
* @param {Transaction} transaction
*/
const buildTransactionToSign = async (account, transaction) => {
const sender = account.freshAddress;
const nonce = await (0, api_1.getAccountNonce)(sender);
const networkConfig = await (0, api_1.getNetworkConfig)();
const chainID = networkConfig.ChainID.valueOf();
const isTokenAccount = account.subAccounts?.some(ta => ta.id === transaction.subAccountId);
const value = !isTokenAccount && (0, logic_1.isAmountSpentFromBalance)(transaction.mode)
? transaction.amount.toFixed()
: "0";
return (0, exports.doBuildTransactionToSign)({
transaction,
sender: sender,
nonce,
value,
minGasLimit: networkConfig.MinGasLimit,
chainID,
});
};
exports.buildTransactionToSign = buildTransactionToSign;
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: constants_1.GAS_PRICE,
gasLimit: gasLimit,
...(options.transaction.data ? { data: options.transaction.data } : {}),
chainID: options.chainID,
version: constants_1.TRANSACTION_VERSION_DEFAULT,
options: constants_1.TRANSACTION_OPTIONS_TX_HASH_SIGN,
};
return JSON.stringify(transaction);
};
exports.doBuildTransactionToSign = doBuildTransactionToSign;
//# sourceMappingURL=buildTransaction.js.map