import { TAddress } from '../../../models/TAddress'; import { TAccount } from '../../../models/TAccount'; import { ClientEventsStream, TClientEventsStreamData } from '../../../clients/ClientEventsStream'; import { ContractBase } from '../../../contracts/ContractBase'; import { ContractStorageReaderBase } from '../../../contracts/ContractStorageReaderBase'; import { TxWriter } from '../../../txs/TxWriter'; import { ITxLogItem } from '../../../txs/receipt/ITxLogItem'; import { Web3Client } from '../../../clients/Web3Client'; import { IBlockchainExplorer } from '../../../explorer/IBlockchainExplorer'; import { SubjectStream } from '../../../class/SubjectStream'; import type { TAbiItem } from '../../../types/TAbi'; import type { TEth } from '../../../models/TEth'; import type { TOverrideReturns } from '../../../utils/types'; export declare class SimpleAccount extends ContractBase { address: TEth.Address; client: Web3Client; explorer: IBlockchainExplorer; constructor(address?: TEth.Address, client?: Web3Client, explorer?: IBlockchainExplorer); Types: TSimpleAccountTypes; $meta: { source: string; class: string; }; validateUserOp(sender: TSender, userOp: { 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; }, userOpHash: TEth.Hex, missingAccountFunds: bigint): Promise; validateUserOp(sender: TSender, userOp: { 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; }, userOpHash: TEth.Hex, missingAccountFunds: bigint): Promise; getNonce(): Promise; entryPoint(): Promise; entryPoint(): Promise; tokensReceived(sender: TSender, operator: TAddress, from: TAddress, to: TAddress, amount: bigint, userData: TEth.Hex, operatorData: TEth.Hex): Promise; tokensReceived(sender: TSender, input0: TAddress, input1: TAddress, input2: TAddress, input3: bigint, input4: TEth.Hex, input5: TEth.Hex): Promise; onERC721Received(sender: TSender, operator: TAddress, from: TAddress, tokenId: bigint, data: TEth.Hex): Promise; onERC721Received(sender: TSender, input0: TAddress, input1: TAddress, input2: bigint, input3: TEth.Hex): Promise; supportsInterface(interfaceId: TEth.Hex): Promise; supportsInterface(interfaceId: TEth.Hex): Promise; onERC1155Received(sender: TSender, operator: TAddress, from: TAddress, id: bigint, value: bigint, data: TEth.Hex): Promise; onERC1155Received(sender: TSender, input0: TAddress, input1: TAddress, input2: bigint, input3: bigint, input4: TEth.Hex): Promise; onERC1155BatchReceived(sender: TSender, operator: TAddress, from: TAddress, ids: bigint[], values: bigint[], data: TEth.Hex): Promise; onERC1155BatchReceived(sender: TSender, input0: TAddress, input1: TAddress, input2: bigint[], input3: bigint[], input4: TEth.Hex): Promise; proxiableUUID(): Promise; proxiableUUID(): Promise; upgradeTo(sender: TSender, newImplementation: TAddress): Promise; upgradeToAndCall(sender: TSender, newImplementation: TAddress, data: TEth.Hex): Promise; execute(sender: TSender, dest: TAddress, value: bigint, func: TEth.Hex): Promise; executeBatch(sender: TSender, dest: TAddress[], func: TEth.Hex[]): Promise; initialize(sender: TSender, anOwner: TAddress): Promise; getDeposit(): Promise; addDeposit(sender: TSender): Promise; withdrawDepositTo(sender: TSender, withdrawAddress: TAddress, amount: bigint): Promise; owner(): Promise; $call(): ISimpleAccountTxCaller; $signed(): TOverrideReturns>; $data(): ISimpleAccountTxData; $gas(): TOverrideReturns>; onTransaction(method: TMethod, options: Parameters[0]): SubjectStream<{ tx: TEth.Tx; block: TEth.Block; calldata: { method: TMethod; arguments: TSimpleAccountTypes['Methods'][TMethod]['arguments']; }; }>; onLog(event: keyof TEvents, cb?: (event: TClientEventsStreamData) => void): ClientEventsStream; getPastLogs(events: TEventName[], options?: TEventLogOptions>): Promise, TEventName>[]>; getPastLogs(event: TEventName, options?: TEventLogOptions>): Promise, TEventName>[]>; onUpgraded(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; onAdminChanged(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; onBeaconUpgraded(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; onInitialized(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; onSimpleAccountInitialized(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; extractLogsUpgraded(tx: TEth.TxReceipt): ITxLogItem>[]; extractLogsAdminChanged(tx: TEth.TxReceipt): ITxLogItem>[]; extractLogsBeaconUpgraded(tx: TEth.TxReceipt): ITxLogItem>[]; extractLogsInitialized(tx: TEth.TxReceipt): ITxLogItem>[]; extractLogsSimpleAccountInitialized(tx: TEth.TxReceipt): ITxLogItem>[]; getPastLogsUpgraded(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: { implementation?: TAddress; }; }): Promise>[]>; getPastLogsAdminChanged(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: {}; }): Promise>[]>; getPastLogsBeaconUpgraded(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: { beacon?: TAddress; }; }): Promise>[]>; getPastLogsInitialized(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: {}; }): Promise>[]>; getPastLogsSimpleAccountInitialized(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: { entryPoint?: TAddress; owner?: TAddress; }; }): Promise>[]>; abi: TAbiItem[]; storage: SimpleAccountStorageReader; } type TSender = TAccount & { value?: string | number | bigint; }; type TEventLogOptions = { fromBlock?: number | Date; toBlock?: number | Date; params?: TParams; }; export type TSimpleAccountTypes = { Events: { Upgraded: { outputParams: { implementation: TAddress; }; outputArgs: [implementation: TAddress]; }; AdminChanged: { outputParams: { previousAdmin: TAddress; newAdmin: TAddress; }; outputArgs: [previousAdmin: TAddress, newAdmin: TAddress]; }; BeaconUpgraded: { outputParams: { beacon: TAddress; }; outputArgs: [beacon: TAddress]; }; Initialized: { outputParams: { version: number; }; outputArgs: [version: number]; }; SimpleAccountInitialized: { outputParams: { entryPoint: TAddress; owner: TAddress; }; outputArgs: [entryPoint: TAddress, owner: TAddress]; }; }; Methods: { validateUserOp: { method: "validateUserOp"; arguments: [userOp: { 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; }, userOpHash: TEth.Hex, missingAccountFunds: bigint] | [userOp: { 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; }, userOpHash: TEth.Hex, missingAccountFunds: bigint]; }; getNonce: { method: "getNonce"; arguments: []; }; entryPoint: { method: "entryPoint"; arguments: [] | []; }; tokensReceived: { method: "tokensReceived"; arguments: [operator: TAddress, from: TAddress, to: TAddress, amount: bigint, userData: TEth.Hex, operatorData: TEth.Hex] | [input0: TAddress, input1: TAddress, input2: TAddress, input3: bigint, input4: TEth.Hex, input5: TEth.Hex]; }; onERC721Received: { method: "onERC721Received"; arguments: [operator: TAddress, from: TAddress, tokenId: bigint, data: TEth.Hex] | [input0: TAddress, input1: TAddress, input2: bigint, input3: TEth.Hex]; }; supportsInterface: { method: "supportsInterface"; arguments: [interfaceId: TEth.Hex] | [interfaceId: TEth.Hex]; }; onERC1155Received: { method: "onERC1155Received"; arguments: [operator: TAddress, from: TAddress, id: bigint, value: bigint, data: TEth.Hex] | [input0: TAddress, input1: TAddress, input2: bigint, input3: bigint, input4: TEth.Hex]; }; onERC1155BatchReceived: { method: "onERC1155BatchReceived"; arguments: [operator: TAddress, from: TAddress, ids: bigint[], values: bigint[], data: TEth.Hex] | [input0: TAddress, input1: TAddress, input2: bigint[], input3: bigint[], input4: TEth.Hex]; }; proxiableUUID: { method: "proxiableUUID"; arguments: [] | []; }; upgradeTo: { method: "upgradeTo"; arguments: [newImplementation: TAddress]; }; upgradeToAndCall: { method: "upgradeToAndCall"; arguments: [newImplementation: TAddress, data: TEth.Hex]; }; execute: { method: "execute"; arguments: [dest: TAddress, value: bigint, func: TEth.Hex]; }; executeBatch: { method: "executeBatch"; arguments: [dest: TAddress[], func: TEth.Hex[]]; }; initialize: { method: "initialize"; arguments: [anOwner: TAddress]; }; getDeposit: { method: "getDeposit"; arguments: []; }; addDeposit: { method: "addDeposit"; arguments: []; }; withdrawDepositTo: { method: "withdrawDepositTo"; arguments: [withdrawAddress: TAddress, amount: bigint]; }; owner: { method: "owner"; arguments: []; }; }; }; declare class SimpleAccountStorageReader extends ContractStorageReaderBase { address: TAddress; client: Web3Client; explorer: IBlockchainExplorer; constructor(address: TAddress, client: Web3Client, explorer: IBlockchainExplorer); _initialized(): Promise; _initializing(): Promise; owner(): Promise; $slots: { slot: number; position: number; name: string; size: number; type: string; }[]; } interface ISimpleAccountTxCaller { validateUserOp(sender: TSender, userOp: { 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; }, userOpHash: TEth.Hex, missingAccountFunds: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; validateUserOp(sender: TSender, userOp: { 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; }, userOpHash: TEth.Hex, missingAccountFunds: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; tokensReceived(sender: TSender, operator: TAddress, from: TAddress, to: TAddress, amount: bigint, userData: TEth.Hex, operatorData: TEth.Hex): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; onERC721Received(sender: TSender, operator: TAddress, from: TAddress, tokenId: bigint, data: TEth.Hex): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; onERC1155Received(sender: TSender, operator: TAddress, from: TAddress, id: bigint, value: bigint, data: TEth.Hex): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; onERC1155BatchReceived(sender: TSender, operator: TAddress, from: TAddress, ids: bigint[], values: bigint[], data: TEth.Hex): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; upgradeTo(sender: TSender, newImplementation: TAddress): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; upgradeToAndCall(sender: TSender, newImplementation: TAddress, data: TEth.Hex): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; execute(sender: TSender, dest: TAddress, value: bigint, func: TEth.Hex): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; executeBatch(sender: TSender, dest: TAddress[], func: TEth.Hex[]): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; initialize(sender: TSender, anOwner: TAddress): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; addDeposit(sender: TSender): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; withdrawDepositTo(sender: TSender, withdrawAddress: TAddress, amount: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; } interface ISimpleAccountTxData { validateUserOp(sender: TSender, userOp: { 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; }, userOpHash: TEth.Hex, missingAccountFunds: bigint): Promise; validateUserOp(sender: TSender, userOp: { 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; }, userOpHash: TEth.Hex, missingAccountFunds: bigint): Promise; tokensReceived(sender: TSender, operator: TAddress, from: TAddress, to: TAddress, amount: bigint, userData: TEth.Hex, operatorData: TEth.Hex): Promise; onERC721Received(sender: TSender, operator: TAddress, from: TAddress, tokenId: bigint, data: TEth.Hex): Promise; onERC1155Received(sender: TSender, operator: TAddress, from: TAddress, id: bigint, value: bigint, data: TEth.Hex): Promise; onERC1155BatchReceived(sender: TSender, operator: TAddress, from: TAddress, ids: bigint[], values: bigint[], data: TEth.Hex): Promise; upgradeTo(sender: TSender, newImplementation: TAddress): Promise; upgradeToAndCall(sender: TSender, newImplementation: TAddress, data: TEth.Hex): Promise; execute(sender: TSender, dest: TAddress, value: bigint, func: TEth.Hex): Promise; executeBatch(sender: TSender, dest: TAddress[], func: TEth.Hex[]): Promise; initialize(sender: TSender, anOwner: TAddress): Promise; addDeposit(sender: TSender): Promise; withdrawDepositTo(sender: TSender, withdrawAddress: TAddress, amount: bigint): Promise; } type TEvents = TSimpleAccountTypes['Events']; type TEventParams = Partial; type TEventArguments = Partial; export {};