@biconomy/abstractjs
Version:
SDK for Biconomy integration with support for account abstraction, smart accounts, ERC-4337.
70 lines • 2.7 kB
JavaScript
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