UNPKG

@ledgerhq/coin-ton

Version:
41 lines 1.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const index_1 = require("@ledgerhq/coin-framework/account/index"); const bignumber_js_1 = require("bignumber.js"); const api_1 = require("./bridge/bridgeHelpers/api"); const utils_1 = require("./utils"); const estimateMaxSpendable = async ({ account, parentAccount, transaction, }) => { const mainAccount = (0, index_1.getMainAccount)(account, parentAccount); let balance = mainAccount.spendableBalance; if (balance.eq(0)) return balance; const accountInfo = await (0, api_1.fetchAccountInfo)(mainAccount.freshAddress); const isTokenType = (0, index_1.isTokenAccount)(account); if (transaction && !transaction.subAccountId) { transaction.subAccountId = isTokenType ? account.id : null; } let tokenAccountTxn = false; let subAccount; if (isTokenType) { tokenAccountTxn = true; subAccount = account; } if (transaction?.subAccountId && !subAccount) { tokenAccountTxn = true; subAccount = (0, utils_1.findSubAccountById)(mainAccount, transaction.subAccountId || "") ?? null; } if (tokenAccountTxn && subAccount) { return subAccount.spendableBalance; } let estimatedFees = (0, bignumber_js_1.BigNumber)(0); if (transaction) { const tonTx = (0, utils_1.buildTonTransaction)(transaction, accountInfo.seqno, mainAccount); estimatedFees = await (0, utils_1.getTonEstimatedFees)(mainAccount, accountInfo.status === "uninit", tonTx); } if (balance.lte(estimatedFees)) return new bignumber_js_1.BigNumber(0); balance = balance.minus(estimatedFees); return balance; }; exports.default = estimateMaxSpendable; //# sourceMappingURL=estimateMaxSpendable.js.map