UNPKG

@biconomy/abstractjs

Version:

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

70 lines 2.7 kB
import { encodeAbiParameters, encodeFunctionData, pad, parseAbi, toHex } from "viem"; import { isVersionOlder } from "../index.js"; import { MEEVersion } from "../../constants/index.js"; import { NexusBootstrapAbi } from "../../constants/abi/NexusBootstrapAbi.js"; import { NexusLegacyBootstrapAbi } from "../../constants/abi/NexusLegacyBootstrapAbi.js"; export const getFactoryData = (parameters) => { const { index, initData } = parameters; const salt = pad(toHex(index), { size: 32 }); return encodeFunctionData({ abi: parseAbi([ "function createAccount(bytes initData, bytes32 salt) external returns (address)" ]), functionName: "createAccount", args: [initData, salt] }); }; // Mee 1.0.0 / Nexus 1.0.2 case: initializing it with single validator (validators[0]) and registry export const getInitDataWithRegistry = (params) => { const bootstrapData = isVersionOlder(params.meeVersion, MEEVersion.V2_0_0) ? encodeFunctionData({ abi: NexusLegacyBootstrapAbi, functionName: "initNexusWithSingleValidator", args: [ params.validators[0].module, params.validators[0].data, params.registryAddress, params.attesters, params.attesterThreshold ] }) : encodeFunctionData({ abi: NexusBootstrapAbi, functionName: "initNexusWithSingleValidator", args: [ params.validators[0].module, params.validators[0].data, { registry: params.registryAddress, attesters: params.attesters, threshold: params.attesterThreshold } ] }); return encodeAbiParameters([ { name: "bootstrap", type: "address" }, { name: "bootstrapData", type: "bytes" } ], [params.bootStrapAddress, bootstrapData]); }; // Nexus 1.2.0 case export const getInitDataNoRegistry = (params) => { return encodeAbiParameters([ { name: "bootstrap", type: "address" }, { name: "bootstrapData", type: "bytes" } ], [ params.bootStrapAddress, encodeFunctionData({ abi: NexusBootstrapAbi, functionName: "initNexusWithDefaultValidatorAndOtherModulesNoRegistry", args: [ params.defaultValidator.data, params.validators, params.executors, params.hook, params.fallbacks, params.prevalidationHooks ] }) ]); }; //# sourceMappingURL=getFactoryData.js.map