@ledgerhq/coin-algorand
Version:
Ledger Algorand Coin integration
29 lines • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.computeAlgoMaxSpendable = exports.isAmountValid = exports.recipientHasAsset = exports.ALGORAND_MIN_ACCOUNT_BALANCE = void 0;
const bignumber_js_1 = require("bignumber.js");
const network_1 = require("./network");
exports.ALGORAND_MIN_ACCOUNT_BALANCE = 100000;
const recipientHasAsset = async (recipientAddress, assetId) => {
const recipientAccount = await (0, network_1.getAccount)(recipientAddress);
return recipientAccount.assets.map(a => a.assetId).includes(assetId);
};
exports.recipientHasAsset = recipientHasAsset;
const isAmountValid = async (recipientAddress, amount) => {
const recipientAccount = await (0, network_1.getAccount)(recipientAddress);
return recipientAccount.balance.isZero() ? amount.gte(exports.ALGORAND_MIN_ACCOUNT_BALANCE) : true;
};
exports.isAmountValid = isAmountValid;
const computeAlgoMaxSpendable = ({ accountBalance, nbAccountAssets, mode, }) => {
const minBalance = computeMinimumAlgoBalance(mode, nbAccountAssets);
const maxSpendable = accountBalance.minus(minBalance);
return maxSpendable.gte(0) ? maxSpendable : new bignumber_js_1.BigNumber(0);
};
exports.computeAlgoMaxSpendable = computeAlgoMaxSpendable;
const computeMinimumAlgoBalance = (mode, nbAccountAssets) => {
const base = 100000; // 0.1 algo = 100000 malgo
const currentAssets = nbAccountAssets;
const newAsset = mode === "optIn" ? 1 : 0;
return new bignumber_js_1.BigNumber(base * (1 + currentAssets + newAsset));
};
//# sourceMappingURL=bridgeLogic.js.map