import { ChainId, SmartWalletContract, SmartWalletFactoryContract, MultiSendContract, MultiSendCallOnlyContract, SmartAccountContext, SmartAccountState, FallbackGasTankContract } from '@biconomy/core-types'; import { ChainConfig } from '@biconomy/node-client'; import { ethers, Signer } from 'ethers'; import EvmNetworkManager from '@biconomy/ethers-lib'; import { SmartAccountVersion } from '@biconomy/core-types'; declare class ContractUtils { readonly chainConfig: ChainConfig[]; ethAdapter: { [chainId: number]: EvmNetworkManager; }; smartWalletContract: { [chainId: number]: { [version: string]: SmartWalletContract; }; }; multiSendContract: { [chainId: number]: { [version: string]: MultiSendContract; }; }; multiSendCallOnlyContract: { [chainId: number]: { [version: string]: MultiSendCallOnlyContract; }; }; smartWalletFactoryContract: { [chainId: number]: { [version: string]: SmartWalletFactoryContract; }; }; fallbackGasTankContract: { [chainId: number]: { [version: string]: FallbackGasTankContract; }; }; smartAccountState: SmartAccountState; constructor(chainConfig: ChainConfig[]); initializeContracts(signer: Signer, readProvider: ethers.providers.JsonRpcProvider, walletInfo: SmartAccountState, chaininfo: ChainConfig): void; isDeployed(chainId: ChainId, address: string): Promise; /** * Serves smart contract instances associated with Smart Account for requested ChainId * Context is useful when relayer is deploying a wallet * @param chainId requested chain : default is active chain * @returns object containing relevant contract instances */ getSmartAccountContext(chainId: ChainId, version: SmartAccountVersion): SmartAccountContext; setSmartAccountState(smartAccountState: SmartAccountState): void; getSmartAccountState(): SmartAccountState; attachWalletContract(chainId: ChainId, version: SmartAccountVersion, address: string): ethers.Contract; } export default ContractUtils;