0xweb
Version:
Contract package manager and other web3 tools
641 lines (557 loc) • 49.9 kB
text/typescript
/**
* AUTO-Generated Class: 2024-05-17 00:25
* Implementation: https://etherscan.io/address/0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789#code
*/
import di from 'a-di';
import { TAddress } from '@dequanto/models/TAddress';
import { TAccount } from '@dequanto/models/TAccount';
import { TBufferLike } from '@dequanto/models/TBufferLike';
import { ClientEventsStream, TClientEventsStreamData } from '@dequanto/clients/ClientEventsStream';
import { ContractBase } from '@dequanto/contracts/ContractBase';
import { ContractBaseUtils } from '@dequanto/contracts/utils/ContractBaseUtils';
import { ContractStorageReaderBase } from '@dequanto/contracts/ContractStorageReaderBase';
import { TxWriter } from '@dequanto/txs/TxWriter';
import { ITxLogItem } from '@dequanto/txs/receipt/ITxLogItem';
import { Web3Client } from '@dequanto/clients/Web3Client';
import { IBlockchainExplorer } from '@dequanto/explorer/IBlockchainExplorer';
import { SubjectStream } from '@dequanto/class/SubjectStream';
import type { ContractWriter } from '@dequanto/contracts/ContractWriter';
import type { TAbiItem } from '@dequanto/types/TAbi';
import type { TEth } from '@dequanto/models/TEth';
import type { TOverrideReturns } from '@dequanto/utils/types';
import { Etherscan } from '@dequanto/explorer/Etherscan'
import { EthWeb3Client } from '@dequanto/clients/EthWeb3Client'
export namespace EntryPointErrors {
export interface ExecutionResult {
type: 'ExecutionResult'
params: {
preOpGas: bigint
paid: bigint
validAfter: number
validUntil: number
targetSuccess: boolean
targetResult: TEth.Hex
}
}
export interface FailedOp {
type: 'FailedOp'
params: {
opIndex: bigint
reason: string
}
}
export interface SenderAddressResult {
type: 'SenderAddressResult'
params: {
sender: TAddress
}
}
export interface SignatureValidationFailed {
type: 'SignatureValidationFailed'
params: {
aggregator: TAddress
}
}
export interface ValidationResult {
type: 'ValidationResult'
params: {
returnInfo: { preOpGas: bigint, prefund: bigint, sigFailed: boolean, validAfter: number, validUntil: number, paymasterContext: TEth.Hex }
senderInfo: { stake: bigint, unstakeDelaySec: bigint }
factoryInfo: { stake: bigint, unstakeDelaySec: bigint }
paymasterInfo: { stake: bigint, unstakeDelaySec: bigint }
}
}
export interface ValidationResultWithAggregation {
type: 'ValidationResultWithAggregation'
params: {
returnInfo: { preOpGas: bigint, prefund: bigint, sigFailed: boolean, validAfter: number, validUntil: number, paymasterContext: TEth.Hex }
senderInfo: { stake: bigint, unstakeDelaySec: bigint }
factoryInfo: { stake: bigint, unstakeDelaySec: bigint }
paymasterInfo: { stake: bigint, unstakeDelaySec: bigint }
aggregatorInfo: { aggregator: TAddress, stakeInfo: { stake: bigint, unstakeDelaySec: bigint } }
}
}
export type Error = ExecutionResult | FailedOp | SenderAddressResult | SignatureValidationFailed | ValidationResult | ValidationResultWithAggregation
}
export class EntryPoint extends ContractBase {
constructor(
public address: TEth.Address = '0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789',
public client: Web3Client = di.resolve(EthWeb3Client, ),
public explorer: IBlockchainExplorer = di.resolve(Etherscan, ),
) {
super(address, client, explorer)
this.storage = new EntryPointStorageReader(this.address, this.client, this.explorer);
}
Types: TEntryPointTypes;
$meta = {
"class": "./src/prebuilt/erc4337/EntryPoint/EntryPoint.ts"
}
// 0x8f41ec5a
async SIG_VALIDATION_FAILED (): Promise<bigint> {
return this.$read(this.$getAbiItem('function', 'SIG_VALIDATION_FAILED'));
}
// 0x957122ab
async _validateSenderAndPaymaster (initCode: TEth.Hex, _sender: TAddress, paymasterAndData: TEth.Hex): Promise<bigint> {
return this.$read(this.$getAbiItem('function', '_validateSenderAndPaymaster'), initCode, _sender, paymasterAndData);
}
// 0x0396cb60
async addStake (sender: TSender, unstakeDelaySec: number): Promise<TxWriter> {
return this.$write(this.$getAbiItem('function', 'addStake'), sender, unstakeDelaySec);
}
// 0x70a08231
async balanceOf (account: TAddress): Promise<bigint> {
return this.$read(this.$getAbiItem('function', 'balanceOf'), account);
}
// 0xb760faf9
async depositTo (sender: TSender, account: TAddress): Promise<TxWriter> {
return this.$write(this.$getAbiItem('function', 'depositTo'), sender, account);
}
// 0xfc7e286d
async deposits (input0: TAddress): Promise<{ deposit: bigint, staked: boolean, stake: bigint, unstakeDelaySec: number, withdrawTime: number }> {
return this.$read(this.$getAbiItem('function', 'deposits'), input0);
}
// 0x5287ce12
async getDepositInfo (account: TAddress): Promise<{ deposit: bigint, staked: boolean, stake: bigint, unstakeDelaySec: number, withdrawTime: number }> {
return this.$read(this.$getAbiItem('function', 'getDepositInfo'), account);
}
// 0x35567e1a
async getNonce (_sender: TAddress, key: bigint): Promise<bigint> {
return this.$read(this.$getAbiItem('function', 'getNonce'), _sender, key);
}
// 0x9b249f69
async getSenderAddress (sender: TSender, initCode: TEth.Hex): Promise<TxWriter> {
return this.$write(this.$getAbiItem('function', 'getSenderAddress'), sender, initCode);
}
// 0xa6193531
async getUserOpHash (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 }): Promise<TEth.Hex> {
return this.$read(this.$getAbiItem('function', 'getUserOpHash'), userOp);
}
// 0x4b1d7cf5
async handleAggregatedOps (sender: TSender, opsPerAggregator: { userOps: { 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 }[], aggregator: TAddress, signature: TEth.Hex }[], beneficiary: TAddress): Promise<TxWriter> {
return this.$write(this.$getAbiItem('function', 'handleAggregatedOps'), sender, opsPerAggregator, beneficiary);
}
// 0x1fad948c
async handleOps (sender: TSender, ops: { 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 }[], beneficiary: TAddress): Promise<TxWriter> {
return this.$write(this.$getAbiItem('function', 'handleOps'), sender, ops, beneficiary);
}
// 0x0bd28e3b
async incrementNonce (sender: TSender, key: bigint): Promise<TxWriter> {
return this.$write(this.$getAbiItem('function', 'incrementNonce'), sender, key);
}
// 0x1d732756
async innerHandleOp (sender: TSender, callData: TEth.Hex, opInfo: { mUserOp: { sender: TAddress, nonce: bigint, callGasLimit: bigint, verificationGasLimit: bigint, preVerificationGas: bigint, paymaster: TAddress, maxFeePerGas: bigint, maxPriorityFeePerGas: bigint }, userOpHash: TEth.Hex, prefund: bigint, contextOffset: bigint, preOpGas: bigint }, context: TEth.Hex): Promise<TxWriter> {
return this.$write(this.$getAbiItem('function', 'innerHandleOp'), sender, callData, opInfo, context);
}
// 0x1b2e01b8
async nonceSequenceNumber (input0: TAddress, input1: bigint): Promise<bigint> {
return this.$read(this.$getAbiItem('function', 'nonceSequenceNumber'), input0, input1);
}
// 0xd6383f94
async simulateHandleOp (sender: TSender, op: { 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 }, target: TAddress, targetCallData: TEth.Hex): Promise<TxWriter> {
return this.$write(this.$getAbiItem('function', 'simulateHandleOp'), sender, op, target, targetCallData);
}
// 0xee219423
async simulateValidation (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 }): Promise<TxWriter> {
return this.$write(this.$getAbiItem('function', 'simulateValidation'), sender, userOp);
}
// 0xbb9fe6bf
async unlockStake (sender: TSender, ): Promise<TxWriter> {
return this.$write(this.$getAbiItem('function', 'unlockStake'), sender);
}
// 0xc23a5cea
async withdrawStake (sender: TSender, withdrawAddress: TAddress): Promise<TxWriter> {
return this.$write(this.$getAbiItem('function', 'withdrawStake'), sender, withdrawAddress);
}
// 0x205c2878
async withdrawTo (sender: TSender, withdrawAddress: TAddress, withdrawAmount: bigint): Promise<TxWriter> {
return this.$write(this.$getAbiItem('function', 'withdrawTo'), sender, withdrawAddress, withdrawAmount);
}
$call () {
return super.$call() as IEntryPointTxCaller;
}
$signed (): TOverrideReturns<IEntryPointTxCaller, Promise<{ signed: TEth.Hex, error?: Error & { data?: { type: string, params } } }>> {
return super.$signed() as any;
}
$data (): IEntryPointTxData {
return super.$data() as IEntryPointTxData;
}
$gas (): TOverrideReturns<IEntryPointTxCaller, Promise<{ gas?: bigint, price?: bigint, error?: Error & { data?: { type: string, params } } }>> {
return super.$gas() as any;
}
onTransaction <TMethod extends keyof TEntryPointTypes['Methods']> (method: TMethod, options: Parameters<ContractBase['$onTransaction']>[0]): SubjectStream<{
tx: TEth.Tx
block: TEth.Block<TEth.Hex>
calldata: {
method: TMethod
arguments: TEntryPointTypes['Methods'][TMethod]['arguments']
}
}> {
options ??= {};
options.filter ??= {};
options.filter.method = method;
return <any> this.$onTransaction(options);
}
onLog (event: keyof TEvents, cb?: (event: TClientEventsStreamData) => void): ClientEventsStream<TClientEventsStreamData> {
return this.$onLog(event, cb);
}
async getPastLogs <TEventName extends keyof TEvents> (
events: TEventName[]
, options?: TEventLogOptions<TEventParams<TEventName>>
): Promise<ITxLogItem<TEventParams<TEventName>, TEventName>[]>
async getPastLogs <TEventName extends keyof TEvents> (
event: TEventName
, options?: TEventLogOptions<TEventParams<TEventName>>
): Promise<ITxLogItem<TEventParams<TEventName>, TEventName>[]>
async getPastLogs (mix: any, options?): Promise<any> {
return await super.getPastLogs(mix, options) as any;
}
onAccountDeployed (fn?: (event: TClientEventsStreamData<TEventArguments<'AccountDeployed'>>) => void): ClientEventsStream<TClientEventsStreamData<TEventArguments<'AccountDeployed'>>> {
return this.$onLog('AccountDeployed', fn);
}
onBeforeExecution (fn?: (event: TClientEventsStreamData<TEventArguments<'BeforeExecution'>>) => void): ClientEventsStream<TClientEventsStreamData<TEventArguments<'BeforeExecution'>>> {
return this.$onLog('BeforeExecution', fn);
}
onDeposited (fn?: (event: TClientEventsStreamData<TEventArguments<'Deposited'>>) => void): ClientEventsStream<TClientEventsStreamData<TEventArguments<'Deposited'>>> {
return this.$onLog('Deposited', fn);
}
onSignatureAggregatorChanged (fn?: (event: TClientEventsStreamData<TEventArguments<'SignatureAggregatorChanged'>>) => void): ClientEventsStream<TClientEventsStreamData<TEventArguments<'SignatureAggregatorChanged'>>> {
return this.$onLog('SignatureAggregatorChanged', fn);
}
onStakeLocked (fn?: (event: TClientEventsStreamData<TEventArguments<'StakeLocked'>>) => void): ClientEventsStream<TClientEventsStreamData<TEventArguments<'StakeLocked'>>> {
return this.$onLog('StakeLocked', fn);
}
onStakeUnlocked (fn?: (event: TClientEventsStreamData<TEventArguments<'StakeUnlocked'>>) => void): ClientEventsStream<TClientEventsStreamData<TEventArguments<'StakeUnlocked'>>> {
return this.$onLog('StakeUnlocked', fn);
}
onStakeWithdrawn (fn?: (event: TClientEventsStreamData<TEventArguments<'StakeWithdrawn'>>) => void): ClientEventsStream<TClientEventsStreamData<TEventArguments<'StakeWithdrawn'>>> {
return this.$onLog('StakeWithdrawn', fn);
}
onUserOperationEvent (fn?: (event: TClientEventsStreamData<TEventArguments<'UserOperationEvent'>>) => void): ClientEventsStream<TClientEventsStreamData<TEventArguments<'UserOperationEvent'>>> {
return this.$onLog('UserOperationEvent', fn);
}
onUserOperationRevertReason (fn?: (event: TClientEventsStreamData<TEventArguments<'UserOperationRevertReason'>>) => void): ClientEventsStream<TClientEventsStreamData<TEventArguments<'UserOperationRevertReason'>>> {
return this.$onLog('UserOperationRevertReason', fn);
}
onWithdrawn (fn?: (event: TClientEventsStreamData<TEventArguments<'Withdrawn'>>) => void): ClientEventsStream<TClientEventsStreamData<TEventArguments<'Withdrawn'>>> {
return this.$onLog('Withdrawn', fn);
}
extractLogsAccountDeployed (tx: TEth.TxReceipt): ITxLogItem<TEventParams<'AccountDeployed'>>[] {
let abi = this.$getAbiItem('event', 'AccountDeployed');
return this.$extractLogs(tx, abi) as any as ITxLogItem<TEventParams<'AccountDeployed'>>[];
}
extractLogsBeforeExecution (tx: TEth.TxReceipt): ITxLogItem<TEventParams<'BeforeExecution'>>[] {
let abi = this.$getAbiItem('event', 'BeforeExecution');
return this.$extractLogs(tx, abi) as any as ITxLogItem<TEventParams<'BeforeExecution'>>[];
}
extractLogsDeposited (tx: TEth.TxReceipt): ITxLogItem<TEventParams<'Deposited'>>[] {
let abi = this.$getAbiItem('event', 'Deposited');
return this.$extractLogs(tx, abi) as any as ITxLogItem<TEventParams<'Deposited'>>[];
}
extractLogsSignatureAggregatorChanged (tx: TEth.TxReceipt): ITxLogItem<TEventParams<'SignatureAggregatorChanged'>>[] {
let abi = this.$getAbiItem('event', 'SignatureAggregatorChanged');
return this.$extractLogs(tx, abi) as any as ITxLogItem<TEventParams<'SignatureAggregatorChanged'>>[];
}
extractLogsStakeLocked (tx: TEth.TxReceipt): ITxLogItem<TEventParams<'StakeLocked'>>[] {
let abi = this.$getAbiItem('event', 'StakeLocked');
return this.$extractLogs(tx, abi) as any as ITxLogItem<TEventParams<'StakeLocked'>>[];
}
extractLogsStakeUnlocked (tx: TEth.TxReceipt): ITxLogItem<TEventParams<'StakeUnlocked'>>[] {
let abi = this.$getAbiItem('event', 'StakeUnlocked');
return this.$extractLogs(tx, abi) as any as ITxLogItem<TEventParams<'StakeUnlocked'>>[];
}
extractLogsStakeWithdrawn (tx: TEth.TxReceipt): ITxLogItem<TEventParams<'StakeWithdrawn'>>[] {
let abi = this.$getAbiItem('event', 'StakeWithdrawn');
return this.$extractLogs(tx, abi) as any as ITxLogItem<TEventParams<'StakeWithdrawn'>>[];
}
extractLogsUserOperationEvent (tx: TEth.TxReceipt): ITxLogItem<TEventParams<'UserOperationEvent'>>[] {
let abi = this.$getAbiItem('event', 'UserOperationEvent');
return this.$extractLogs(tx, abi) as any as ITxLogItem<TEventParams<'UserOperationEvent'>>[];
}
extractLogsUserOperationRevertReason (tx: TEth.TxReceipt): ITxLogItem<TEventParams<'UserOperationRevertReason'>>[] {
let abi = this.$getAbiItem('event', 'UserOperationRevertReason');
return this.$extractLogs(tx, abi) as any as ITxLogItem<TEventParams<'UserOperationRevertReason'>>[];
}
extractLogsWithdrawn (tx: TEth.TxReceipt): ITxLogItem<TEventParams<'Withdrawn'>>[] {
let abi = this.$getAbiItem('event', 'Withdrawn');
return this.$extractLogs(tx, abi) as any as ITxLogItem<TEventParams<'Withdrawn'>>[];
}
async getPastLogsAccountDeployed (options?: {
fromBlock?: number | Date
toBlock?: number | Date
params?: { userOpHash?: TEth.Hex,sender?: TAddress }
}): Promise<ITxLogItem<TEventParams<'AccountDeployed'>>[]> {
return await this.$getPastLogsParsed('AccountDeployed', options) as any;
}
async getPastLogsBeforeExecution (options?: {
fromBlock?: number | Date
toBlock?: number | Date
params?: { }
}): Promise<ITxLogItem<TEventParams<'BeforeExecution'>>[]> {
return await this.$getPastLogsParsed('BeforeExecution', options) as any;
}
async getPastLogsDeposited (options?: {
fromBlock?: number | Date
toBlock?: number | Date
params?: { account?: TAddress }
}): Promise<ITxLogItem<TEventParams<'Deposited'>>[]> {
return await this.$getPastLogsParsed('Deposited', options) as any;
}
async getPastLogsSignatureAggregatorChanged (options?: {
fromBlock?: number | Date
toBlock?: number | Date
params?: { aggregator?: TAddress }
}): Promise<ITxLogItem<TEventParams<'SignatureAggregatorChanged'>>[]> {
return await this.$getPastLogsParsed('SignatureAggregatorChanged', options) as any;
}
async getPastLogsStakeLocked (options?: {
fromBlock?: number | Date
toBlock?: number | Date
params?: { account?: TAddress }
}): Promise<ITxLogItem<TEventParams<'StakeLocked'>>[]> {
return await this.$getPastLogsParsed('StakeLocked', options) as any;
}
async getPastLogsStakeUnlocked (options?: {
fromBlock?: number | Date
toBlock?: number | Date
params?: { account?: TAddress }
}): Promise<ITxLogItem<TEventParams<'StakeUnlocked'>>[]> {
return await this.$getPastLogsParsed('StakeUnlocked', options) as any;
}
async getPastLogsStakeWithdrawn (options?: {
fromBlock?: number | Date
toBlock?: number | Date
params?: { account?: TAddress }
}): Promise<ITxLogItem<TEventParams<'StakeWithdrawn'>>[]> {
return await this.$getPastLogsParsed('StakeWithdrawn', options) as any;
}
async getPastLogsUserOperationEvent (options?: {
fromBlock?: number | Date
toBlock?: number | Date
params?: { userOpHash?: TEth.Hex,sender?: TAddress,paymaster?: TAddress }
}): Promise<ITxLogItem<TEventParams<'UserOperationEvent'>>[]> {
return await this.$getPastLogsParsed('UserOperationEvent', options) as any;
}
async getPastLogsUserOperationRevertReason (options?: {
fromBlock?: number | Date
toBlock?: number | Date
params?: { userOpHash?: TEth.Hex,sender?: TAddress }
}): Promise<ITxLogItem<TEventParams<'UserOperationRevertReason'>>[]> {
return await this.$getPastLogsParsed('UserOperationRevertReason', options) as any;
}
async getPastLogsWithdrawn (options?: {
fromBlock?: number | Date
toBlock?: number | Date
params?: { account?: TAddress }
}): Promise<ITxLogItem<TEventParams<'Withdrawn'>>[]> {
return await this.$getPastLogsParsed('Withdrawn', options) as any;
}
abi: TAbiItem[] = [{"inputs":[{"internalType":"uint256","name":"preOpGas","type":"uint256"},{"internalType":"uint256","name":"paid","type":"uint256"},{"internalType":"uint48","name":"validAfter","type":"uint48"},{"internalType":"uint48","name":"validUntil","type":"uint48"},{"internalType":"bool","name":"targetSuccess","type":"bool"},{"internalType":"bytes","name":"targetResult","type":"bytes"}],"name":"ExecutionResult","type":"error"},{"inputs":[{"internalType":"uint256","name":"opIndex","type":"uint256"},{"internalType":"string","name":"reason","type":"string"}],"name":"FailedOp","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderAddressResult","type":"error"},{"inputs":[{"internalType":"address","name":"aggregator","type":"address"}],"name":"SignatureValidationFailed","type":"error"},{"inputs":[{"components":[{"internalType":"uint256","name":"preOpGas","type":"uint256"},{"internalType":"uint256","name":"prefund","type":"uint256"},{"internalType":"bool","name":"sigFailed","type":"bool"},{"internalType":"uint48","name":"validAfter","type":"uint48"},{"internalType":"uint48","name":"validUntil","type":"uint48"},{"internalType":"bytes","name":"paymasterContext","type":"bytes"}],"internalType":"struct IEntryPoint.ReturnInfo","name":"returnInfo","type":"tuple"},{"components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}],"internalType":"struct IStakeManager.StakeInfo","name":"senderInfo","type":"tuple"},{"components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}],"internalType":"struct IStakeManager.StakeInfo","name":"factoryInfo","type":"tuple"},{"components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}],"internalType":"struct IStakeManager.StakeInfo","name":"paymasterInfo","type":"tuple"}],"name":"ValidationResult","type":"error"},{"inputs":[{"components":[{"internalType":"uint256","name":"preOpGas","type":"uint256"},{"internalType":"uint256","name":"prefund","type":"uint256"},{"internalType":"bool","name":"sigFailed","type":"bool"},{"internalType":"uint48","name":"validAfter","type":"uint48"},{"internalType":"uint48","name":"validUntil","type":"uint48"},{"internalType":"bytes","name":"paymasterContext","type":"bytes"}],"internalType":"struct IEntryPoint.ReturnInfo","name":"returnInfo","type":"tuple"},{"components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}],"internalType":"struct IStakeManager.StakeInfo","name":"senderInfo","type":"tuple"},{"components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}],"internalType":"struct IStakeManager.StakeInfo","name":"factoryInfo","type":"tuple"},{"components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}],"internalType":"struct IStakeManager.StakeInfo","name":"paymasterInfo","type":"tuple"},{"components":[{"internalType":"address","name":"aggregator","type":"address"},{"components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}],"internalType":"struct IStakeManager.StakeInfo","name":"stakeInfo","type":"tuple"}],"internalType":"struct IEntryPoint.AggregatorStakeInfo","name":"aggregatorInfo","type":"tuple"}],"name":"ValidationResultWithAggregation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"factory","type":"address"},{"indexed":false,"internalType":"address","name":"paymaster","type":"address"}],"name":"AccountDeployed","type":"event"},{"anonymous":false,"inputs":[],"name":"BeforeExecution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalDeposit","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"aggregator","type":"address"}],"name":"SignatureAggregatorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalStaked","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}],"name":"StakeLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"withdrawTime","type":"uint256"}],"name":"StakeUnlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"withdrawAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"StakeWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"paymaster","type":"address"},{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"},{"indexed":false,"internalType":"uint256","name":"actualGasCost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"actualGasUsed","type":"uint256"}],"name":"UserOperationEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"revertReason","type":"bytes"}],"name":"UserOperationRevertReason","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"withdrawAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"SIG_VALIDATION_FAILED","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"}],"name":"_validateSenderAndPaymaster","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"unstakeDelaySec","type":"uint32"}],"name":"addStake","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"depositTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"deposits","outputs":[{"internalType":"uint112","name":"deposit","type":"uint112"},{"internalType":"bool","name":"staked","type":"bool"},{"internalType":"uint112","name":"stake","type":"uint112"},{"internalType":"uint32","name":"unstakeDelaySec","type":"uint32"},{"internalType":"uint48","name":"withdrawTime","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getDepositInfo","outputs":[{"components":[{"internalType":"uint112","name":"deposit","type":"uint112"},{"internalType":"bool","name":"staked","type":"bool"},{"internalType":"uint112","name":"stake","type":"uint112"},{"internalType":"uint32","name":"unstakeDelaySec","type":"uint32"},{"internalType":"uint48","name":"withdrawTime","type":"uint48"}],"internalType":"struct IStakeManager.DepositInfo","name":"info","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint192","name":"key","type":"uint192"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"getSenderAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"}],"name":"getUserOpHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation[]","name":"userOps","type":"tuple[]"},{"internalType":"contract IAggregator","name":"aggregator","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct IEntryPoint.UserOpsPerAggregator[]","name":"opsPerAggregator","type":"tuple[]"},{"internalType":"address payable","name":"beneficiary","type":"address"}],"name":"handleAggregatedOps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation[]","name":"ops","type":"tuple[]"},{"internalType":"address payable","name":"beneficiary","type":"address"}],"name":"handleOps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint192","name":"key","type":"uint192"}],"name":"incrementNonce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"},{"components":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"}],"internalType":"struct EntryPoint.MemoryUserOp","name":"mUserOp","type":"tuple"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"uint256","name":"prefund","type":"uint256"},{"internalType":"uint256","name":"contextOffset","type":"uint256"},{"internalType":"uint256","name":"preOpGas","type":"uint256"}],"internalType":"struct EntryPoint.UserOpInfo","name":"opInfo","type":"tuple"},{"internalType":"bytes","name":"context","type":"bytes"}],"name":"innerHandleOp","outputs":[{"internalType":"uint256","name":"actualGasCost","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint192","name":"","type":"uint192"}],"name":"nonceSequenceNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"op","type":"tuple"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"targetCallData","type":"bytes"}],"name":"simulateHandleOp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"}],"name":"simulateValidation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"withdrawAddress","type":"address"}],"name":"withdrawStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"withdrawAddress","type":"address"},{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"withdrawTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
declare storage: EntryPointStorageReader
}
type TSender = TAccount & {
value?: string | number | bigint
}
type TEventLogOptions<TParams> = {
fromBlock?: number | Date
toBlock?: number | Date
params?: TParams
}
export type TEntryPointTypes = {
Events: {
AccountDeployed: {
outputParams: { userOpHash: TEth.Hex, _sender: TAddress, factory: TAddress, paymaster: TAddress },
outputArgs: [ userOpHash: TEth.Hex, _sender: TAddress, factory: TAddress, paymaster: TAddress ],
}
BeforeExecution: {
outputParams: { },
outputArgs: [ ],
}
Deposited: {
outputParams: { account: TAddress, totalDeposit: bigint },
outputArgs: [ account: TAddress, totalDeposit: bigint ],
}
SignatureAggregatorChanged: {
outputParams: { aggregator: TAddress },
outputArgs: [ aggregator: TAddress ],
}
StakeLocked: {
outputParams: { account: TAddress, totalStaked: bigint, unstakeDelaySec: bigint },
outputArgs: [ account: TAddress, totalStaked: bigint, unstakeDelaySec: bigint ],
}
StakeUnlocked: {
outputParams: { account: TAddress, withdrawTime: bigint },
outputArgs: [ account: TAddress, withdrawTime: bigint ],
}
StakeWithdrawn: {
outputParams: { account: TAddress, withdrawAddress: TAddress, amount: bigint },
outputArgs: [ account: TAddress, withdrawAddress: TAddress, amount: bigint ],
}
UserOperationEvent: {
outputParams: { userOpHash: TEth.Hex, _sender: TAddress, paymaster: TAddress, nonce: bigint, success: boolean, actualGasCost: bigint, actualGasUsed: bigint },
outputArgs: [ userOpHash: TEth.Hex, _sender: TAddress, paymaster: TAddress, nonce: bigint, success: boolean, actualGasCost: bigint, actualGasUsed: bigint ],
}
UserOperationRevertReason: {
outputParams: { userOpHash: TEth.Hex, _sender: TAddress, nonce: bigint, revertReason: TEth.Hex },
outputArgs: [ userOpHash: TEth.Hex, _sender: TAddress, nonce: bigint, revertReason: TEth.Hex ],
}
Withdrawn: {
outputParams: { account: TAddress, withdrawAddress: TAddress, amount: bigint },
outputArgs: [ account: TAddress, withdrawAddress: TAddress, amount: bigint ],
}
},
Methods: {
SIG_VALIDATION_FAILED: {
method: "SIG_VALIDATION_FAILED"
arguments: [ ]
}
_validateSenderAndPaymaster: {
method: "_validateSenderAndPaymaster"
arguments: [ initCode: TEth.Hex, _sender: TAddress, paymasterAndData: TEth.Hex ]
}
addStake: {
method: "addStake"
arguments: [ unstakeDelaySec: number ]
}
balanceOf: {
method: "balanceOf"
arguments: [ account: TAddress ]
}
depositTo: {
method: "depositTo"
arguments: [ account: TAddress ]
}
deposits: {
method: "deposits"
arguments: [ input0: TAddress ]
}
getDepositInfo: {
method: "getDepositInfo"
arguments: [ account: TAddress ]
}
getNonce: {
method: "getNonce"
arguments: [ _sender: TAddress, key: bigint ]
}
getSenderAddress: {
method: "getSenderAddress"
arguments: [ initCode: TEth.Hex ]
}
getUserOpHash: {
method: "getUserOpHash"
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 } ]
}
handleAggregatedOps: {
method: "handleAggregatedOps"
arguments: [ opsPerAggregator: { userOps: { 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 }[], aggregator: TAddress, signature: TEth.Hex }[], beneficiary: TAddress ]
}
handleOps: {
method: "handleOps"
arguments: [ ops: { 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 }[], beneficiary: TAddress ]
}
incrementNonce: {
method: "incrementNonce"
arguments: [ key: bigint ]
}
innerHandleOp: {
method: "innerHandleOp"
arguments: [ callData: TEth.Hex, opInfo: { mUserOp: { sender: TAddress, nonce: bigint, callGasLimit: bigint, verificationGasLimit: bigint, preVerificationGas: bigint, paymaster: TAddress, maxFeePerGas: bigint, maxPriorityFeePerGas: bigint }, userOpHash: TEth.Hex, prefund: bigint, contextOffset: bigint, preOpGas: bigint }, context: TEth.Hex ]
}
nonceSequenceNumber: {
method: "nonceSequenceNumber"
arguments: [ input0: TAddress, input1: bigint ]
}
simulateHandleOp: {
method: "simulateHandleOp"
arguments: [ op: { 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 }, target: TAddress, targetCallData: TEth.Hex ]
}
simulateValidation: {
method: "simulateValidation"
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 } ]
}
unlockStake: {
method: "unlockStake"
arguments: [ ]
}
withdrawStake: {
method: "withdrawStake"
arguments: [ withdrawAddress: TAddress ]
}
withdrawTo: {
method: "withdrawTo"
arguments: [ withdrawAddress: TAddress, withdrawAmount: bigint ]
}
}
}
class EntryPointStorageReader extends ContractStorageReaderBase {
constructor(
public address: TAddress,
public client: Web3Client,
public explorer: IBlockchainExplorer,
) {
super(address, client, explorer);
this.$createHandler(this.$slots);
}
async deposits(key: TAddress): Promise<{ deposit: bigint, staked: boolean, stake: bigint, unstakeDelaySec: number, withdrawTime: number }> {
return this.$storage.get(['deposits', key]);
}
async nonceSequenceNumber(key: TAddress): Promise<Record<string | number, bigint>> {
return this.$storage.get(['nonceSequenceNumber', key]);
}
async _status(): Promise<bigint> {
return this.$storage.get(['_status', ]);
}
$slots = [
{
"slot": 0,
"position": 0,
"name": "deposits",
"size": null,
"type": "mapping(address => (uint112 deposit, bool staked, uint112 stake, uint32 unstakeDelaySec, uint48 withdrawTime))"
},
{
"slot": 1,
"position": 0,
"name": "nonceSequenceNumber",
"size": null,
"type": "mapping(address => mapping(uint192 => uint256))"
},
{
"slot": 2,
"position": 0,
"name": "_status",
"size": 256,
"type": "uint256"
}
]
}
interface IEntryPointTxCaller {
addStake (sender: TSender, unstakeDelaySec: number): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>
depositTo (sender: TSender, account: TAddress): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>
getSenderAddress (sender: TSender, initCode: TEth.Hex): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>
handleAggregatedOps (sender: TSender, opsPerAggregator: { userOps: { 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 }[], aggregator: TAddress, signature: TEth.Hex }[], beneficiary: TAddress): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>
handleOps (sender: TSender, ops: { 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 }[], beneficiary: TAddress): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>
incrementNonce (sender: TSender, key: bigint): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>
innerHandleOp (sender: TSender, callData: TEth.Hex, opInfo: { mUserOp: { sender: TAddress, nonce: bigint, callGasLimit: bigint, verificationGasLimit: bigint, preVerificationGas: bigint, paymaster: TAddress, maxFeePerGas: bigint, maxPriorityFeePerGas: bigint }, userOpHash: TEth.Hex, prefund: bigint, contextOffset: bigint, preOpGas: bigint }, context: TEth.Hex): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>
simulateHandleOp (sender: TSender, op: { 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 }, target: TAddress, targetCallData: TEth.Hex): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>
simulateValidation (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 }): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>
unlockStake (sender: TSender, ): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>
withdrawStake (sender: TSender, withdrawAddress: TAddress): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>
withdrawTo (sender: TSender, withdrawAddress: TAddress, withdrawAmount: bigint): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>
}
interface IEntryPointTxData {
addStake (sender: TSender, unstakeDelaySec: number): Promise<TEth.TxLike>
depositTo (sender: TSender, account: TAddress): Promise<TEth.TxLike>
getSenderAddress (sender: TSender, initCode: TEth.Hex): Promise<TEth.TxLike>
handleAggregatedOps (sender: TSender, opsPerAggregator: { userOps: { 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 }[], aggregator: TAddress, signature: TEth.Hex }[], beneficiary: TAddress): Promise<TEth.TxLike>
handleOps (sender: TSender, ops: { 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 }[], beneficiary: TAddress): Promise<TEth.TxLike>
incrementNonce (sender: TSender, key: bigint): Promise<TEth.TxLike>
innerHandleOp (sender: TSender, callData: TEth.Hex, opInfo: { mUserOp: { sender: TAddress, nonce: bigint, callGasLimit: bigint, verificationGasLimit: bigint, preVerificationGas: bigint, paymaster: TAddress, maxFeePerGas: bigint, maxPriorityFeePerGas: bigint }, userOpHash: TEth.Hex, prefund: bigint, contextOffset: bigint, preOpGas: bigint }, context: TEth.Hex): Promise<TEth.TxLike>
simulateHandleOp (sender: TSender, op: { 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 }, target: TAddress, targetCallData: TEth.Hex): Promise<TEth.TxLike>
simulateValidation (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 }): Promise<TEth.TxLike>
unlockStake (sender: TSender, ): Promise<TEth.TxLike>
withdrawStake (sender: TSender, withdrawAddress: TAddress): Promise<TEth.TxLike>
withdrawTo (sender: TSender, withdrawAddress: TAddress, withdrawAmount: bigint): Promise<TEth.TxLike>
}
type TEvents = TEntryPointTypes['Events'];
type TEventParams<TEventName extends keyof TEvents> = Partial<TEvents[TEventName]['outputParams']>;
type TEventArguments<TEventName extends keyof TEvents> = Partial<TEvents[TEventName]['outputArgs']>;