UNPKG

@biconomy/sdk

Version:

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

63 lines 2.71 kB
import { pad, toHex } from "viem"; import { MAINNET_ADDRESS_K1_VALIDATOR_FACTORY_ADDRESS, NEXUS_ACCOUNT_FACTORY, RHINESTONE_ATTESTER_ADDRESS } from "../../constants/index.js"; import { AccountFactoryAbi } from "../../constants/abi/AccountFactory.js"; import { K1ValidatorFactoryAbi } from "../../constants/abi/K1ValidatorFactory.js"; /** * Gets the counterfactual address for a K1 Nexus account * * @param params - {@link K1CounterFactualAddressParams} 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) * @param params.attesters - Optional array of attester addresses * @param params.threshold - Optional attestation threshold * @param params.factoryAddress - Optional factory contract address * * @returns Promise resolving to the {@link Address} of the counterfactual account * * @example * const accountAddress = await getK1NexusAddress({ * publicClient: viemPublicClient, * signerAddress: "0x123...", * index: BigInt(0), * attesters: ["0xabc..."], * threshold: 1 * }); */ export const getK1NexusAddress = async (params) => { const { publicClient, signerAddress, index = 0n, attesters = [RHINESTONE_ATTESTER_ADDRESS], threshold = 1, factoryAddress = MAINNET_ADDRESS_K1_VALIDATOR_FACTORY_ADDRESS } = params; return await publicClient.readContract({ address: factoryAddress, abi: K1ValidatorFactoryAbi, functionName: "computeAccountAddress", args: [signerAddress, index, attesters, threshold] }); }; /** * Gets the counterfactual address for a MEE Nexus account * * @param params - {@link MeeCounterFactualAddressParams} 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 getMeeNexusAddress({ * publicClient: viemPublicClient, * signerAddress: "0x123...", * index: BigInt(0) * }); */ export const getMeeNexusAddress = async (params) => { const salt = pad(toHex(params.index ?? 0n), { size: 32 }); const { publicClient, signerAddress } = params; return await publicClient.readContract({ address: NEXUS_ACCOUNT_FACTORY, abi: AccountFactoryAbi, functionName: "computeAccountAddress", args: [signerAddress, salt] }); }; //# sourceMappingURL=getNexusAddress.js.map