UNPKG

@ledgerhq/coin-aptos

Version:
58 lines 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.processRecipients = void 0; const constants_1 = require("../constants"); const getCoinAndAmounts_1 = require("./getCoinAndAmounts"); const normalizeAddress_1 = require("./normalizeAddress"); const transferLikeFunctions = (payload) => constants_1.COIN_TRANSFER_TYPES.includes(payload.function) || constants_1.DELEGATION_POOL_TYPES.includes(payload.function); const addLikeFunctionsToRecipients = (op, payload) => { if (payload.functionArguments && payload.functionArguments.length > 0 && typeof payload.functionArguments[0] === "string") { op.recipients.push((0, normalizeAddress_1.normalizeAddress)(payload.functionArguments[0])); } }; const addFungibleToRecipients = (op, payload) => { if (payload.functionArguments && payload.functionArguments.length > 1 && typeof payload.functionArguments[0] === "object" && typeof payload.functionArguments[1] === "string") { op.recipients.push((0, normalizeAddress_1.normalizeAddress)(payload.functionArguments[1].toString())); } }; const addBatchedFunctions = (op, payload, address) => { if (!(payload.functionArguments && payload.functionArguments.length > 0 && Array.isArray(payload.functionArguments[0]))) { return; } for (const recipient of payload.functionArguments[0]) { if (recipient && (0, getCoinAndAmounts_1.compareAddress)(recipient.toString(), address)) { op.recipients.push((0, normalizeAddress_1.normalizeAddress)(recipient.toString())); } } }; function processRecipients(payload, address, op, function_address) { // get recipients by 3 groups if (transferLikeFunctions(payload)) { // 1. Transfer like functions (includes some delegation pool functions) addLikeFunctionsToRecipients(op, payload); } else if (constants_1.FA_TRANSFER_TYPES.includes(payload.function)) { // 1. Transfer like functions (includes some delegation pool functions) addFungibleToRecipients(op, payload); } else if (constants_1.BATCH_TRANSFER_TYPES.includes(payload.function)) { // 2. Batch function, to validate we are in the recipients list if (!(0, getCoinAndAmounts_1.compareAddress)(op.senders[0], address)) { addBatchedFunctions(op, payload, address); } } else { // 3. other smart contracts, in this case smart contract will be treated as a recipient op.recipients.push(function_address); } } exports.processRecipients = processRecipients; //# sourceMappingURL=processRecipients.js.map