UNPKG

@biconomy/abstractjs

Version:

SDK for Biconomy integration with support for account abstraction, smart accounts, ERC-4337.

83 lines 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildTransferFrom = void 0; const viem_1 = require("viem"); const composabilityCalls_1 = require("../../../modules/utils/composabilityCalls.js"); const runtimeAbiEncoding_1 = require("../../../modules/utils/runtimeAbiEncoding.js"); const buildComposable_1 = require("./buildComposable.js"); const buildTransferFrom = async (baseParams, parameters, composabilityParams) => { const { currentInstructions = [] } = baseParams; const { chainId, tokenAddress, amount, gasLimit, sender, recipient, metadata, lowerBoundTimestamp, upperBoundTimestamp, executionSimulationRetryDelay, simulationOverrides } = parameters; const { forceComposableEncoding } = composabilityParams ?? { forceComposableEncoding: false }; const abi = viem_1.erc20Abi; const functionSig = "transferFrom"; const args = [ sender, recipient, amount ]; const functionContext = (0, runtimeAbiEncoding_1.getFunctionContextFromAbi)(functionSig, abi); const isComposableCall = forceComposableEncoding ? true : (0, composabilityCalls_1.isComposableCallRequired)(functionContext, args); let transferFromCall; if (isComposableCall) { if (!composabilityParams) { throw new Error("Composability params are required to build a composable call"); } const composableCallParams = { to: tokenAddress, functionName: functionSig, args: args, abi, chainId, ...(gasLimit ? { gasLimit } : {}) }; transferFromCall = await (0, buildComposable_1.buildComposableCall)(composableCallParams, composabilityParams); } else { transferFromCall = [ { to: tokenAddress, data: (0, viem_1.encodeFunctionData)({ abi, functionName: functionSig, args: args }), ...(gasLimit ? { gasLimit } : {}) } ]; } const defaultMetadata = [ { type: "TRANSFER", tokenAddress: (0, composabilityCalls_1.isRuntimeComposableValue)(tokenAddress) ? "RUNTIME_VALUE" : tokenAddress, fromAddress: sender, toAddress: recipient, amount: (0, composabilityCalls_1.isRuntimeComposableValue)(amount) ? "RUNTIME_VALUE" : amount, chainId } ]; return [ ...currentInstructions, { calls: transferFromCall, chainId, isComposable: isComposableCall, metadata: metadata || defaultMetadata, lowerBoundTimestamp, upperBoundTimestamp, executionSimulationRetryDelay, simulationOverrides } ]; }; exports.buildTransferFrom = buildTransferFrom; exports.default = exports.buildTransferFrom; //# sourceMappingURL=buildTransferFrom.js.map