UNPKG

@biconomy/abstractjs

Version:

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

42 lines 1.8 kB
import { pad, parseAbi, toHex } from "viem"; import { NEXUS_ACCOUNT_FACTORY_ADDRESS } from "../../constants/index.js"; import { AccountFactoryAbi } from "../../constants/abi/AccountFactory.js"; /** * Gets the counterfactual address for a MEE Nexus account * * @param params - {@link GetUniversalAddressParams} Configuration for address computation * @param params.publicClient - The public client to use for the read contract * @param params.signerAddress - The address of the EOA signer * @param params.index - Optional account index (defaults to 0) * * @returns Promise resolving to the {@link Address} of the counterfactual account * * @example * const accountAddress = await getNexusAddress({ * publicClient: viemPublicClient, * initData: "0x123...", * index: BigInt(0) * }); */ export const getNexusAddress = async (params) => { const { publicClient, initData, factoryAddress = NEXUS_ACCOUNT_FACTORY_ADDRESS, index = 0n } = params; const salt = pad(toHex(index), { size: 32 }); return await publicClient.readContract({ address: factoryAddress, abi: AccountFactoryAbi, functionName: "computeAccountAddress", args: [initData, salt] }); }; export const getK1NexusAddress = async (params) => { const { publicClient, k1FactoryAddress, ownerAddress, attesters, attesterThreshold, index = 0n } = params; return await publicClient.readContract({ address: k1FactoryAddress, abi: parseAbi([ "function computeAccountAddress(address owner, uint256 index, address[] attesters, uint8 threshold) public view returns (address)" ]), functionName: "computeAccountAddress", args: [ownerAddress, index, attesters, attesterThreshold] }); }; //# sourceMappingURL=getNexusAddress.js.map