@ledgerhq/coin-ton
Version:
41 lines • 1.78 kB
JavaScript
;
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