import { Web3Client } from '../clients/Web3Client'; import { ContractBase } from '../contracts/ContractBase'; import { TAddress } from '../models/TAddress'; import { UserOperation } from './models/UserOperation'; import { EoAccount } from '../models/TAccount'; import { IBlockchainExplorer } from '../explorer/IBlockchainExplorer'; import { TEth } from '../models/TEth'; export declare class Erc4337Service { client: Web3Client; explorer: IBlockchainExplorer; info: { addresses: { entryPoint: TAddress; accountFactory: TAddress; }; }; private accountFactoryContract; private accountContract; private entryPointContract; constructor(client: Web3Client, explorer: IBlockchainExplorer, info: { addresses: { entryPoint: TAddress; accountFactory: TAddress; }; }); decodeUserOperations(dataHex: TEth.Hex, options?: { decodeContractCall: boolean; }): Promise<{ userOperation: { sender: TAddress; nonce: bigint; initCode: TEth.Hex; callData: TEth.Hex; callGasLimit: bigint; verificationGasLimit: bigint; preVerificationGas: bigint; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; paymasterAndData: TEth.Hex; signature: TEth.Hex; }; contractCallRaw: any; contractCall: any; }[]>; prepareAccountCreation(owner: TAddress, salt?: bigint): Promise<{ initCode: `0x${string}`; initCodeGas: bigint; }>; existsAccount(erc4337Account: TAddress): Promise; getAccountAddress(owner: TAddress, initCode?: string): Promise; prepareAccountCallData(targetAddress: TAddress, targetValue: bigint, targetCallData: string): Promise<{ callData: TEth.DataLike; }>; prepareCallData>(contract: TContract, method: TMethod, sender: { address: TAddress; }, ...args: MethodArguments): Promise<{ callData: TEth.DataLike; callGas: bigint; }>; getNonce(address: TAddress, salt?: bigint): Promise; getUserOpHash(op: UserOperation): Promise; getSignedUserOp(op: Partial, owner: EoAccount): Promise<{ op: UserOperation; opHash: string; }>; getUserOperation(opHash: string, options?: { decodeContractCall: boolean; }): Promise<{ userOperation: { sender: TAddress; nonce: bigint; initCode: TEth.Hex; callData: TEth.Hex; callGasLimit: bigint; verificationGasLimit: bigint; preVerificationGas: bigint; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; paymasterAndData: TEth.Hex; signature: TEth.Hex; }; contractCallRaw: any; contractCall: any; transaction: TEth.Tx; }>; submitUserOpViaEntryPoint(sender: EoAccount, op: UserOperation | UserOperation[]): Promise; } type Methods = { [P in keyof T as T[P] extends (...args: any) => any ? P : never]: T[P]; }; type MethodArguments = T extends (x: any, ...args: infer U) => infer _ ? U : never[]; export {};