UNPKG

@ledgerhq/coin-aptos

Version:
81 lines 3.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatUnlockTime = exports.getDelegationOpMaxAmount = exports.getStakingPosition = exports.canRestake = exports.canWithdraw = exports.canUnstake = exports.canStake = exports.mapStakingPositions = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const formatCurrencyUnit_1 = require("@ledgerhq/coin-framework/currencies/formatCurrencyUnit"); const constants_1 = require("../constants"); const logic_1 = require("../bridge/logic"); const mapStakingPositions = (stakingPositions, validators, unit) => { return stakingPositions.map(sp => { const rank = validators.findIndex(v => v.address === sp.validatorId); const validator = validators[rank] ?? sp; const formatConfig = { disableRounding: false, alwaysShowSign: false, showCode: true, }; return { ...sp, formattedAmount: (0, formatCurrencyUnit_1.formatCurrencyUnit)(unit, sp.active, formatConfig), formattedPending: (0, formatCurrencyUnit_1.formatCurrencyUnit)(unit, sp.pendingInactive, formatConfig), formattedAvailable: (0, formatCurrencyUnit_1.formatCurrencyUnit)(unit, sp.inactive, formatConfig), rank, validator, }; }); }; exports.mapStakingPositions = mapStakingPositions; const canStake = (account) => { return (0, logic_1.getMaxSendBalance)(account) > constants_1.MIN_COINS_ON_SHARES_POOL_IN_OCTAS; }; exports.canStake = canStake; const canUnstake = (stakingPosition) => { return stakingPosition.active.gt(0); }; exports.canUnstake = canUnstake; const canWithdraw = (stakingPosition) => { return stakingPosition.inactive.gt(0); }; exports.canWithdraw = canWithdraw; const canRestake = (stakingPosition) => { return stakingPosition.pendingInactive.gt(0); }; exports.canRestake = canRestake; const getStakingPosition = (account, validatorAddress) => (account.aptosResources?.stakingPositions ?? []).find(stakingPosition => stakingPosition.validatorId === validatorAddress); exports.getStakingPosition = getStakingPosition; const getDelegationOpMaxAmount = (account, validatorAddress, mode) => { let maxAmount; const stakingPosition = (0, exports.getStakingPosition)(account, validatorAddress); switch (mode) { case "unstake": maxAmount = stakingPosition?.active; break; case "withdraw": maxAmount = stakingPosition?.inactive; break; case "restake": maxAmount = stakingPosition?.pendingInactive; } if (maxAmount === undefined || maxAmount.lt(0)) { return new bignumber_js_1.default(0); } return maxAmount; }; exports.getDelegationOpMaxAmount = getDelegationOpMaxAmount; const formatUnlockTime = (epochSecs) => { const unlockTime = parseInt(epochSecs, 10) * 1000; // Convert to ms const now = Date.now(); const diffMs = unlockTime - now; if (diffMs <= 0) return "Unlocked"; const totalMinutes = Math.floor(diffMs / (1000 * 60)); const days = Math.floor(totalMinutes / (60 * 24)); const hours = Math.floor((totalMinutes % (60 * 24)) / 60); const minutes = totalMinutes % 60; return `${days}d ${hours}h ${minutes}m`; }; exports.formatUnlockTime = formatUnlockTime; //# sourceMappingURL=staking.js.map