UNPKG

@fairmint/canton-node-sdk

Version:
38 lines 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.selectLockedAmuletForAmount = selectLockedAmuletForAmount; function isExpired(lockExpiresAt, nowMs) { if (!lockExpiresAt) { return false; } const parsed = Date.parse(lockExpiresAt); if (Number.isNaN(parsed)) { return false; } return parsed <= nowMs; } /** * Select a locked amulet that can fund the required amount. By default the smallest qualifying amulet is returned to * avoid overspending. */ function selectLockedAmuletForAmount(amulets, amountNeeded, options = {}) { if (!Number.isFinite(amountNeeded) || amountNeeded <= 0) { throw new Error('selectLockedAmuletForAmount requires a positive amountNeeded'); } const { requireExclusiveHolder = true, rejectExpiredLocks = true, nowMs = Date.now() } = options; const candidates = amulets .filter((amulet) => amulet.effectiveAmount >= amountNeeded) .filter((amulet) => { if (requireExclusiveHolder && amulet.holders.length > 1) { return false; } if (rejectExpiredLocks && isExpired(amulet.lockExpiresAt, nowMs)) { return false; } return true; }) .sort((a, b) => a.effectiveAmount - b.effectiveAmount); const [selected] = candidates; return selected ?? null; } //# sourceMappingURL=select-funding-amulets.js.map