@ledgerhq/coin-algorand
Version:
Ledger Algorand Coin integration
33 lines • 1.79 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.computeAlgoMaxSpendable = exports.isAmountValid = exports.recipientHasAsset = exports.ALGORAND_MIN_ACCOUNT_BALANCE = exports.ALGORAND_MAX_MEMO_SIZE = void 0;
const bignumber_js_1 = require("bignumber.js");
const api_1 = __importDefault(require("./api"));
exports.ALGORAND_MAX_MEMO_SIZE = 32;
exports.ALGORAND_MIN_ACCOUNT_BALANCE = 100000;
const recipientHasAsset = async (recipientAddress, assetId) => {
const recipientAccount = await api_1.default.getAccount(recipientAddress);
return recipientAccount.assets.map(a => a.assetId).includes(assetId);
};
exports.recipientHasAsset = recipientHasAsset;
const isAmountValid = async (recipientAddress, amount) => {
const recipientAccount = await api_1.default.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=logic.js.map