UNPKG

@biconomy/abstractjs

Version:

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

134 lines 5.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildWithdrawal = void 0; const viem_1 = require("viem"); const constants_1 = require("../../../constants/index.js"); const TokenWithPermitAbi_1 = require("../../../constants/abi/TokenWithPermitAbi.js"); const composabilityCalls_1 = require("../../../modules/utils/composabilityCalls.js"); const runtimeAbiEncoding_1 = require("../../../modules/utils/runtimeAbiEncoding.js"); const utils_1 = require("../../utils/index.js"); const buildComposable_1 = require("./buildComposable.js"); const buildWithdrawal = async (baseParams, parameters, composabilityParams) => { const { currentInstructions = [], accountAddress, meeVersions } = baseParams; const { chainId, tokenAddress, amount, gasLimit, recipient = accountAddress, metadata: metadataOverride, lowerBoundTimestamp, upperBoundTimestamp, executionSimulationRetryDelay, simulationOverrides } = parameters; const [meeVersionInfo] = meeVersions.filter((meeVersion) => meeVersion.chainId === chainId); if (!meeVersionInfo) { throw new Error("MEE version is required to build a native token transfer"); } const meeVersion = meeVersionInfo.version; const { forceComposableEncoding = false } = composabilityParams ?? { forceComposableEncoding: false }; const metadata = metadataOverride || [ { type: "WITHDRAW", tokenAddress: (0, composabilityCalls_1.isRuntimeComposableValue)(tokenAddress) ? "RUNTIME_VALUE" : tokenAddress, fromAddress: accountAddress, toAddress: recipient, amount: (0, composabilityCalls_1.isRuntimeComposableValue)(amount) ? "RUNTIME_VALUE" : amount, chainId } ]; let withdrawalCall; if ((0, utils_1.isNativeToken)(tokenAddress)) { if ((0, composabilityCalls_1.isRuntimeComposableValue)(amount) || forceComposableEncoding) { if (!composabilityParams?.composabilityVersion) { throw new Error("Composability version is required to build a call with the runtime injected param"); } const { composabilityVersion } = composabilityParams; if (composabilityVersion === constants_1.ComposabilityVersion.V1_0_0) { throw new Error("Runtime values for Native tokens are not supported for Composability v1.0.0"); } return (0, buildComposable_1.default)(baseParams, { to: meeVersion.ethForwarderAddress, abi: constants_1.ForwarderAbi, functionName: "forward", value: amount, gasLimit, args: [recipient], chainId, metadata: metadataOverride || metadata, lowerBoundTimestamp, upperBoundTimestamp, executionSimulationRetryDelay, simulationOverrides }, composabilityParams); } withdrawalCall = [ { to: recipient, value: amount, ...(gasLimit ? { gasLimit } : {}) } ]; } else { const abi = TokenWithPermitAbi_1.TokenWithPermitAbi; const functionSig = "transfer"; const args = [ recipient, amount ]; const functionContext = (0, runtimeAbiEncoding_1.getFunctionContextFromAbi)(functionSig, abi); const isComposableCall = forceComposableEncoding ? true : (0, composabilityCalls_1.isComposableCallRequired)(functionContext, args); if (isComposableCall) { if (!composabilityParams) { throw new Error("Composability params are required to build a call with the runtime injected param"); } const composableCallParams = { to: tokenAddress, functionName: functionSig, args: args, abi, chainId, ...(gasLimit ? { gasLimit } : {}) }; withdrawalCall = await (0, buildComposable_1.buildComposableCall)(composableCallParams, composabilityParams); return [ ...currentInstructions, { calls: withdrawalCall, chainId, isComposable: true, metadata, lowerBoundTimestamp, upperBoundTimestamp, executionSimulationRetryDelay, simulationOverrides } ]; } withdrawalCall = [ { to: tokenAddress, data: (0, viem_1.encodeFunctionData)({ abi, functionName: functionSig, args: args }), ...(gasLimit ? { gasLimit } : {}) } ]; } return [ ...currentInstructions, { calls: withdrawalCall, chainId, metadata, lowerBoundTimestamp, upperBoundTimestamp, executionSimulationRetryDelay, simulationOverrides } ]; }; exports.buildWithdrawal = buildWithdrawal; exports.default = exports.buildWithdrawal; //# sourceMappingURL=buildWithdrawal.js.map