UNPKG

@biconomy/abstractjs

Version:

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

123 lines 5.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupMultiVersionAccounts = setupMultiVersionAccounts; exports.setupSingleVersion = setupSingleVersion; exports.setupAccountsWithSigner = setupAccountsWithSigner; const viem_1 = require("viem"); const chains_1 = require("viem/chains"); const toMultiChainNexusAccount_1 = require("../../account/toMultiChainNexusAccount.js"); const toP256Signer_1 = require("../../account/utils/toP256Signer.js"); const createMeeClient_1 = require("../../clients/createMeeClient.js"); const constants_1 = require("../../constants/index.js"); const modules_1 = require("../../modules/index.js"); const TESTNET_RPC_URLS = { [chains_1.optimismSepolia.id]: `https://opt-sepolia.g.alchemy.com/v2/${process.env.ALCHEMY_API_KEY}`, [chains_1.baseSepolia.id]: `https://base-sepolia.g.alchemy.com/v2/${process.env.ALCHEMY_API_KEY}` }; const MIN_BALANCE = (0, viem_1.parseEther)("0.0005"); const FUNDING_AMOUNT = (0, viem_1.parseEther)("0.001"); async function fundAccountsIfNeeded(mcNexus, eoaAccount) { for (const deployment of mcNexus.deployments) { const chain = deployment.client.chain; if (!chain) continue; const publicClient = deployment.client; const balance = await publicClient.getBalance({ address: deployment.address }); if (balance < MIN_BALANCE) { console.log(`Funding ${deployment.address} on ${chain.name} (balance: ${balance})`); const walletClient = (0, viem_1.createWalletClient)({ account: eoaAccount, chain, transport: (0, viem_1.http)(TESTNET_RPC_URLS[chain.id]) }); const hash = await walletClient.sendTransaction({ to: deployment.address, value: FUNDING_AMOUNT }); await publicClient.waitForTransactionReceipt({ hash }); console.log(`Funded ${deployment.address} on ${chain.name} (tx: ${hash})`); } } } async function setupMultiVersionAccounts(options) { const { eoaAccount, versions = [constants_1.MEEVersion.V2_0_0, constants_1.MEEVersion.V2_2_1, constants_1.MEEVersion.V3_0_0], chains = [chains_1.baseSepolia, chains_1.optimismSepolia], index = 333n, apiKey } = options; const accountConfigs = []; for (const version of versions) { const mcNexus = await (0, toMultiChainNexusAccount_1.toMultichainNexusAccount)({ signer: eoaAccount, index, chainConfigurations: chains.map((chain) => ({ chain, transport: (0, viem_1.http)(TESTNET_RPC_URLS[chain.id]), version: (0, modules_1.getMEEVersion)(version) })) }); await fundAccountsIfNeeded(mcNexus, eoaAccount); const meeClient = await (0, createMeeClient_1.createMeeClient)({ account: mcNexus, ...(apiKey && { apiKey }) }); const versionName = version === constants_1.MEEVersion.V2_0_0 ? "V2.0.0 (MeeK1, no 712 for simple mode)" : version === constants_1.MEEVersion.V2_2_1 ? "V2.2.1 (MeeK1, TypedData for simple mode)" : version === constants_1.MEEVersion.V3_0_0 ? "V3.0.0 (StxValidator)" : version; accountConfigs.push({ name: versionName, version, mcNexus, meeClient, eoaAccount }); } return accountConfigs; } async function setupSingleVersion(eoaAccount, version, chains = [chains_1.baseSepolia, chains_1.optimismSepolia]) { const configs = await setupMultiVersionAccounts({ eoaAccount, versions: [version], chains }); return configs[0]; } async function setupAccountsWithSigner(options) { const { signer, eoaAccount, versions = [constants_1.MEEVersion.V3_0_0], chains = [chains_1.baseSepolia, chains_1.optimismSepolia], index = 1n, apiKey } = options; const accountConfigs = []; for (const version of versions) { const mcNexus = await (0, toMultiChainNexusAccount_1.toMultichainNexusAccount)({ signer, index, chainConfigurations: chains.map((chain) => ({ chain, transport: (0, viem_1.http)(TESTNET_RPC_URLS[chain.id]), version: (0, modules_1.getMEEVersion)(version) })) }); await fundAccountsIfNeeded(mcNexus, eoaAccount); const meeClient = await (0, createMeeClient_1.createMeeClient)({ account: mcNexus, ...(apiKey && { apiKey }) }); const signerType = (0, toP256Signer_1.isP256Signer)(signer) ? " with P256" : ""; const versionName = version === constants_1.MEEVersion.V2_0_0 ? `V2.0.0 (MeeK1, no 712 for simple mode)${signerType}` : version === constants_1.MEEVersion.V2_2_1 ? `V2.2.1 (MeeK1, TypedData for simple mode)${signerType}` : version === constants_1.MEEVersion.V3_0_0 ? `V3.0.0 (StxValidator)${signerType}` : version; accountConfigs.push({ name: versionName, version, mcNexus, meeClient, eoaAccount }); } return accountConfigs; } //# sourceMappingURL=setupMultiVersion.js.map