diff --git a/README.md b/README.md index dcf7a841..1d3358f6 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,9 @@ Or follow the steps below: - `--unsafeMode` - enables unsafeMode - `--redirectRpc` - enables redirecting eth rpc calls - `--executor.bundlingMode manual|auto` - sets bundling mode to `manual` or `auto` on start. Default value is `auto` +- `--metrics.enable false|true` - enable Prometheus metrics (default - `false`) +- `--metrics.host` - metrics host (default - `127.0.0.1`) +- `--metrics.port` - metrics port (default - `8008`) ## 🔑 Relayer Configuration diff --git a/packages/api/src/dto/EstimateUserOperation.dto.ts b/packages/api/src/dto/EstimateUserOperation.dto.ts index c505be9f..f01b4e78 100644 --- a/packages/api/src/dto/EstimateUserOperation.dto.ts +++ b/packages/api/src/dto/EstimateUserOperation.dto.ts @@ -2,24 +2,24 @@ import { IsDefined, IsEthereumAddress, IsObject, + IsOptional, IsString, ValidateNested, } from "class-validator"; import { BigNumberish, BytesLike } from "ethers"; import { Type } from "class-transformer"; import { IsBigNumber } from "../utils/is-bignumber"; -import { IsCallData } from "../utils/IsCallCode"; -export class EstimateUserOperationStruct { +export class EstimateUserOperation { + /** + * Common Properties + */ @IsEthereumAddress() sender!: string; @IsBigNumber() nonce!: BigNumberish; - @IsString() - @IsCallData() - initCode!: BytesLike; - @IsString() - callData!: BytesLike; + @IsBigNumber() + callGasLimit?: BigNumberish; @IsBigNumber() verificationGasLimit?: BigNumberish; @IsBigNumber() @@ -29,20 +29,44 @@ export class EstimateUserOperationStruct { @IsBigNumber() maxPriorityFeePerGas?: BigNumberish; @IsString() - @IsCallData() - paymasterAndData?: BytesLike; + callData!: BytesLike; @IsString() signature!: BytesLike; + + /** + * EntryPoint v7 Properties + */ + @IsEthereumAddress() + @IsOptional() + factory?: string; + + @IsString() + @IsOptional() + factoryData?: BytesLike; + + @IsEthereumAddress() + @IsOptional() + paymaster?: string; + @IsBigNumber() - callGasLimit!: BigNumberish; + @IsOptional() + paymasterVerificationGasLimit?: BigNumberish; + + @IsBigNumber() + @IsOptional() + paymasterPostOpGasLimit?: BigNumberish; + + @IsString() + @IsOptional() + paymasterData?: BytesLike; } export class EstimateUserOperationGasArgs { @IsDefined() @IsObject() @ValidateNested() - @Type(() => EstimateUserOperationStruct) - userOp!: EstimateUserOperationStruct; + @Type(() => EstimateUserOperation) + userOp!: EstimateUserOperation; @IsEthereumAddress() entryPoint!: string; diff --git a/packages/api/src/dto/SendUserOperation.dto.ts b/packages/api/src/dto/SendUserOperation.dto.ts index 6b359a8a..826a8f23 100644 --- a/packages/api/src/dto/SendUserOperation.dto.ts +++ b/packages/api/src/dto/SendUserOperation.dto.ts @@ -2,24 +2,24 @@ import { IsDefined, IsEthereumAddress, IsObject, + IsOptional, IsString, ValidateNested, } from "class-validator"; import { BigNumberish, BytesLike } from "ethers"; import { Type } from "class-transformer"; import { IsBigNumber } from "../utils/is-bignumber"; -import { IsCallData } from "../utils/IsCallCode"; -export class SendUserOperationStruct { +export class SendUserOperation { + /** + * Common Properties + */ @IsEthereumAddress() sender!: string; @IsBigNumber() nonce!: BigNumberish; - @IsString() - @IsCallData() - initCode!: BytesLike; - @IsString() - callData!: BytesLike; + @IsBigNumber() + callGasLimit!: BigNumberish; @IsBigNumber() verificationGasLimit!: BigNumberish; @IsBigNumber() @@ -29,20 +29,44 @@ export class SendUserOperationStruct { @IsBigNumber() maxPriorityFeePerGas!: BigNumberish; @IsString() - @IsCallData() - paymasterAndData!: BytesLike; + callData!: BytesLike; @IsString() signature!: BytesLike; + + /** + * EntryPoint v7 Properties + */ + @IsEthereumAddress() + @IsOptional() + factory?: string; + + @IsString() + @IsOptional() + factoryData?: BytesLike; + + @IsEthereumAddress() + @IsOptional() + paymaster?: string; + @IsBigNumber() - callGasLimit!: BigNumberish; + @IsOptional() + paymasterVerificationGasLimit?: BigNumberish; + + @IsBigNumber() + @IsOptional() + paymasterPostOpGasLimit?: BigNumberish; + + @IsString() + @IsOptional() + paymasterData?: BytesLike; } export class SendUserOperationGasArgs { @IsDefined() @IsObject() @ValidateNested() - @Type(() => SendUserOperationStruct) - userOp!: SendUserOperationStruct; + @Type(() => SendUserOperation) + userOp!: SendUserOperation; @IsEthereumAddress() entryPoint!: string; diff --git a/packages/api/src/dto/SetMempool.dto.ts b/packages/api/src/dto/SetMempool.dto.ts index 51e66921..72c749fa 100644 --- a/packages/api/src/dto/SetMempool.dto.ts +++ b/packages/api/src/dto/SetMempool.dto.ts @@ -4,13 +4,13 @@ import { IsEthereumAddress, ValidateNested, } from "class-validator"; -import { SendUserOperationStruct } from "./SendUserOperation.dto"; +import { SendUserOperation } from "./SendUserOperation.dto"; export class SetMempoolArgs { @IsDefined() @IsArray() @ValidateNested() - userOps!: SendUserOperationStruct[]; + userOps!: SendUserOperation[]; @IsEthereumAddress() entryPoint!: string; diff --git a/packages/api/src/modules/debug.ts b/packages/api/src/modules/debug.ts index 2e7172de..f551cb15 100644 --- a/packages/api/src/modules/debug.ts +++ b/packages/api/src/modules/debug.ts @@ -1,4 +1,4 @@ -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { Debug } from "executor/lib/modules"; import { IsEthereumAddress } from "class-validator"; import { BundlingMode } from "types/lib/api/interfaces"; @@ -49,7 +49,7 @@ export class DebugAPI { * Dumps the current UserOperations mempool * array - Array of UserOperations currently in the mempool */ - async dumpMempool(): Promise { + async dumpMempool(): Promise { return await this.debugModule.dumpMempool(); } diff --git a/packages/api/src/utils/RpcMethodValidator.ts b/packages/api/src/utils/RpcMethodValidator.ts index 3a609e12..d413422a 100644 --- a/packages/api/src/utils/RpcMethodValidator.ts +++ b/packages/api/src/utils/RpcMethodValidator.ts @@ -29,7 +29,11 @@ export function validationFactory( arguments: args[0], }, }); - throw new RpcError("Invalid Request", RpcErrorCodes.INVALID_REQUEST); + throw new RpcError("Invalid Request", RpcErrorCodes.INVALID_REQUEST, { + data: { + errors, + }, + }); } return method.apply(this, args); diff --git a/packages/cli/src/cmds/node/handler.ts b/packages/cli/src/cmds/node/handler.ts index 56475ba9..87f3bbbb 100644 --- a/packages/cli/src/cmds/node/handler.ts +++ b/packages/cli/src/cmds/node/handler.ts @@ -12,76 +12,78 @@ import { getVersionData } from "../../util/version"; import { initPeerIdAndEnr } from "./initPeerIdAndEnr"; export async function nodeHandler(args: IGlobalArgs): Promise { - const params = await getNodeConfigFromArgs(args); - - //create the necessary directories - mkdir(params.dataDir); - logger.info(" ___ ___ "); logger.info(" (o o) (o o) "); logger.info("( V ) Skandha - A modular typescript bundler ( V )"); logger.info("--m-m--------------------------------------------m-m--"); + logger.info("P2P is not yet available for EntryPoint v7. Stay tuned"); + return; - logger.info(`Using the configFile from ${params.configFile}`); - logger.info(`Initialised the dataDir at ${params.dataDir}`); - logger.info("Boot ENR: " + params.p2p["bootEnrs"].length); + // const params = await getNodeConfigFromArgs(args); - let config: Config; - try { - const networkConfig = readFile(params.configFile) as NetworkConfig; - config = await Config.init({ - config: networkConfig, - testingMode: params.testingMode, - unsafeMode: params.unsafeMode, - redirectRpc: params.redirectRpc, - }); - } catch (err) { - if (err instanceof Error && err.message.indexOf("chain id") > -1) { - logger.error(err.message); - return; - } - logger.info("Config file not found. Proceeding with env vars..."); - config = await Config.init({ - config: null, - testingMode: params.testingMode, - unsafeMode: params.unsafeMode, - redirectRpc: params.redirectRpc, - }); - } + // //create the necessary directories + // mkdir(params.dataDir); - const db = new RocksDbController( - params.dataDir, - getNamespaceByValue(Namespace.userOps) - ); - await db.start(); + // logger.info(`Using the configFile from ${params.configFile}`); + // logger.info(`Initialised the dataDir at ${params.dataDir}`); + // logger.info("Boot ENR: " + params.p2p["bootEnrs"].length); - const { enr, peerId } = await initPeerIdAndEnr(args, logger); + // let config: Config; + // try { + // const networkConfig = readFile(params.configFile) as NetworkConfig; + // config = await Config.init({ + // config: networkConfig, + // testingMode: params.testingMode, + // unsafeMode: params.unsafeMode, + // redirectRpc: params.redirectRpc, + // }); + // } catch (err) { + // if (err instanceof Error && err.message.indexOf("chain id") > -1) { + // logger.error(err.message); + // return; + // } + // logger.info("Config file not found. Proceeding with env vars..."); + // config = await Config.init({ + // config: null, + // testingMode: params.testingMode, + // unsafeMode: params.unsafeMode, + // redirectRpc: params.redirectRpc, + // }); + // } - const options: IBundlerNodeOptions = { - ...defaultOptions, - api: { - port: params.api["port"], - address: params.api["address"], - cors: params.api["cors"], - enableRequestLogging: params.api["enableRequestLogging"], - }, - network: initNetworkOptions(enr, params.p2p, params.dataDir), - }; + // const db = new RocksDbController( + // params.dataDir, + // getNamespaceByValue(Namespace.userOps) + // ); + // await db.start(); + + // const { enr, peerId } = await initPeerIdAndEnr(args, logger); + + // const options: IBundlerNodeOptions = { + // ...defaultOptions, + // api: { + // port: params.api["port"], + // address: params.api["address"], + // cors: params.api["cors"], + // enableRequestLogging: params.api["enableRequestLogging"], + // }, + // network: initNetworkOptions(enr, params.p2p, params.dataDir), + // }; - const version = getVersionData(); - const node = await BundlerNode.init({ - nodeOptions: options, - relayersConfig: config, - relayerDb: db, - testingMode: params.testingMode, - redirectRpc: params.redirectRpc, - bundlingMode: params.executor.bundlingMode, - peerId, - metricsOptions: params.metrics, - version, - }); + // const version = getVersionData(); + // const node = await BundlerNode.init({ + // nodeOptions: options, + // relayersConfig: config, + // relayerDb: db, + // testingMode: params.testingMode, + // redirectRpc: params.redirectRpc, + // bundlingMode: params.executor.bundlingMode, + // peerId, + // metricsOptions: params.metrics, + // version, + // }); - await node.start(); + // await node.start(); } export async function getNodeConfigFromArgs(args: IGlobalArgs): Promise<{ diff --git a/packages/executor/src/config.ts b/packages/executor/src/config.ts index e68ae618..755fe59a 100644 --- a/packages/executor/src/config.ts +++ b/packages/executor/src/config.ts @@ -73,7 +73,7 @@ export class Config { } isEntryPointSupported(entryPoint: string): boolean { - return !!this.config.entryPoints.some( + return this.config.entryPoints.some( (addr) => addr.toLowerCase() === entryPoint.toLowerCase() ); } @@ -82,7 +82,7 @@ export class Config { if (config == null) config = {} as NetworkConfig; config.entryPoints = fromEnvVar( "ENTRYPOINTS", - config.entryPoints, + config.entryPoints || [], true ) as string[]; diff --git a/packages/executor/src/entities/MempoolEntry.ts b/packages/executor/src/entities/MempoolEntry.ts index 68bea07b..aa2b04be 100644 --- a/packages/executor/src/entities/MempoolEntry.ts +++ b/packages/executor/src/entities/MempoolEntry.ts @@ -2,14 +2,14 @@ import { BigNumber, BigNumberish, ethers } from "ethers"; import { getAddress, hexValue } from "ethers/lib/utils"; import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; import RpcError from "types/lib/api/errors/rpc-error"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; import { MempoolEntryStatus } from "types/lib/executor"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { now } from "../utils"; import { IMempoolEntry, MempoolEntrySerialized } from "./interfaces"; export class MempoolEntry implements IMempoolEntry { chainId: number; - userOp: UserOperationStruct; + userOp: UserOperation; entryPoint: string; prefund: BigNumberish; aggregator?: string; @@ -38,7 +38,7 @@ export class MempoolEntry implements IMempoolEntry { submitAttempts, }: { chainId: number; - userOp: UserOperationStruct; + userOp: UserOperation; entryPoint: string; prefund: BigNumberish; aggregator?: string | undefined; @@ -166,15 +166,20 @@ export class MempoolEntry implements IMempoolEntry { userOp: { sender: getAddress(this.userOp.sender), nonce: hexValue(this.userOp.nonce), - initCode: this.userOp.initCode, callData: this.userOp.callData, callGasLimit: hexValue(this.userOp.callGasLimit), verificationGasLimit: hexValue(this.userOp.verificationGasLimit), preVerificationGas: hexValue(this.userOp.preVerificationGas), maxFeePerGas: hexValue(this.userOp.maxFeePerGas), maxPriorityFeePerGas: hexValue(this.userOp.maxPriorityFeePerGas), - paymasterAndData: this.userOp.paymasterAndData, signature: this.userOp.signature, + factory: this.userOp.factory, + factoryData: this.userOp.factoryData, + paymaster: this.userOp.paymaster, + paymasterVerificationGasLimit: + this.userOp.paymasterVerificationGasLimit, + paymasterPostOpGasLimit: this.userOp.paymasterPostOpGasLimit, + paymasterData: this.userOp.paymasterData, }, prefund: hexValue(this.prefund), aggregator: this.aggregator, diff --git a/packages/executor/src/entities/interfaces.ts b/packages/executor/src/entities/interfaces.ts index 553438a6..809d18ec 100644 --- a/packages/executor/src/entities/interfaces.ts +++ b/packages/executor/src/entities/interfaces.ts @@ -1,10 +1,10 @@ import { BigNumberish, BytesLike } from "ethers"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { MempoolEntryStatus, ReputationStatus } from "types/lib/executor"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; export interface IMempoolEntry { chainId: number; - userOp: UserOperationStruct; + userOp: UserOperation; entryPoint: string; prefund: BigNumberish; aggregator?: string; @@ -23,15 +23,19 @@ export interface MempoolEntrySerialized { userOp: { sender: string; nonce: string; - initCode: BytesLike; callData: BytesLike; callGasLimit: string; verificationGasLimit: string; preVerificationGas: string; maxFeePerGas: string; maxPriorityFeePerGas: string; - paymasterAndData: BytesLike; signature: BytesLike; + factory?: string; + factoryData?: BytesLike; + paymaster?: string; + paymasterVerificationGasLimit?: BigNumberish; + paymasterPostOpGasLimit?: BigNumberish; + paymasterData?: BytesLike; }; prefund: string; aggregator: string | undefined; diff --git a/packages/executor/src/executor.ts b/packages/executor/src/executor.ts index 7e223cfc..87019891 100644 --- a/packages/executor/src/executor.ts +++ b/packages/executor/src/executor.ts @@ -11,7 +11,7 @@ import { BundlingService, ReputationService, P2PService, - EventsService, + EntryPointService, } from "./services"; import { Config } from "./config"; import { BundlingMode, GetNodeAPI, NetworkConfig } from "./interfaces"; @@ -42,12 +42,12 @@ export class Executor { public eth: Eth; public skandha: Skandha; + public entryPointService: EntryPointService; public bundlingService: BundlingService; public mempoolService: MempoolService; public userOpValidationService: UserOpValidationService; public reputationService: ReputationService; public p2pService: P2PService; - public eventsService: EventsService; private db: IDbController; @@ -75,8 +75,17 @@ export class Executor { BigNumber.from(this.networkConfig.minStake), this.networkConfig.minUnstakeDelay ); + this.entryPointService = new EntryPointService( + this.chainId, + this.networkConfig, + this.provider, + this.reputationService, + this.db, + this.logger + ); this.userOpValidationService = new UserOpValidationService( this.provider, + this.entryPointService, this.reputationService, this.chainId, this.config, @@ -85,12 +94,14 @@ export class Executor { this.mempoolService = new MempoolService( this.db, this.chainId, + this.entryPointService, this.reputationService, this.networkConfig ); this.bundlingService = new BundlingService( this.chainId, this.provider, + this.entryPointService, this.mempoolService, this.userOpValidationService, this.reputationService, @@ -99,25 +110,18 @@ export class Executor { this.metrics, this.networkConfig.relayingMode ); - this.eventsService = new EventsService( - this.chainId, - this.provider, - this.logger, - this.reputationService, - this.networkConfig.entryPoints, - this.db - ); - this.eventsService.initEventListener(); this.web3 = new Web3(this.config, this.version); this.debug = new Debug( this.provider, + this.entryPointService, this.bundlingService, this.mempoolService, this.reputationService, this.networkConfig ); this.skandha = new Skandha( + this.entryPointService, this.chainId, this.provider, this.config, @@ -126,6 +130,7 @@ export class Executor { this.eth = new Eth( this.chainId, this.provider, + this.entryPointService, this.userOpValidationService, this.mempoolService, this.skandha, @@ -134,7 +139,10 @@ export class Executor { this.metrics, this.getNodeApi ); - this.p2pService = new P2PService(this.mempoolService); + this.p2pService = new P2PService( + this.entryPointService, + this.mempoolService + ); if (this.config.testingMode || options.bundlingMode == "manual") { this.bundlingService.setBundlingMode("manual"); diff --git a/packages/executor/src/modules/debug.ts b/packages/executor/src/modules/debug.ts index 8e650832..b93c02f1 100644 --- a/packages/executor/src/modules/debug.ts +++ b/packages/executor/src/modules/debug.ts @@ -1,20 +1,17 @@ import { BigNumber, providers } from "ethers"; import RpcError from "types/lib/api/errors/rpc-error"; import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; -import { - IEntryPoint__factory, - StakeManager__factory, -} from "types/lib/executor/contracts"; +import { StakeManager__factory } from "types/lib/contracts/EPv6"; import { MempoolEntryStatus } from "types/lib/executor"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { BundlingService, + EntryPointService, MempoolService, ReputationService, } from "../services"; import { BundlingMode, GetStakeStatus, NetworkConfig } from "../interfaces"; import { ReputationEntryDump } from "../entities/interfaces"; -import { getAddr } from "../utils"; import { SetReputationArgs, SetMempoolArgs } from "./interfaces"; /* SPEC: https://eips.ethereum.org/EIPS/eip-4337#rpc-methods-debug-namespace @@ -22,6 +19,7 @@ import { SetReputationArgs, SetMempoolArgs } from "./interfaces"; export class Debug { constructor( private provider: providers.JsonRpcProvider, + private entryPointService: EntryPointService, private bundlingService: BundlingService, private mempoolService: MempoolService, private reputationService: ReputationService, @@ -64,7 +62,7 @@ export class Debug { * Dumps the current UserOperations mempool * array - Array of UserOperations currently in the mempool */ - async dumpMempool(): Promise { + async dumpMempool(): Promise { const entries = await this.mempoolService.dump(); return entries .filter((entry) => entry.status === MempoolEntryStatus.New) @@ -116,33 +114,37 @@ export class Debug { } async setMempool(mempool: SetMempoolArgs): Promise { - const entryPointContract = IEntryPoint__factory.connect( - mempool.entryPoint, - this.provider - ); + const { entryPoint, userOps } = mempool; await this.mempoolService.clearState(); // Loop through the array and persist to the local mempool without simulation. - for (const userOp of mempool.userOps) { - const userOpHash = await entryPointContract.getUserOpHash(userOp); + for (const userOp of userOps) { + const [factory, paymaster] = [ + this.entryPointService.getFactory(entryPoint, userOp), + this.entryPointService.getPaymaster(entryPoint, userOp), + ]; + const userOpHash = await this.entryPointService.getUserOpHash( + entryPoint, + userOp + ); await this.mempoolService.addUserOp( userOp, - mempool.entryPoint, + entryPoint, 0x0, { addr: userOp.sender, stake: 0, unstakeDelaySec: 0, }, - getAddr(userOp.initCode) + factory ? { - addr: getAddr(userOp.initCode)!, + addr: factory, stake: 0, unstakeDelaySec: 0, } : undefined, - getAddr(userOp.paymasterAndData) + paymaster ? { - addr: getAddr(userOp.paymasterAndData)!, + addr: paymaster, stake: 0, unstakeDelaySec: 0, } diff --git a/packages/executor/src/modules/eth.ts b/packages/executor/src/modules/eth.ts index 417b729e..69d74e8c 100644 --- a/packages/executor/src/modules/eth.ts +++ b/packages/executor/src/modules/eth.ts @@ -1,36 +1,36 @@ import { BigNumber, BigNumberish, ethers } from "ethers"; -import { arrayify, hexlify } from "ethers/lib/utils"; import RpcError from "types/lib/api/errors/rpc-error"; import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; -import { - IEntryPoint, - UserOperationEventEvent, - UserOperationStruct, -} from "types/lib/executor/contracts/EntryPoint"; import { EstimatedUserOperationGas, UserOperationByHashResponse, UserOperationReceipt, } from "types/lib/api/interfaces"; -import { IEntryPoint__factory } from "types/lib/executor/contracts/factories"; import { IPVGEstimator } from "params/lib/types/IPVGEstimator"; import { estimateOptimismPVG, estimateArbitrumPVG, ECDSA_DUMMY_SIGNATURE, estimateMantlePVG, - serializeMempoolId + AddressZero, + serializeMempoolId, } from "params/lib"; import { Logger } from "types/lib"; import { PerChainMetrics } from "monitoring/lib"; -import { deepHexlify, packUserOp } from "../utils"; -import { UserOpValidationService, MempoolService } from "../services"; -import { GetNodeAPI, Log, NetworkConfig } from "../interfaces"; +import { UserOperation } from "types/lib/contracts/UserOperation"; +import { + UserOpValidationService, + MempoolService, + EntryPointService, +} from "../services"; +import { GetNodeAPI, NetworkConfig } from "../interfaces"; +import { EntryPointVersion } from "../services/EntryPointService/interfaces"; import { EstimateUserOperationGasArgs, SendUserOperationGasArgs, } from "./interfaces"; import { Skandha } from "./skandha"; +import { UserOperationStruct } from "types/lib/contracts/EPv6/EntryPoint"; export class Eth { private pvgEstimator: IPVGEstimator | null = null; @@ -38,6 +38,7 @@ export class Eth { constructor( private chainId: number, private provider: ethers.providers.JsonRpcProvider, + private entryPointService: EntryPointService, private userOpValidationService: UserOpValidationService, private mempoolService: MempoolService, private skandhaModule: Skandha, @@ -68,8 +69,8 @@ export class Eth { * @param entryPoint the entrypoint address the request should be sent through. this MUST be one of the entry points returned by the supportedEntryPoints rpc call. */ async sendUserOperation(args: SendUserOperationGasArgs): Promise { - const userOp = args.userOp as unknown as UserOperationStruct; - const entryPoint = args.entryPoint; + const userOp = args.userOp as unknown as UserOperation; + const entryPoint = args.entryPoint.toLowerCase(); if (!this.validateEntryPoint(entryPoint)) { throw new RpcError("Invalid Entrypoint", RpcErrorCodes.INVALID_REQUEST); } @@ -84,11 +85,10 @@ export class Eth { "Opcode validation successful. Trying saving in mempool..." ); - const entryPointContract = IEntryPoint__factory.connect( + const userOpHash = await this.entryPointService.getUserOpHash( entryPoint, - this.provider + userOp ); - const userOpHash = await entryPointContract.getUserOpHash(userOp); await this.mempoolService.addUserOp( userOp, entryPoint, @@ -105,18 +105,23 @@ export class Eth { this.metrics?.useropsInMempool.inc(); try { - const nodeApi = this.getNodeAPI(); - if (nodeApi) { - const { canonicalEntryPoint, canonicalMempoolId } = this.config; - if (canonicalEntryPoint.toLowerCase() == entryPoint.toLowerCase() && canonicalMempoolId.length > 0) { - const blockNumber = await this.provider.getBlockNumber(); // TODO: fetch blockNumber from simulateValidation - await nodeApi.publishVerifiedUserOperationJSON( - entryPoint, - userOp, - blockNumber.toString(), - serializeMempoolId(canonicalMempoolId) - ); - this.metrics?.useropsSent?.inc(); + if ( + this.entryPointService.getEntryPointVersion(entryPoint) === + EntryPointVersion.SIX + ) { + const nodeApi = this.getNodeAPI(); + if (nodeApi) { + const { canonicalEntryPoint, canonicalMempoolId } = this.config; + if (canonicalEntryPoint.toLowerCase() == entryPoint.toLowerCase() && canonicalMempoolId.length > 0) { + const blockNumber = await this.provider.getBlockNumber(); // TODO: fetch blockNumber from simulateValidation + await nodeApi.publishVerifiedUserOperationJSON( + entryPoint, + userOp as UserOperationStruct, + blockNumber.toString(), + serializeMempoolId(canonicalMempoolId) + ); + this.metrics?.useropsSent?.inc(); + } } } } catch (err) { @@ -137,13 +142,13 @@ export class Eth { async estimateUserOperationGas( args: EstimateUserOperationGasArgs ): Promise { - const { userOp, entryPoint } = args; + const userOp = args.userOp; + const entryPoint = args.entryPoint.toLowerCase(); if (!this.validateEntryPoint(entryPoint)) { throw new RpcError("Invalid Entrypoint", RpcErrorCodes.INVALID_REQUEST); } - const userOpComplemented: UserOperationStruct = { - paymasterAndData: userOp.paymasterAndData ?? "0x", + const userOpComplemented: UserOperation = { ...userOp, callGasLimit: BigNumber.from(10e6), preVerificationGas: BigNumber.from(1e6), @@ -170,7 +175,11 @@ export class Eth { .div(100) // 130% markup .toNumber(); - let preVerificationGas: BigNumberish = this.calcPreVerificationGas(userOp); + let preVerificationGas: BigNumberish = + this.entryPointService.calcPreverificationGas( + entryPoint, + userOpComplemented + ); userOpComplemented.preVerificationGas = preVerificationGas; let callGasLimit: BigNumber = BigNumber.from(0); @@ -198,7 +207,7 @@ export class Eth { //> // Binary search gas limits - const userOpToEstimate: UserOperationStruct = { + const userOpToEstimate: UserOperation = { ...userOpComplemented, preVerificationGas, verificationGasLimit, @@ -210,10 +219,19 @@ export class Eth { if (this.pvgEstimator) { userOpComplemented.maxFeePerGas = gasFee.maxFeePerGas; userOpComplemented.maxPriorityFeePerGas = gasFee.maxPriorityFeePerGas; + const data = this.entryPointService.encodeHandleOps( + entryPoint, + [userOpComplemented], + AddressZero + ); preVerificationGas = await this.pvgEstimator( entryPoint, - userOpComplemented, - preVerificationGas + data, + preVerificationGas, + { + contractCreation: Boolean(userOp.factory && userOp.factory.length > 2), + userOp: userOpComplemented, + } ); } @@ -238,7 +256,8 @@ export class Eth { async estimateUserOperationGasWithSignature( args: SendUserOperationGasArgs ): Promise { - const { userOp, entryPoint } = args; + const userOp = args.userOp; + const entryPoint = args.entryPoint.toLowerCase(); if (!this.validateEntryPoint(entryPoint)) { throw new RpcError("Invalid Entrypoint", RpcErrorCodes.INVALID_REQUEST); } @@ -261,16 +280,23 @@ export class Eth { err.message.match(/reason="(.*?)"/)?.at(1) ?? "execution reverted"; throw new RpcError(message, RpcErrorCodes.EXECUTION_REVERTED); }); - // const preVerificationGas = this.calcPreVerificationGas(userOp); + const verificationGasLimit = BigNumber.from(preOpGas).toNumber(); + const gasFee = await this.skandhaModule.getGasPrice(); + return { - preVerificationGas: this.calcPreVerificationGas(userOp), + preVerificationGas: this.entryPointService.calcPreverificationGas( + entryPoint, + userOp + ), verificationGasLimit, verificationGas: verificationGasLimit, validAfter: BigNumber.from(validAfter), validUntil: BigNumber.from(validUntil), callGasLimit, + maxFeePerGas: gasFee.maxFeePerGas, + maxPriorityFeePerGas: gasFee.maxPriorityFeePerGas }; } @@ -282,7 +308,8 @@ export class Eth { * @returns */ async validateUserOp(args: SendUserOperationGasArgs): Promise { - const { userOp, entryPoint } = args; + const userOp = args.userOp; + const entryPoint = args.entryPoint.toLowerCase(); if (!this.validateEntryPoint(entryPoint)) { throw new RpcError("Invalid Entrypoint", RpcErrorCodes.INVALID_REQUEST); } @@ -309,61 +336,7 @@ export class Eth { async getUserOperationByHash( hash: string ): Promise { - const [entryPoint, event] = await this.getUserOperationEvent(hash); - if (!entryPoint || !event) { - return null; - } - const tx = await event.getTransaction(); - if (tx.to !== entryPoint.address) { - throw new Error("unable to parse transaction"); - } - const parsed = entryPoint.interface.parseTransaction(tx); - const ops: UserOperationStruct[] = parsed?.args.ops; - if (ops.length == 0) { - throw new Error("failed to parse transaction"); - } - const op = ops.find( - (o) => - o.sender === event.args.sender && - BigNumber.from(o.nonce).eq(event.args.nonce) - ); - if (!op) { - throw new Error("unable to find userOp in transaction"); - } - - const { - sender, - nonce, - initCode, - callData, - callGasLimit, - verificationGasLimit, - preVerificationGas, - maxFeePerGas, - maxPriorityFeePerGas, - paymasterAndData, - signature, - } = op; - - return deepHexlify({ - userOperation: { - sender, - nonce, - initCode, - callData, - callGasLimit, - verificationGasLimit, - preVerificationGas, - maxFeePerGas, - maxPriorityFeePerGas, - paymasterAndData, - signature, - }, - entryPoint: entryPoint.address, - transactionHash: tx.hash, - blockHash: tx.blockHash ?? "", - blockNumber: tx.blockNumber ?? 0, - }); + return this.entryPointService.getUserOperationByHash(hash); } /** @@ -374,22 +347,7 @@ export class Eth { async getUserOperationReceipt( hash: string ): Promise { - const [entryPoint, event] = await this.getUserOperationEvent(hash); - if (!event || !entryPoint) { - return null; - } - const receipt = await event.getTransactionReceipt(); - const logs = this.filterLogs(event, receipt.logs); - return deepHexlify({ - userOpHash: hash, - sender: event.args.sender, - nonce: event.args.nonce, - actualGasCost: event.args.actualGasCost, - actualGasUsed: event.args.actualGasUsed, - success: event.args.success, - logs, - receipt, - }); + return this.entryPointService.getUserOperationReceipt(hash); } /** @@ -409,121 +367,10 @@ export class Eth { * @returns Entry points */ async getSupportedEntryPoints(): Promise { - return this.config.entryPoints.map((address) => - ethers.utils.getAddress(address) - ); + return this.entryPointService.getSupportedEntryPoints(); } validateEntryPoint(entryPoint: string): boolean { - return ( - (this.config.entryPoints as any) && - this.config.entryPoints.findIndex( - (ep) => ep.toLowerCase() === entryPoint.toLowerCase() - ) !== -1 - ); - } - - static DefaultGasOverheads = { - fixed: 21000, - perUserOp: 18300, - perUserOpWord: 4, - zeroByte: 4, - nonZeroByte: 16, - bundleSize: 1, - sigSize: 65, - }; - - /** - * calculate the preVerificationGas of the given UserOperation - * preVerificationGas (by definition) is the cost overhead that can't be calculated on-chain. - * it is based on parameters that are defined by the Ethereum protocol for external transactions. - * @param userOp filled userOp to calculate. The only possible missing fields can be the signature and preVerificationGas itself - * @param overheads gas overheads to use, to override the default values - */ - private calcPreVerificationGas( - userOp: Partial, - overheads?: Partial - ): number { - const ov = { ...Eth.DefaultGasOverheads, ...(overheads ?? {}) }; - const p: UserOperationStruct = { - preVerificationGas: 21000, - signature: hexlify(Buffer.alloc(ov.sigSize, 1)), - ...userOp, - } as any; - - const packed = arrayify(packUserOp(p, false)); - const lengthInWord = (packed.length + 31) / 32; - const callDataCost = packed - .map((x) => (x === 0 ? ov.zeroByte : ov.nonZeroByte)) - .reduce((sum, x) => sum + x); - const ret = Math.round( - callDataCost + - ov.fixed / ov.bundleSize + - ov.perUserOp + - ov.perUserOpWord * lengthInWord - ); - return Math.max(ret + this.config.pvgMarkup, 0); - } - - private async getUserOperationEvent( - userOpHash: string - ): Promise<[IEntryPoint | null, UserOperationEventEvent | null]> { - if (!userOpHash) { - throw new RpcError( - "Missing/invalid userOpHash", - RpcErrorCodes.METHOD_NOT_FOUND - ); - } - - let event: UserOperationEventEvent[] = []; - for (const addr of await this.getSupportedEntryPoints()) { - const contract = IEntryPoint__factory.connect(addr, this.provider); - try { - const blockNumber = await this.provider.getBlockNumber(); - let fromBlockNumber = blockNumber - this.config.receiptLookupRange; - // underflow check - if (fromBlockNumber < 0) { - fromBlockNumber = blockNumber; - } - event = await contract.queryFilter( - contract.filters.UserOperationEvent(userOpHash), - fromBlockNumber - ); - // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions - if (event[0]) { - return [contract, event[0]]; - } - } catch (err) { - this.logger.error(err); - throw new RpcError( - "Missing/invalid userOpHash", - RpcErrorCodes.METHOD_NOT_FOUND - ); - } - } - return [null, null]; - } - - private filterLogs(userOpEvent: UserOperationEventEvent, logs: Log[]): Log[] { - let startIndex = -1; - let endIndex = -1; - logs.forEach((log, index) => { - if (log?.topics[0] === userOpEvent.topics[0]) { - // process UserOperationEvent - if (log.topics[1] === userOpEvent.topics[1]) { - // it's our userOpHash. save as end of logs array - endIndex = index; - } else { - // it's a different hash. remember it as beginning index, but only if we didn't find our end index yet. - if (endIndex === -1) { - startIndex = index; - } - } - } - }); - if (endIndex === -1) { - throw new Error("fatal: no UserOperationEvent in logs"); - } - return logs.slice(startIndex + 1, endIndex); + return this.entryPointService.isEntryPointSupported(entryPoint); } } diff --git a/packages/executor/src/modules/interfaces.ts b/packages/executor/src/modules/interfaces.ts index 164f4c33..17703815 100644 --- a/packages/executor/src/modules/interfaces.ts +++ b/packages/executor/src/modules/interfaces.ts @@ -1,41 +1,20 @@ -import { BigNumberish, BytesLike } from "ethers"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { ReputationStatus } from "types/lib/executor"; -export class EstimateUserOperationStruct { - sender!: string; - nonce!: BigNumberish; - initCode!: BytesLike; - callData!: BytesLike; - verificationGasLimit?: BigNumberish; - preVerificationGas?: BigNumberish; - maxFeePerGas?: BigNumberish; - maxPriorityFeePerGas?: BigNumberish; - paymasterAndData?: BytesLike; - signature!: BytesLike; - callGasLimit!: BigNumberish; -} - export class EstimateUserOperationGasArgs { - userOp!: EstimateUserOperationStruct; + userOp!: Omit< + UserOperation, + | "callGasLimit" + | "verificationGasLimit" + | "preVerificationGas" + | "maxFeePerGas" + | "maxPriorityFeePerGas" + >; entryPoint!: string; } -export class SendUserOperationStruct { - sender!: string; - nonce!: BigNumberish; - initCode!: BytesLike; - callData!: BytesLike; - verificationGasLimit!: BigNumberish; - preVerificationGas!: BigNumberish; - maxFeePerGas!: BigNumberish; - maxPriorityFeePerGas!: BigNumberish; - paymasterAndData!: BytesLike; - signature!: BytesLike; - callGasLimit!: BigNumberish; -} - export class SendUserOperationGasArgs { - userOp!: SendUserOperationStruct; + userOp!: UserOperation; entryPoint!: string; } @@ -51,6 +30,6 @@ export class SetReputationArgs { } export class SetMempoolArgs { - userOps!: SendUserOperationStruct[]; + userOps!: UserOperation[]; entryPoint!: string; } diff --git a/packages/executor/src/modules/skandha.ts b/packages/executor/src/modules/skandha.ts index 1e2f1bb2..3254e1c2 100644 --- a/packages/executor/src/modules/skandha.ts +++ b/packages/executor/src/modules/skandha.ts @@ -9,16 +9,18 @@ import RpcError from "types/lib/api/errors/rpc-error"; import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; import { GasPriceMarkupOne } from "params/lib"; import { getGasFee } from "params/lib"; -import { IEntryPoint__factory } from "types/lib/executor/contracts"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; +import { UserOperationStruct } from "types/lib/contracts/EPv6/EntryPoint"; import { NetworkConfig } from "../interfaces"; import { Config } from "../config"; +import { EntryPointService } from "../services"; +import { EntryPointVersion } from "../services/EntryPointService/interfaces"; // custom features of Skandha export class Skandha { networkConfig: NetworkConfig; constructor( + private entryPointService: EntryPointService, private chainId: number, private provider: ethers.providers.JsonRpcProvider, private config: Config, @@ -80,7 +82,7 @@ export class Skandha { testingMode: this.config.testingMode, redirectRpc: this.config.redirectRpc, }, - entryPoints: this.networkConfig.entryPoints, + entryPoints: this.networkConfig.entryPoints || [], beneficiary: this.networkConfig.beneficiary, relayers: walletAddresses, minInclusionDenominator: BigNumber.from( @@ -126,7 +128,7 @@ export class Skandha { minUnstakeDelay: this.networkConfig.minUnstakeDelay, pvgMarkup: this.networkConfig.pvgMarkup, canonicalMempoolId: this.networkConfig.canonicalMempoolId, - canonicalEntryPoint: this.networkConfig.canonicalEntryPoint + canonicalEntryPoint: this.networkConfig.canonicalEntryPoint, }; } @@ -145,43 +147,52 @@ export class Skandha { const fromBlockNumber = BigNumber.from(toBlockInfo.number) .sub(blockCount) .toNumber(); - const contract = IEntryPoint__factory.connect(entryPoint, this.provider); - const events = await contract.queryFilter( - contract.filters.UserOperationEvent(), - fromBlockNumber, - toBlockInfo.number - ); - const txReceipts = await Promise.all( - events.map((event) => event.getTransaction()) - ); - const txDecoded = txReceipts - .map((receipt) => { - try { - return contract.interface.decodeFunctionData( - "handleOps", - receipt.data - ); - } catch (err) { - this.logger.error(err); - return null; - } - }) - .filter((el) => el !== null); + const epVersion = this.entryPointService.getEntryPointVersion(entryPoint); + if ( + epVersion === EntryPointVersion.SIX || + epVersion === EntryPointVersion.SEVEN + ) { + const contract = + this.entryPointService.getEntryPoint(entryPoint).contract; + const events = await contract.queryFilter( + contract.filters.UserOperationEvent(), + fromBlockNumber, + toBlockInfo.number + ); + const txReceipts = await Promise.all( + events.map((event) => event.getTransaction()) + ); + const txDecoded = txReceipts + .map((receipt) => { + try { + return contract.interface.decodeFunctionData( + "handleOps", + receipt.data + ); + } catch (err) { + this.logger.error(err); + return null; + } + }) + .filter((el) => el !== null); - const actualGasPrice = events.map((event) => - BigNumber.from(event.args.actualGasCost).div(event.args.actualGasUsed) - ); - const userops = txDecoded - .map((handleOps) => handleOps!.ops as UserOperationStruct[]) - .reduce((p, c) => { - return p.concat(c); - }, []); - return { - actualGasPrice, - maxFeePerGas: userops.map((userop) => userop.maxFeePerGas), - maxPriorityFeePerGas: userops.map( - (userop) => userop.maxPriorityFeePerGas - ), - }; + const actualGasPrice = events.map((event) => + BigNumber.from(event.args.actualGasCost).div(event.args.actualGasUsed) + ); + const userops = txDecoded + .map((handleOps) => handleOps!.ops as UserOperationStruct[]) + .reduce((p, c) => { + return p.concat(c); + }, []); + return { + actualGasPrice, + maxFeePerGas: userops.map((userop) => userop.maxFeePerGas), + maxPriorityFeePerGas: userops.map( + (userop) => userop.maxPriorityFeePerGas + ), + }; + } + + throw new RpcError("Unsupported EntryPoint"); } } diff --git a/packages/executor/src/services/BundlingService/relayers/base.ts b/packages/executor/src/services/BundlingService/relayers/base.ts index c5f08980..f7b1cfbb 100644 --- a/packages/executor/src/services/BundlingService/relayers/base.ts +++ b/packages/executor/src/services/BundlingService/relayers/base.ts @@ -6,9 +6,10 @@ import { Config } from "../../../config"; import { Bundle, NetworkConfig } from "../../../interfaces"; import { IRelayingMode, Relayer } from "../interfaces"; import { MempoolEntry } from "../../../entities/MempoolEntry"; -import { getAddr, now } from "../../../utils"; +import { now } from "../../../utils"; import { MempoolService } from "../../MempoolService"; import { ReputationService } from "../../ReputationService"; +import { EntryPointService } from "../../EntryPointService"; const WAIT_FOR_TX_MAX_RETRIES = 3; // 3 blocks @@ -22,6 +23,7 @@ export abstract class BaseRelayer implements IRelayingMode { protected provider: providers.JsonRpcProvider, protected config: Config, protected networkConfig: NetworkConfig, + protected entryPointService: EntryPointService, protected mempoolService: MempoolService, protected reputationService: ReputationService, protected metrics: PerChainMetrics | null @@ -93,7 +95,7 @@ export abstract class BaseRelayer implements IRelayingMode { if (paymaster !== constants.AddressZero) { await this.reputationService.crashedHandleOps(paymaster); } else if (typeof reason === "string" && reason.startsWith("AA1")) { - const factory = getAddr(failedEntry?.userOp.initCode); + const factory = failedEntry.factory; if (factory) { await this.reputationService.crashedHandleOps(factory); } diff --git a/packages/executor/src/services/BundlingService/relayers/classic.ts b/packages/executor/src/services/BundlingService/relayers/classic.ts index dbac4fb9..920e426d 100644 --- a/packages/executor/src/services/BundlingService/relayers/classic.ts +++ b/packages/executor/src/services/BundlingService/relayers/classic.ts @@ -1,7 +1,6 @@ import { providers } from "ethers"; import { Logger } from "types/lib"; import { PerChainMetrics } from "monitoring/lib"; -import { IEntryPoint__factory } from "types/lib/executor/contracts"; import { chainsWithoutEIP1559 } from "params/lib"; import { AccessList } from "ethers/lib/utils"; import { MempoolEntryStatus } from "types/lib/executor"; @@ -11,6 +10,7 @@ import { Bundle, NetworkConfig, StorageMap } from "../../../interfaces"; import { MempoolService } from "../../MempoolService"; import { estimateBundleGasLimit } from "../utils"; import { ReputationService } from "../../ReputationService"; +import { EntryPointService } from "../../EntryPointService"; import { BaseRelayer } from "./base"; export class ClassicRelayer extends BaseRelayer { @@ -20,6 +20,7 @@ export class ClassicRelayer extends BaseRelayer { provider: providers.JsonRpcProvider, config: Config, networkConfig: NetworkConfig, + entryPointService: EntryPointService, mempoolService: MempoolService, reputationService: ReputationService, metrics: PerChainMetrics | null @@ -30,6 +31,7 @@ export class ClassicRelayer extends BaseRelayer { provider, config, networkConfig, + entryPointService, mempoolService, reputationService, metrics @@ -48,14 +50,11 @@ export class ClassicRelayer extends BaseRelayer { await mutex.runExclusive(async (): Promise => { const beneficiary = await this.selectBeneficiary(relayer); const entryPoint = entries[0]!.entryPoint; - const entryPointContract = IEntryPoint__factory.connect( - entryPoint, - this.provider - ); - const txRequest = entryPointContract.interface.encodeFunctionData( - "handleOps", - [entries.map((entry) => entry.userOp), beneficiary] + const txRequest = this.entryPointService.encodeHandleOps( + entryPoint, + entries.map((entry) => entry.userOp), + beneficiary ); const transactionRequest: providers.TransactionRequest = { diff --git a/packages/executor/src/services/BundlingService/relayers/flashbots.ts b/packages/executor/src/services/BundlingService/relayers/flashbots.ts index 0ceef01f..49b2a144 100644 --- a/packages/executor/src/services/BundlingService/relayers/flashbots.ts +++ b/packages/executor/src/services/BundlingService/relayers/flashbots.ts @@ -1,7 +1,6 @@ import { providers } from "ethers"; import { PerChainMetrics } from "monitoring/lib"; import { Logger } from "types/lib"; -import { IEntryPoint__factory } from "types/lib/executor/contracts"; import { FlashbotsBundleProvider, FlashbotsBundleResolution, @@ -14,6 +13,7 @@ import { ReputationService } from "../../ReputationService"; import { estimateBundleGasLimit } from "../utils"; import { Relayer } from "../interfaces"; import { now } from "../../../utils"; +import { EntryPointService } from "../../EntryPointService"; import { BaseRelayer } from "./base"; export class FlashbotsRelayer extends BaseRelayer { @@ -25,6 +25,7 @@ export class FlashbotsRelayer extends BaseRelayer { provider: providers.JsonRpcProvider, config: Config, networkConfig: NetworkConfig, + entryPointService: EntryPointService, mempoolService: MempoolService, reputationService: ReputationService, metrics: PerChainMetrics | null @@ -35,6 +36,7 @@ export class FlashbotsRelayer extends BaseRelayer { provider, config, networkConfig, + entryPointService, mempoolService, reputationService, metrics @@ -54,14 +56,11 @@ export class FlashbotsRelayer extends BaseRelayer { await mutex.runExclusive(async (): Promise => { const beneficiary = await this.selectBeneficiary(relayer); const entryPoint = entries[0]!.entryPoint; - const entryPointContract = IEntryPoint__factory.connect( - entryPoint, - this.provider - ); - const txRequest = entryPointContract.interface.encodeFunctionData( - "handleOps", - [entries.map((entry) => entry.userOp), beneficiary] + const txRequest = this.entryPointService.encodeHandleOps( + entryPoint, + entries.map((entry) => entry.userOp), + beneficiary ); const transactionRequest: providers.TransactionRequest = { diff --git a/packages/executor/src/services/BundlingService/service.ts b/packages/executor/src/services/BundlingService/service.ts index bfff7b03..9333be1a 100644 --- a/packages/executor/src/services/BundlingService/service.ts +++ b/packages/executor/src/services/BundlingService/service.ts @@ -2,7 +2,6 @@ import { BigNumber, providers } from "ethers"; import { PerChainMetrics } from "monitoring/lib"; import { Logger } from "types/lib"; import { BundlingMode } from "types/lib/api/interfaces"; -import { IEntryPoint__factory } from "types/lib/executor/contracts"; import { MempoolEntryStatus, RelayingMode, @@ -21,8 +20,9 @@ import { MempoolService } from "../MempoolService"; import { ReputationService } from "../ReputationService"; import { UserOpValidationService } from "../UserOpValidation"; import { mergeStorageMap } from "../../utils/mergeStorageMap"; -import { getAddr, wait } from "../../utils"; +import { wait } from "../../utils"; import { MempoolEntry } from "../../entities/MempoolEntry"; +import { EntryPointService } from "../EntryPointService"; import { IRelayingMode } from "./interfaces"; import { ClassicRelayer, FlashbotsRelayer } from "./relayers"; @@ -39,6 +39,7 @@ export class BundlingService { constructor( private chainId: number, private provider: providers.JsonRpcProvider, + private entryPointService: EntryPointService, private mempoolService: MempoolService, private userOpValidationService: UserOpValidationService, private reputationService: ReputationService, @@ -58,6 +59,7 @@ export class BundlingService { this.provider, this.config, this.networkConfig, + this.entryPointService, this.mempoolService, this.reputationService, this.metrics @@ -69,6 +71,7 @@ export class BundlingService { this.provider, this.config, this.networkConfig, + this.entryPointService, this.mempoolService, this.reputationService, this.metrics @@ -156,8 +159,8 @@ export class BundlingService { } const entities = { - paymaster: getAddr(entry.userOp.paymasterAndData), - factory: getAddr(entry.userOp.initCode), + paymaster: entry.paymaster, + factory: entry.factory, }; for (const [title, entity] of Object.entries(entities)) { if (!entity) continue; @@ -220,15 +223,12 @@ export class BundlingService { } // TODO: add total gas cap - const entryPointContract = IEntryPoint__factory.connect( - entry.entryPoint, - this.provider - ); if (entities.paymaster) { const { paymaster } = entities; // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions if (!paymasterDeposit[paymaster]) { - paymasterDeposit[paymaster] = await entryPointContract.balanceOf( + paymasterDeposit[paymaster] = await this.entryPointService.balanceOf( + entry.entryPoint, paymaster ); } diff --git a/packages/executor/src/services/BundlingService/utils/getUserOpHashes.ts b/packages/executor/src/services/BundlingService/utils/getUserOpHashes.ts deleted file mode 100644 index dceaf043..00000000 --- a/packages/executor/src/services/BundlingService/utils/getUserOpHashes.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { IEntryPoint } from "types/lib/executor/contracts"; -import { providers } from "ethers"; -import { IMulticall3__factory } from "types/lib/executor/contracts/factories/IMulticall3__factory"; -import { MempoolEntry } from "../../../entities/MempoolEntry"; - -/** - * returns userop hashes - * @param entryPoint address of the entrypoint - * @param userOps mempool entries - * @param provider rpc provider - * @param multicall address of the multicall3 contract - */ -export async function getUserOpHashes( - entryPoint: IEntryPoint, - userOps: MempoolEntry[], - provider: providers.JsonRpcProvider, - multicall: string -): Promise { - if (userOps.length === 1) { - return [await entryPoint.callStatic.getUserOpHash(userOps[0].userOp)]; - } - try { - const multicallContract = IMulticall3__factory.connect(multicall, provider); - const callDatas = userOps.map((op) => - entryPoint.interface.encodeFunctionData("getUserOpHash", [op.userOp]) - ); - const result = await multicallContract.callStatic.aggregate3( - callDatas.map((data) => ({ - target: entryPoint.address, - callData: data, - allowFailure: false, - })) - ); - return result.map((call) => call.returnData); - } catch (err) { - return []; - } -} diff --git a/packages/executor/src/services/BundlingService/utils/index.ts b/packages/executor/src/services/BundlingService/utils/index.ts index 9a2ed7fa..f413afd2 100644 --- a/packages/executor/src/services/BundlingService/utils/index.ts +++ b/packages/executor/src/services/BundlingService/utils/index.ts @@ -1,2 +1 @@ -export * from "./getUserOpHashes"; export * from "./estimateBundleGasLimit"; diff --git a/packages/executor/src/services/EntryPointService/constants.ts b/packages/executor/src/services/EntryPointService/constants.ts new file mode 100644 index 00000000..8f38b9d5 --- /dev/null +++ b/packages/executor/src/services/EntryPointService/constants.ts @@ -0,0 +1,9 @@ +export const DefaultGasOverheads = { + fixed: 21000, + perUserOp: 18300, + perUserOpWord: 4, + zeroByte: 4, + nonZeroByte: 16, + bundleSize: 1, + sigSize: 65, +}; \ No newline at end of file diff --git a/packages/executor/src/services/EventsService.ts b/packages/executor/src/services/EntryPointService/eventListeners/0.0.7.ts similarity index 59% rename from packages/executor/src/services/EventsService.ts rename to packages/executor/src/services/EntryPointService/eventListeners/0.0.7.ts index a2d1d254..a9ae4fec 100644 --- a/packages/executor/src/services/EventsService.ts +++ b/packages/executor/src/services/EntryPointService/eventListeners/0.0.7.ts @@ -1,44 +1,35 @@ -import { providers } from "ethers"; -import { IDbController, Logger } from "types/lib"; -import { IEntryPoint } from "types/lib/executor/contracts"; -import { IEntryPoint__factory } from "types/lib/executor/contracts/factories"; +import { IDbController } from "types/lib"; import { AccountDeployedEvent, SignatureAggregatorChangedEvent, UserOperationEventEvent, -} from "types/lib/executor/contracts/EntryPoint"; -import { TypedEvent } from "types/lib/executor/contracts/common"; -import { ReputationService } from "./ReputationService"; + EntryPoint, +} from "types/lib/contracts/EPv7/core/EntryPoint"; +import { TypedEvent } from "types/lib/contracts/common"; +import { ReputationService } from "../../ReputationService"; -export class EventsService { - private entryPoints: IEntryPoint[] = []; - private lastBlockPerEntryPoint: { - [address: string]: number; - } = {}; +export class EntryPointV7EventsService { + private lastBlock = 0; private LAST_BLOCK_KEY: string; constructor( + private entryPoint: string, private chainId: number, - private provider: providers.JsonRpcProvider, - private logger: Logger, + private contract: EntryPoint, private reputationService: ReputationService, - private entryPointAddrs: string[], private db: IDbController ) { - this.LAST_BLOCK_KEY = `${this.chainId}:LAST_BLOCK_PER_ENTRY_POINTS`; - for (const entryPoint of this.entryPointAddrs) { - const contract = IEntryPoint__factory.connect(entryPoint, this.provider); - this.entryPoints.push(contract); - } + this.LAST_BLOCK_KEY = `${this.chainId}:LAST_PARSED_BLOCK:${this.entryPoint}`; } initEventListener(): void { - for (const contract of this.entryPoints) { - contract.on(contract.filters.UserOperationEvent(), async (...args) => { + this.contract.on( + this.contract.filters.UserOperationEvent(), + async (...args) => { const ev = args[args.length - 1]; await this.handleEvent(ev as any); - }); - } + } + ); } /** @@ -46,24 +37,18 @@ export class EventsService { */ async handlePastEvents(): Promise { await this.fetchLastBlockPerEntryPoints(); - for (const contract of this.entryPoints) { - const { address } = contract; - const events = await contract.queryFilter( - { address: contract.address }, - this.lastBlockPerEntryPoint[address] - ); - for (const ev of events) { - await this.handleEvent(ev); - } - if (events.length > 0) { - const lastEvent = events[events.length - 1]; - const blockNum = lastEvent!.blockNumber; - if ( - !(this.lastBlockPerEntryPoint[address] ?? 0) || - Number(this.lastBlockPerEntryPoint[address]) < blockNum - ) { - this.lastBlockPerEntryPoint[address] = blockNum; - } + const events = await this.contract.queryFilter( + { address: this.entryPoint }, + this.lastBlock + ); + for (const ev of events) { + await this.handleEvent(ev); + } + if (events.length > 0) { + const lastEvent = events[events.length - 1]; + const blockNum = lastEvent!.blockNumber; + if (!this.lastBlock || Number(this.lastBlock) < blockNum) { + this.lastBlock = blockNum; } } await this.saveLastBlockPerEntryPoints(); @@ -129,15 +114,15 @@ export class EventsService { } private async saveLastBlockPerEntryPoints(): Promise { - await this.db.put(this.LAST_BLOCK_KEY, this.lastBlockPerEntryPoint); + await this.db.put(this.LAST_BLOCK_KEY, this.lastBlock); } private async fetchLastBlockPerEntryPoints(): Promise { const entry = await this.db - .get(this.LAST_BLOCK_KEY) + .get(this.LAST_BLOCK_KEY) .catch(() => null); - if (entry) { - this.lastBlockPerEntryPoint = entry; + if (entry != null) { + this.lastBlock = entry; } } } diff --git a/packages/executor/src/services/EntryPointService/eventListeners/base.ts b/packages/executor/src/services/EntryPointService/eventListeners/base.ts new file mode 100644 index 00000000..5022d3a2 --- /dev/null +++ b/packages/executor/src/services/EntryPointService/eventListeners/base.ts @@ -0,0 +1,3 @@ +export interface IEntryPointEventsService { + initEventListener(): void; +} diff --git a/packages/executor/src/services/EntryPointService/eventListeners/index.ts b/packages/executor/src/services/EntryPointService/eventListeners/index.ts new file mode 100644 index 00000000..757a9986 --- /dev/null +++ b/packages/executor/src/services/EntryPointService/eventListeners/index.ts @@ -0,0 +1,2 @@ +export * from "./0.0.7"; +export * from "./base"; diff --git a/packages/executor/src/services/EntryPointService/index.ts b/packages/executor/src/services/EntryPointService/index.ts new file mode 100644 index 00000000..6261f896 --- /dev/null +++ b/packages/executor/src/services/EntryPointService/index.ts @@ -0,0 +1 @@ +export * from "./service"; diff --git a/packages/executor/src/services/EntryPointService/interfaces.ts b/packages/executor/src/services/EntryPointService/interfaces.ts new file mode 100644 index 00000000..2f91a620 --- /dev/null +++ b/packages/executor/src/services/EntryPointService/interfaces.ts @@ -0,0 +1,11 @@ +export enum EntryPointVersion { + SIX = 6, + SEVEN = 7, + UNKNOWN = 0, +} + +export type StateOverrides = { + [address: string]: { + code: string + } +} \ No newline at end of file diff --git a/packages/executor/src/services/EntryPointService/service.ts b/packages/executor/src/services/EntryPointService/service.ts new file mode 100644 index 00000000..a87d7fbe --- /dev/null +++ b/packages/executor/src/services/EntryPointService/service.ts @@ -0,0 +1,229 @@ +/* eslint-disable @typescript-eslint/strict-boolean-expressions */ +import { BigNumber, providers } from "ethers"; +import { + UserOperation +} from "types/lib/contracts/UserOperation"; +import { IDbController, Logger } from "types/lib"; +import { + UserOperationByHashResponse, + UserOperationReceipt, +} from "types/lib/api/interfaces"; +import { EntryPoint as EntryPointV7Contract } from "types/lib/contracts/EPv7/core/EntryPoint"; +import RpcError from "types/lib/api/errors/rpc-error"; +import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; +import { NetworkConfig, UserOpValidationResult } from "../../interfaces"; +import { ReputationService } from "../ReputationService"; +import { + EntryPointV7Service, + IEntryPointService, +} from "./versions"; +import { EntryPointVersion } from "./interfaces"; +import { + EntryPointV7EventsService, + IEntryPointEventsService, +} from "./eventListeners"; + +export class EntryPointService { + private entryPoints: { + [address: string]: IEntryPointService; + } = {}; + private eventsService: { + [address: string]: IEntryPointEventsService; + } = {}; + + constructor( + private chainId: number, + private networkConfig: NetworkConfig, + private provider: providers.JsonRpcProvider, + private reputationService: ReputationService, + private db: IDbController, + private logger: Logger + ) { + for (const addr of networkConfig.entryPoints) { + const address = addr.toLowerCase(); + this.entryPoints[address] = new EntryPointV7Service( + addr, + this.networkConfig, + this.provider, + this.logger + ); + this.eventsService[address] = new EntryPointV7EventsService( + addr, + this.chainId, + this.entryPoints[address].contract as EntryPointV7Contract, + this.reputationService, + this.db + ); + this.eventsService[address].initEventListener(); + } + } + + /*******************/ + /** View functions */ + + async getUserOperationByHash( + userOpHash: string + ): Promise { + if (!userOpHash) { + throw new RpcError( + "Missing/invalid userOpHash", + RpcErrorCodes.INVALID_USEROP + ); + } + for (const [_, entryPoint] of Object.entries(this.entryPoints)) { + try { + const res = entryPoint.getUserOperationByHash(userOpHash); + if (res) return res; + } catch (err) { + /* empty */ + } + } + return null; + } + + async getUserOperationReceipt( + userOpHash: string + ): Promise { + if (!userOpHash) { + throw new RpcError( + "Missing/invalid userOpHash", + RpcErrorCodes.INVALID_USEROP + ); + } + for (const [_, entryPoint] of Object.entries(this.entryPoints)) { + try { + const res = entryPoint.getUserOperationReceipt(userOpHash); + if (res) return res; + } catch (err) { + /* empty */ + } + } + return null; + } + + async getUserOpHash( + entryPoint: string, + userOp: UserOperation + ): Promise { + return await this.entryPoints[ + entryPoint.toLowerCase() + ].getUserOperationHash(userOp); + } + + async balanceOf(entryPoint: string, entity: string): Promise { + return await this.entryPoints[entryPoint.toLowerCase()].contract.balanceOf( + entity + ); + } + + async simulateHandleOp( + entryPoint: string, + userOp: UserOperation + ): Promise { + return await this.entryPoints[entryPoint.toLowerCase()].simulateHandleOp( + userOp + ); + } + + async simulateValidation( + entryPoint: string, + userOp: UserOperation + ): Promise { + return await this.entryPoints[entryPoint.toLowerCase()].simulateValidation( + userOp + ); + } + + /********************/ + /** Write functions */ + + encodeHandleOps( + entryPoint: string, + userOps: UserOperation[], + beneficiary: string + ): string { + return this.entryPoints[entryPoint.toLowerCase()].encodeHandleOps( + userOps, + beneficiary + ); + } + + encodeSimulateHandleOp( + entryPoint: string, + userOp: UserOperation, + target: string, + targetCallData: string + ): any { + return this.entryPoints[entryPoint.toLowerCase()].encodeSimulateHandleOp( + userOp, + target, + targetCallData + ); + } + + encodeSimulateValidation( + entryPoint: string, + userOp: UserOperation + ): any { + return this.entryPoints[entryPoint.toLowerCase()].encodeSimulateValidation( + userOp + ); + } + + /**********************/ + /** Utility functions */ + isEntryPointSupported(entryPoint: string): boolean { + return this.entryPoints[entryPoint.toLowerCase()] != undefined; + } + + getSupportedEntryPoints(): string[] { + return Object.keys(this.entryPoints); + } + + getEntryPointVersion(entryPoint: string): EntryPointVersion { + if (!this.isEntryPointSupported(entryPoint)) { + return EntryPointVersion.UNKNOWN; + } + return EntryPointVersion.SEVEN; + } + + getEntryPoint(entryPoint: string): IEntryPointService { + return this.entryPoints[entryPoint.toLowerCase()]; + } + + calcPreverificationGas( + entryPoint: string, + userOp: UserOperation, + forSignature = true + ): number { + return this.entryPoints[entryPoint.toLowerCase()].calcPreverificationGas( + userOp, + forSignature + ); + } + + parseValidationResult( + entryPoint: string, + userOp: UserOperation, + data: string + ): UserOpValidationResult { + return this.entryPoints[entryPoint.toLowerCase()].parseValidationResult( + userOp, + data + ); + } + + getFactory( + entryPoint: string, + userOp: UserOperation + ): string | undefined { + return userOp.factory?.toLowerCase(); + } + + getPaymaster( + entryPoint: string, + userOp: UserOperation + ): string | undefined { + return userOp.paymaster?.toLowerCase(); + } +} diff --git a/packages/executor/src/services/EntryPointService/utils/decodeRevertReason.ts b/packages/executor/src/services/EntryPointService/utils/decodeRevertReason.ts new file mode 100644 index 00000000..a55fd4e6 --- /dev/null +++ b/packages/executor/src/services/EntryPointService/utils/decodeRevertReason.ts @@ -0,0 +1,71 @@ +import { Interface } from '@ethersproject/abi' +import { ethers } from 'ethers' +import { EntryPointSimulations__factory } from 'types/lib/contracts/EPv7/factories/core' +import { SimpleAccount__factory } from 'types/lib/contracts/EPv7/factories/samples' +import { IPaymaster__factory } from 'types/lib/contracts/EPv7/factories/interfaces' + +const decodeRevertReasonContracts = new Interface([ + ...EntryPointSimulations__factory.createInterface().fragments, + ...IPaymaster__factory.createInterface().fragments, + ...SimpleAccount__factory.createInterface().fragments +].filter((f: any) => f.type === 'error')) + +/** + * helper to decode revert data into its string representation + * @param data revert data or an exception thrown by eth_call + * @param nullIfNoMatch true to return null if not found. otherwise, return input data as-is + */ +export function decodeRevertReason (data: string | Error, nullIfNoMatch = true): string | null { + if (typeof data !== 'string') { + const err = data as any + data = (err.data?.data ?? err.data ?? err.error.data) as string + } + const methodSig = data.slice(0, 10) + const dataParams = '0x' + data.slice(10) + + try { + // would be nice to add these to above "decodeRevertReasonContracts", but we can't add Error(string) to xface... + if (methodSig === '0x08c379a0') { + const [err] = ethers.utils.defaultAbiCoder.decode(['string'], dataParams) + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + return `Error(${err})` + } else if (methodSig === '0x4e487b71') { + const [code] = ethers.utils.defaultAbiCoder.decode(['uint256'], dataParams) + return `Panic(${panicCodes[code] ?? code} + ')` + } + const err = decodeRevertReasonContracts.parseError(data) + // treat any error "bytes" argument as possible error to decode (e.g. FailedOpWithRevert, PostOpReverted) + const args = err.args.map((arg: any, index) => { + switch (err.errorFragment.inputs[index].type) { + case 'bytes' : return decodeRevertReason(arg, false) + case 'string': return `"${(arg as string)}"` + default: return arg + } + }) + return `${err.name}(${args.join(',')})` + } catch (e) { + // throw new Error('unsupported errorSig ' + data) + if (!nullIfNoMatch) { + return data + } + return null + } +} + +// not sure why ethers fail to decode revert reasons, not even "Error()" (and obviously, not custom errors) +export function rethrowWithRevertReason (e: Error): never { + throw new Error(decodeRevertReason(e, false) as any) +} + +const panicCodes: { [key: number]: string } = { + // from https://docs.soliditylang.org/en/v0.8.0/control-structures.html + 0x01: 'assert(false)', + 0x11: 'arithmetic overflow/underflow', + 0x12: 'divide by zero', + 0x21: 'invalid enum value', + 0x22: 'storage byte array that is incorrectly encoded', + 0x31: '.pop() on an empty array.', + 0x32: 'array sout-of-bounds or negative index', + 0x41: 'memory overflow', + 0x51: 'zero-initialized variable of internal function type' +} diff --git a/packages/executor/src/services/EntryPointService/utils/index.ts b/packages/executor/src/services/EntryPointService/utils/index.ts new file mode 100644 index 00000000..05e4d534 --- /dev/null +++ b/packages/executor/src/services/EntryPointService/utils/index.ts @@ -0,0 +1 @@ +export * from "./packedUserOpUtils"; diff --git a/packages/executor/src/services/EntryPointService/utils/packedUserOpUtils.ts b/packages/executor/src/services/EntryPointService/utils/packedUserOpUtils.ts new file mode 100644 index 00000000..1670dc8a --- /dev/null +++ b/packages/executor/src/services/EntryPointService/utils/packedUserOpUtils.ts @@ -0,0 +1,226 @@ +import { BigNumberish, BigNumber, BytesLike, ethers } from "ethers"; +import { + hexZeroPad, + hexDataLength, + hexDataSlice, + hexConcat, + defaultAbiCoder, + keccak256, +} from "ethers/lib/utils"; +import { AddressZero } from "params/lib"; +import { UserOperation, PackedUserOperation } from "types/lib/contracts/UserOperation"; + +export function packAccountGasLimits (validationGasLimit: BigNumberish, callGasLimit: BigNumberish): string { + return packUint(validationGasLimit, callGasLimit) +} + +export function unpackAccountGasLimits (accountGasLimits: BytesLike): { + verificationGasLimit: BigNumber + callGasLimit: BigNumber +} { + const [verificationGasLimit, callGasLimit] = unpackUint(accountGasLimits) + return { verificationGasLimit, callGasLimit } +} + +export function packUint (high128: BigNumberish, low128: BigNumberish): string { + return hexZeroPad(BigNumber.from(high128).shl(128).add(low128).toHexString(), 32) +} + +export function unpackUint (packed: BytesLike): [high128: BigNumber, low128: BigNumber] { + const packedNumber: BigNumber = BigNumber.from(packed) + return [packedNumber.shr(128), packedNumber.and(BigNumber.from(1).shl(128).sub(1))] +} + +export function packPaymasterData (paymaster: string, paymasterVerificationGasLimit: BigNumberish, postOpGasLimit: BigNumberish, paymasterData?: BytesLike): BytesLike { + return ethers.utils.hexConcat([ + paymaster, + packUint(paymasterVerificationGasLimit, postOpGasLimit), + paymasterData ?? '0x' + ]) +} + +export interface ValidationData { + aggregator: string + validAfter: number + validUntil: number +} + +export const maxUint48 = (2 ** 48) - 1 +export const SIG_VALIDATION_FAILED = hexZeroPad('0x01', 20) + +/** + * parse validationData as returned from validateUserOp or validatePaymasterUserOp into ValidationData struct + * @param validationData + */ +export function parseValidationData (validationData: BigNumberish): ValidationData { + const data = hexZeroPad(BigNumber.from(validationData).toHexString(), 32) + + // string offsets start from left (msb) + const aggregator = hexDataSlice(data, 32 - 20) + let validUntil = parseInt(hexDataSlice(data, 32 - 26, 32 - 20)) + if (validUntil === 0) validUntil = maxUint48 + const validAfter = parseInt(hexDataSlice(data, 0, 6)) + + return { + aggregator, + validAfter, + validUntil + } +} + +export function mergeValidationDataValues (accountValidationData: BigNumberish, paymasterValidationData: BigNumberish): ValidationData { + return mergeValidationData( + parseValidationData(accountValidationData), + parseValidationData(paymasterValidationData) + ) +} + +/** + * merge validationData structure returned by paymaster and account + * @param accountValidationData returned from validateUserOp + * @param paymasterValidationData returned from validatePaymasterUserOp + */ +export function mergeValidationData (accountValidationData: ValidationData, paymasterValidationData: ValidationData): ValidationData { + return { + aggregator: paymasterValidationData.aggregator !== AddressZero ? SIG_VALIDATION_FAILED : accountValidationData.aggregator, + validAfter: Math.max(accountValidationData.validAfter, paymasterValidationData.validAfter), + validUntil: Math.min(accountValidationData.validUntil, paymasterValidationData.validUntil) + } +} + +export function packValidationData (validationData: ValidationData): BigNumber { + return BigNumber.from(validationData.validAfter ?? 0).shl(48) + .add(validationData.validUntil ?? 0).shl(160) + .add(validationData.aggregator) +} + +export function unpackPaymasterAndData (paymasterAndData: BytesLike): { + paymaster: string + paymasterVerificationGas: BigNumber + postOpGasLimit: BigNumber + paymasterData: BytesLike +} | null { + if (paymasterAndData.length <= 2) return null + if (hexDataLength(paymasterAndData) < 52) { + // if length is non-zero, then must at least host paymaster address and gas-limits + throw new Error(`invalid PaymasterAndData: ${paymasterAndData as string}`) + } + const [paymasterVerificationGas, postOpGasLimit] = unpackUint(hexDataSlice(paymasterAndData, 20, 52)) + return { + paymaster: hexDataSlice(paymasterAndData, 0, 20), + paymasterVerificationGas, + postOpGasLimit, + paymasterData: hexDataSlice(paymasterAndData, 52) + } +} + +export function packUserOp (op: UserOperation): PackedUserOperation { + let paymasterAndData: BytesLike + if (op.paymaster == null) { + paymasterAndData = '0x' + } else { + if (op.paymasterVerificationGasLimit == null || op.paymasterPostOpGasLimit == null) { + throw new Error('paymaster with no gas limits') + } + paymasterAndData = packPaymasterData(op.paymaster, op.paymasterVerificationGasLimit, op.paymasterPostOpGasLimit, op.paymasterData) + } + return { + sender: op.sender, + nonce: BigNumber.from(op.nonce).toHexString(), + initCode: op.factory == null ? '0x' : hexConcat([op.factory, op.factoryData ?? '']), + callData: op.callData, + accountGasLimits: packUint(op.verificationGasLimit, op.callGasLimit), + preVerificationGas: BigNumber.from(op.preVerificationGas).toHexString(), + gasFees: packUint(op.maxPriorityFeePerGas, op.maxFeePerGas), + paymasterAndData, + signature: op.signature + } +} + +export function unpackUserOp (packed: PackedUserOperation): UserOperation { + const [verificationGasLimit, callGasLimit] = unpackUint(packed.accountGasLimits) + const [maxPriorityFeePerGas, maxFeePerGas] = unpackUint(packed.gasFees) + + let ret: UserOperation = { + sender: packed.sender, + nonce: packed.nonce, + callData: packed.callData, + preVerificationGas: packed.preVerificationGas, + verificationGasLimit, + callGasLimit, + maxFeePerGas, + maxPriorityFeePerGas, + signature: packed.signature + } + if (packed.initCode != null && packed.initCode.length > 2) { + const factory = hexDataSlice(packed.initCode, 0, 20) + const factoryData = hexDataSlice(packed.initCode, 20) + ret = { + ...ret, + factory, + factoryData + } + } + const pmData = unpackPaymasterAndData(packed.paymasterAndData) + if (pmData != null) { + ret = { + ...ret, + paymaster: pmData.paymaster, + paymasterVerificationGasLimit: pmData.paymasterVerificationGas, + paymasterPostOpGasLimit: pmData.postOpGasLimit, + paymasterData: pmData.paymasterData + } + } + return ret +} + +/** + * abi-encode the userOperation + * @param op a PackedUserOp + * @param forSignature "true" if the hash is needed to calculate the getUserOpHash() + * "false" to pack entire UserOp, for calculating the calldata cost of putting it on-chain. + */ +export function encodeUserOp (op1: PackedUserOperation | UserOperation, forSignature = true): string { + // if "op" is unpacked UserOperation, then pack it first, before we ABI-encode it. + let op: PackedUserOperation + if ('callGasLimit' in op1) { + op = packUserOp(op1) + } else { + op = op1 + } + if (forSignature) { + return defaultAbiCoder.encode( + ['address', 'uint256', 'bytes32', 'bytes32', + 'bytes32', 'uint256', 'bytes32', + 'bytes32'], + [op.sender, op.nonce, keccak256(op.initCode), keccak256(op.callData), + op.accountGasLimits, op.preVerificationGas, op.gasFees, + keccak256(op.paymasterAndData)]) + } else { + // for the purpose of calculating gas cost encode also signature (and no keccak of bytes) + return defaultAbiCoder.encode( + ['address', 'uint256', 'bytes', 'bytes', + 'bytes32', 'uint256', 'bytes32', + 'bytes', 'bytes'], + [op.sender, op.nonce, op.initCode, op.callData, + op.accountGasLimits, op.preVerificationGas, op.gasFees, + op.paymasterAndData, op.signature]) + } +} + +/** + * calculate the userOpHash of a given userOperation. + * The userOpHash is a hash of all UserOperation fields, except the "signature" field. + * The entryPoint uses this value in the emitted UserOperationEvent. + * A wallet may use this value as the hash to sign (the SampleWallet uses this method) + * @param op + * @param entryPoint + * @param chainId + */ +export function getUserOpHash (op: UserOperation, entryPoint: string, chainId: number): string { + const userOpHash = keccak256(encodeUserOp(op, true)) + const enc = defaultAbiCoder.encode( + ['bytes32', 'address', 'uint256'], + [userOpHash, entryPoint, chainId]) + return keccak256(enc) +} diff --git a/packages/executor/src/services/EntryPointService/versions/0.0.7.ts b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts new file mode 100644 index 00000000..a5986f8d --- /dev/null +++ b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts @@ -0,0 +1,350 @@ +import { + EntryPoint, + UserOperationEventEvent +} from "types/lib/contracts/EPv7/core/EntryPoint"; +import { _deployedBytecode } from "types/lib/contracts/EPv7/factories/core/EntryPointSimulations__factory"; +import { IStakeManager } from "types/lib/contracts/EPv7/core/EntryPointSimulations"; +import { + EntryPoint__factory +} from "types/lib/contracts/EPv7/factories/core"; +import { BigNumber, providers } from "ethers"; +import RpcError from "types/lib/api/errors/rpc-error"; +import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; +import { PackedUserOperation, UserOperation } from "types/lib/contracts/UserOperation"; +import { AddressZero, BytesZero } from "params/lib"; +import { StakeManager__factory } from "types/lib/contracts/EPv7/factories/core"; +import { IEntryPointSimulations } from "types/lib/contracts/EPv7/interfaces"; +import { IEntryPointSimulations__factory } from "types/lib/contracts/EPv7/factories/interfaces"; +import { + hexlify, + arrayify, +} from "ethers/lib/utils"; +import { Logger } from "types/lib"; +import { + UserOperationReceipt, + UserOperationByHashResponse, +} from "types/lib/api/interfaces"; +import { encodeUserOp, mergeValidationDataValues, packUserOp, unpackUserOp } from "../utils"; +import { + Log, + NetworkConfig, + StakeInfo, + UserOpValidationResult, +} from "../../../interfaces"; +import { deepHexlify } from "../../../utils"; +import { DefaultGasOverheads } from "../constants"; +import { IEntryPointService } from "./base"; +import { StateOverrides } from "../interfaces"; +import { decodeRevertReason } from "../utils/decodeRevertReason"; + +const entryPointSimulations = IEntryPointSimulations__factory.createInterface() + +export class EntryPointV7Service implements IEntryPointService { + contract: EntryPoint; + + constructor( + public address: string, + private networkConfig: NetworkConfig, + private provider: providers.JsonRpcProvider, + private logger: Logger + ) { + this.contract = EntryPoint__factory.connect(address, provider); + } + + /*******************/ + /** View functions */ + + async getUserOperationHash(userOp: UserOperation): Promise { + return await this.contract.getUserOpHash(packUserOp(userOp)); + } + + async simulateHandleOp(userOp: UserOperation): Promise { + const [data, stateOverrides] = this.encodeSimulateHandleOp(userOp, AddressZero, BytesZero); + const tx: providers.TransactionRequest = { + to: this.address, + data + } + try { + const simulationResult = await this.provider.send('eth_call', [tx, 'latest', stateOverrides]) + const res = entryPointSimulations.decodeFunctionResult('simulateHandleOp', simulationResult) + return res[0] + } catch (error: any) { + const err = decodeRevertReason(error) + if (err != null) { + throw new Error(err) + } + throw error + } + } + + async simulateValidation(userOp: UserOperation): Promise { + const [data, stateOverrides] = this.encodeSimulateValidation(userOp); + const tx: providers.TransactionRequest = { + to: this.address, + data + } + try { + const errorResult = await this.provider + .send('eth_call', [tx, "latest", stateOverrides]) + .catch((err) => this.nonGethErrorHandler(err)); + return this.parseValidationResult(userOp, errorResult); + } catch (err: any) { + const decodedError = decodeRevertReason(err) + if (decodedError != null) { + throw new RpcError(decodedError, RpcErrorCodes.VALIDATION_FAILED) + } + } + } + + getDepositInfo( + address: string + ): Promise { + return StakeManager__factory.connect( + this.address, + this.provider + ).getDepositInfo(address); + } + + /******************************************/ + /** Write functions (return encoded data) */ + + encodeHandleOps(userOps: UserOperation[], beneficiary: string): string { + return this.contract.interface.encodeFunctionData("handleOps", [ + userOps.map(packUserOp), + beneficiary, + ]); + } + + encodeSimulateHandleOp( + userOp: UserOperation, + target: string, + targetCallData: string + ): [string, StateOverrides] { + return [ + entryPointSimulations.encodeFunctionData( + "simulateHandleOp", + [packUserOp(userOp), target, targetCallData] + ), + { + [this.address]: { + code: _deployedBytecode + } + } + ] + } + + encodeSimulateValidation(userOp: UserOperation): [string, StateOverrides] { + return [ + entryPointSimulations.encodeFunctionData( + "simulateValidation", + [packUserOp(userOp)] + ), + { + [this.address]: { + code: _deployedBytecode + } + } + ] + } + + /******************/ + /** UserOp Events */ + + async getUserOperationEvent( + userOpHash: string + ): Promise { + let event: UserOperationEventEvent[] = []; + try { + const blockNumber = await this.provider.getBlockNumber(); + let fromBlockNumber = blockNumber - this.networkConfig.receiptLookupRange; + // underflow check + if (fromBlockNumber < 0) { + fromBlockNumber = 0; + } + event = await this.contract.queryFilter( + this.contract.filters.UserOperationEvent(userOpHash), + fromBlockNumber + ); + // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions + if (event[0]) { + return event[0]; + } + } catch (err) { + this.logger.error(err); + throw new RpcError( + "Missing/invalid userOpHash", + RpcErrorCodes.METHOD_NOT_FOUND + ); + } + return null; + } + + async getUserOperationReceipt( + hash: string + ): Promise { + const event = await this.getUserOperationEvent(hash); + if (!event) { + return null; + } + const receipt = await event.getTransactionReceipt(); + const logs = this.filterLogs(event, receipt.logs); + return deepHexlify({ + userOpHash: hash, + sender: event.args.sender, + nonce: event.args.nonce, + actualGasCost: event.args.actualGasCost, + actualGasUsed: event.args.actualGasUsed, + success: event.args.success, + logs, + receipt, + }); + } + + async getUserOperationByHash( + hash: string + ): Promise { + const event = await this.getUserOperationEvent(hash); + if (!event) { + return null; + } + const tx = await event.getTransaction(); + if (tx.to !== this.address) { + throw new Error("unable to parse transaction"); + } + const parsed = this.contract.interface.parseTransaction(tx); + const ops: PackedUserOperation[] = parsed?.args.ops; + if (ops.length == 0) { + throw new Error("failed to parse transaction"); + } + const op = ops.find( + (o) => + o.sender === event.args.sender && + BigNumber.from(o.nonce).eq(event.args.nonce) + ); + if (!op) { + throw new Error("unable to find userOp in transaction"); + } + + return deepHexlify({ + userOperation: unpackUserOp(op), + entryPoint: this.address, + transactionHash: tx.hash, + blockHash: tx.blockHash ?? "", + blockNumber: tx.blockNumber ?? 0, + }); + } + + /**************/ + /** Utilities */ + + calcPreverificationGas( + userOp: Partial, + forSignature = true + ): number { + const ov = { ...DefaultGasOverheads }; + const packedUserOp = packUserOp({ + preVerificationGas: 21000, + signature: hexlify(Buffer.alloc(ov.sigSize, 1)), + ...userOp, + } as any); + let encoded: string = encodeUserOp(packedUserOp, forSignature); + const packed = arrayify(encoded); + const lengthInWord = (packed.length + 31) / 32; + const callDataCost = packed + .map((x) => (x === 0 ? ov.zeroByte : ov.nonZeroByte)) + .reduce((sum, x) => sum + x); + const ret = Math.round( + callDataCost + + ov.fixed / ov.bundleSize + + ov.perUserOp + + ov.perUserOpWord * lengthInWord + ); + return Math.max(ret + this.networkConfig.pvgMarkup, 0); + } + + parseValidationResult( + userOp: UserOperation, + data: string + ): UserOpValidationResult { + const [decoded] = entryPointSimulations.decodeFunctionResult("simulateValidation", data) as IEntryPointSimulations.ValidationResultStructOutput[]; + const mergedValidation = mergeValidationDataValues( + decoded.returnInfo.accountValidationData, + decoded.returnInfo.paymasterValidationData + ); + function fillEntity (addr: string | undefined, info: IStakeManager.StakeInfoStructOutput): StakeInfo | undefined { + if (addr == null || addr === AddressZero) return undefined + return { + addr, + stake: info.stake, + unstakeDelaySec: info.unstakeDelaySec + } + } + + const returnInfo = { + sigFailed: mergedValidation.aggregator !== AddressZero, + validUntil: mergedValidation.validUntil, + validAfter: mergedValidation.validAfter, + preOpGas: decoded.returnInfo.preOpGas, + prefund: decoded.returnInfo.prefund + } + return { + returnInfo, + senderInfo: fillEntity(userOp.sender, decoded.senderInfo) as StakeInfo, + paymasterInfo: fillEntity(userOp.paymaster, decoded.paymasterInfo), + factoryInfo: fillEntity(userOp.factory, decoded.factoryInfo), + aggregatorInfo: fillEntity(decoded.aggregatorInfo.aggregator, decoded.aggregatorInfo.stakeInfo) + } + } + + private nonGethErrorHandler(errorResult: any): any { + try { + let { error } = errorResult; + if (error && error.error) { + error = error.error; + } + if (error && error.code == -32015 && error.data.startsWith("Reverted ")) { + /** NETHERMIND */ + const parsed = this.contract.interface.parseError(error.data.slice(9)); + errorResult = { + ...parsed, + errorName: parsed.name, + errorArgs: parsed.args, + }; + } else if (error && error.code == -32603 && error.data) { + /** BIFROST */ + const parsed = this.contract.interface.parseError(error.data); + errorResult = { + ...parsed, + errorName: parsed.name, + errorArgs: parsed.args, + }; + } + } catch (err) { + /* empty */ + } + throw errorResult; + } + + private filterLogs(userOpEvent: UserOperationEventEvent, logs: Log[]): Log[] { + let startIndex = -1; + let endIndex = -1; + logs.forEach((log, index) => { + if (log?.topics[0] === userOpEvent.topics[0]) { + // process UserOperationEvent + if (log.topics[1] === userOpEvent.topics[1]) { + // it's our userOpHash. save as end of logs array + endIndex = index; + } else { + // it's a different hash. remember it as beginning index, but only if we didn't find our end index yet. + if (endIndex === -1) { + startIndex = index; + } + } + } + }); + if (endIndex === -1) { + throw new Error("fatal: no UserOperationEvent in logs"); + } + return logs.slice(startIndex + 1, endIndex); + } +} diff --git a/packages/executor/src/services/EntryPointService/versions/base.ts b/packages/executor/src/services/EntryPointService/versions/base.ts new file mode 100644 index 00000000..2c0e5153 --- /dev/null +++ b/packages/executor/src/services/EntryPointService/versions/base.ts @@ -0,0 +1,49 @@ +import { IEntryPoint as IEntryPointV6 } from "types/lib/contracts/EPv6"; +import { EntryPoint as IEntryPointV7 } from "types/lib/contracts/EPv7/core/EntryPoint"; +import { UserOperation } from "types/lib/contracts/UserOperation"; +import { IStakeManager } from "types/lib/contracts/EPv7/core/StakeManager"; +import { UserOperationEventEvent } from "types/lib/contracts/EPv6/EntryPoint"; +import { + UserOperationByHashResponse, + UserOperationReceipt, +} from "types/lib/api/interfaces"; +import { UserOpValidationResult } from "../../../interfaces"; + +export interface IEntryPointService { + readonly contract: IEntryPointV6 | IEntryPointV7; + readonly address: string; + + calcPreverificationGas( + userOp: Partial, + forSignature: boolean + ): number; + + getUserOperationHash(userOp: UserOperation): Promise; + getDepositInfo( + address: string + ): Promise; + + simulateHandleOp(userOp: UserOperation): Promise; + simulateValidation(userOp: UserOperation): Promise; + + getUserOperationEvent( + userOpHash: string + ): Promise; + getUserOperationReceipt(hash: string): Promise; + getUserOperationByHash( + hash: string + ): Promise; + + encodeHandleOps(userOps: UserOperation[], beneficiary: string): any; + encodeSimulateHandleOp( + userOp: UserOperation, + target: string, + targetCallData: string + ): any; + encodeSimulateValidation(userOp: UserOperation): any; + + parseValidationResult( + userOp: UserOperation, + data: string + ): UserOpValidationResult; +} diff --git a/packages/executor/src/services/EntryPointService/versions/index.ts b/packages/executor/src/services/EntryPointService/versions/index.ts new file mode 100644 index 00000000..757a9986 --- /dev/null +++ b/packages/executor/src/services/EntryPointService/versions/index.ts @@ -0,0 +1,2 @@ +export * from "./0.0.7"; +export * from "./base"; diff --git a/packages/executor/src/services/MempoolService.ts b/packages/executor/src/services/MempoolService.ts index 8055a7f6..46e13ff3 100644 --- a/packages/executor/src/services/MempoolService.ts +++ b/packages/executor/src/services/MempoolService.ts @@ -2,18 +2,19 @@ import { BigNumberish, utils } from "ethers"; import { IDbController } from "types/lib"; import RpcError from "types/lib/api/errors/rpc-error"; import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; import { IEntityWithAggregator, MempoolEntryStatus, IWhitelistedEntities, ReputationStatus, } from "types/lib/executor"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { getAddr, now } from "../utils"; import { MempoolEntry } from "../entities/MempoolEntry"; import { IMempoolEntry, MempoolEntrySerialized } from "../entities/interfaces"; import { KnownEntities, NetworkConfig, StakeInfo } from "../interfaces"; import { ReputationService } from "./ReputationService"; +import { EntryPointService } from "./EntryPointService"; export class MempoolService { private MAX_MEMPOOL_USEROPS_PER_SENDER = 4; @@ -24,6 +25,7 @@ export class MempoolService { constructor( private db: IDbController, private chainId: number, + private entryPointService: EntryPointService, private reputationService: ReputationService, private networkConfig: NetworkConfig ) { @@ -41,7 +43,7 @@ export class MempoolService { } async addUserOp( - userOp: UserOperationStruct, + userOp: UserOperation, entryPoint: string, prefund: BigNumberish, senderInfo: StakeInfo, @@ -60,8 +62,8 @@ export class MempoolService { aggregator, hash, userOpHash, - factory: getAddr(userOp.initCode), - paymaster: getAddr(userOp.paymasterAndData), + factory: this.entryPointService.getFactory(entryPoint, userOp), + paymaster: this.entryPointService.getPaymaster(entryPoint, userOp), }); const existingEntry = await this.find(entry); if (existingEntry) { @@ -88,7 +90,7 @@ export class MempoolService { await this.db.put(key, { ...entry, lastUpdatedTime: now() }); await this.saveUserOpHash(entry.userOpHash, entry); } - await this.updateSeenStatus(userOp, aggregator); + await this.updateSeenStatus(entryPoint, userOp, aggregator); } async removeAll(entries: MempoolEntry[]): Promise { @@ -196,7 +198,7 @@ export class MempoolService { } async validateUserOpReplaceability( - userOp: UserOperationStruct, + userOp: UserOperation, entryPoint: string ): Promise { const entry = new MempoolEntry({ @@ -325,7 +327,7 @@ export class MempoolService { private async checkMultipleRolesViolation( entry: MempoolEntry ): Promise { - const { userOp } = entry; + const { userOp, entryPoint } = entry; const { otherEntities, accounts } = await this.getKnownEntities(); if (otherEntities.includes(utils.getAddress(userOp.sender))) { throw new RpcError( @@ -334,9 +336,9 @@ export class MempoolService { ); } - if (userOp.paymasterAndData.length >= 42) { - const paymaster = utils.getAddress(getAddr(userOp.paymasterAndData)!); - if (accounts.includes(paymaster)) { + const paymaster = this.entryPointService.getPaymaster(entryPoint, userOp); + if (paymaster) { + if (accounts.includes(utils.getAddress(paymaster))) { throw new RpcError( `A Paymaster at ${paymaster} in this UserOperation is used as a sender entity in another UserOperation currently in mempool.`, RpcErrorCodes.INVALID_OPCODE @@ -344,9 +346,9 @@ export class MempoolService { } } - if (userOp.initCode.length >= 42) { - const factory = utils.getAddress(getAddr(userOp.initCode)!); - if (accounts.includes(factory)) { + const factory = this.entryPointService.getFactory(entryPoint, userOp); + if (factory) { + if (accounts.includes(utils.getAddress(factory))) { throw new RpcError( `A Factory at ${factory} in this UserOperation is used as a sender entity in another UserOperation currently in mempool.`, RpcErrorCodes.INVALID_OPCODE @@ -397,11 +399,12 @@ export class MempoolService { } private async updateSeenStatus( - userOp: UserOperationStruct, + entryPoint: string, + userOp: UserOperation, aggregator?: string ): Promise { - const paymaster = getAddr(userOp.paymasterAndData); - const factory = getAddr(userOp.initCode); + const paymaster = this.entryPointService.getPaymaster(entryPoint, userOp); + const factory = this.entryPointService.getFactory(entryPoint, userOp); await this.reputationService.updateSeenStatus(userOp.sender); if (aggregator) { await this.reputationService.updateSeenStatus(aggregator); diff --git a/packages/executor/src/services/P2PService.ts b/packages/executor/src/services/P2PService.ts index e406370b..0b56dac4 100644 --- a/packages/executor/src/services/P2PService.ts +++ b/packages/executor/src/services/P2PService.ts @@ -1,5 +1,7 @@ -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; +import { UserOperationStruct } from "types/lib/contracts/EPv6/EntryPoint"; import { MempoolService } from "./MempoolService"; +import { EntryPointService } from "./EntryPointService"; +import { EntryPointVersion } from "./EntryPointService/interfaces"; export type PooledUserOpHashesResponse = { next_cursor: number; @@ -9,7 +11,10 @@ export type PooledUserOpHashesResponse = { export type PooledUseropsByHashResponse = UserOperationStruct[]; export class P2PService { - constructor(private mempoolService: MempoolService) {} + constructor( + private entryPointService: EntryPointService, + private mempoolService: MempoolService + ) {} async getPooledUserOpHashes( limit: number, @@ -26,6 +31,11 @@ export class P2PService { return { next_cursor: hasMore ? keys.length + offset : 0, hashes: mempoolEntries + .filter( + (entry) => + this.entryPointService.getEntryPointVersion(entry.entryPoint) === + EntryPointVersion.SIX + ) .map((entry) => entry.userOpHash) .filter((hash) => hash && hash.length === 66), }; @@ -37,8 +47,12 @@ export class P2PService { const userOps = []; for (const hash of hashes) { const entry = await this.mempoolService.getEntryByHash(hash); - if (entry) { - userOps.push(entry.userOp); + if ( + entry && + this.entryPointService.getEntryPointVersion(entry.entryPoint) === + EntryPointVersion.SIX + ) { + userOps.push(entry.userOp as UserOperationStruct); } } return userOps; @@ -46,7 +60,14 @@ export class P2PService { async userOpByHash(hash: string): Promise { const entry = await this.mempoolService.getEntryByHash(hash); - return entry ? entry.userOp : null; + if ( + entry && + this.entryPointService.getEntryPointVersion(entry.entryPoint) === + EntryPointVersion.SIX + ) { + return entry.userOp as UserOperationStruct; + } + return null; } async isNewOrReplacingUserOp( diff --git a/packages/executor/src/services/UserOpValidation/GethTracer.ts b/packages/executor/src/services/UserOpValidation/GethTracer.ts index acb650ec..97c48a4c 100644 --- a/packages/executor/src/services/UserOpValidation/GethTracer.ts +++ b/packages/executor/src/services/UserOpValidation/GethTracer.ts @@ -3,6 +3,7 @@ import { resolve } from "node:path"; import { BigNumber, providers } from "ethers"; import { BundlerCollectorReturn } from "types/lib/executor"; import { TracerPrestateResponse } from "../../interfaces"; +import { StateOverrides } from "../EntryPointService/interfaces"; const tracer = readFileSync( resolve(process.cwd(), "packages", "executor", "tracer.js") @@ -13,23 +14,12 @@ if (tracer == null) { const regexp = /function \w+\s*\(\s*\)\s*{\s*return\s*(\{[\s\S]+\});?\s*\}\s*$/; const stringifiedTracer = tracer.match(regexp)![1]; -// UNCOMMENT FOR DEBUG PURPOSES -// eslint-disable-next-line no-console -// console.log( -// JSON.stringify( -// { -// tracer: stringifiedTracer, -// }, -// undefined, -// 2 -// ) -// ); - export class GethTracer { constructor(private provider: providers.JsonRpcProvider) {} async debug_traceCall( - tx: providers.TransactionRequest + tx: providers.TransactionRequest, + stateOverrides?: StateOverrides ): Promise { const { gasLimit, ...txWithoutGasLimit } = tx; const gas = `0x${BigNumber.from(gasLimit ?? 10e6) @@ -42,6 +32,7 @@ export class GethTracer { }, "latest", { + stateOverrides, tracer: stringifiedTracer, }, ]); @@ -50,12 +41,16 @@ export class GethTracer { } async debug_traceCallPrestate( - tx: providers.TransactionRequest + tx: providers.TransactionRequest, + stateOverrides?: StateOverrides ): Promise { const ret: any = await this.provider.send("debug_traceCall", [ tx, "latest", - { tracer: "prestateTracer" }, + { + tracer: "prestateTracer", + stateOverrides, + }, ]); return ret; } diff --git a/packages/executor/src/services/UserOpValidation/service.ts b/packages/executor/src/services/UserOpValidation/service.ts index 5f91f2b9..1f54704a 100644 --- a/packages/executor/src/services/UserOpValidation/service.ts +++ b/packages/executor/src/services/UserOpValidation/service.ts @@ -1,8 +1,8 @@ import { BigNumber, providers } from "ethers"; import { Logger } from "types/lib"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; import RpcError from "types/lib/api/errors/rpc-error"; import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { Config } from "../../config"; import { ExecutionResult, @@ -10,6 +10,7 @@ import { UserOpValidationResult, } from "../../interfaces"; import { ReputationService } from "../ReputationService"; +import { EntryPointService } from "../EntryPointService"; import { EstimationService, SafeValidationService, @@ -25,6 +26,7 @@ export class UserOpValidationService { constructor( private provider: providers.Provider, + private entryPointService: EntryPointService, private reputationService: ReputationService, private chainId: number, private config: Config, @@ -33,15 +35,21 @@ export class UserOpValidationService { const networkConfig = config.getNetworkConfig(); this.networkConfig = networkConfig; - this.estimationService = new EstimationService(this.provider, this.logger); + this.estimationService = new EstimationService( + this.entryPointService, + this.provider, + this.logger + ); this.safeValidationService = new SafeValidationService( this.provider, + this.entryPointService, this.reputationService, this.chainId, this.networkConfig, this.logger ); this.unsafeValidationService = new UnsafeValidationService( + this.entryPointService, this.provider, this.networkConfig, this.logger @@ -49,14 +57,14 @@ export class UserOpValidationService { } async validateForEstimation( - userOp: UserOperationStruct, + userOp: UserOperation, entryPoint: string ): Promise { return await this.estimationService.estimateUserOp(userOp, entryPoint); } async validateForEstimationWithSignature( - userOp: UserOperationStruct, + userOp: UserOperation, entryPoint: string ): Promise { return await this.unsafeValidationService.validateUnsafely( @@ -66,7 +74,7 @@ export class UserOpValidationService { } async simulateValidation( - userOp: UserOperationStruct, + userOp: UserOperation, entryPoint: string, codehash?: string ): Promise { @@ -83,7 +91,7 @@ export class UserOpValidationService { ); } - async validateGasFee(userOp: UserOperationStruct): Promise { + async validateGasFee(userOp: UserOperation): Promise { const block = await this.provider.getBlock("latest"); const { baseFeePerGas } = block; let { maxFeePerGas, maxPriorityFeePerGas } = userOp; @@ -108,24 +116,4 @@ export class UserOpValidationService { return true; } - - async binarySearchVGL( - userOp: UserOperationStruct, - entryPoint: string - ): Promise { - if (this.config.unsafeMode) { - return this.estimationService.binarySearchVGL(userOp, entryPoint); - } - return this.estimationService.binarySearchVGLSafe(userOp, entryPoint); - } - - async binarySearchCGL( - userOp: UserOperationStruct, - entryPoint: string - ): Promise { - if (this.config.unsafeMode) { - return userOp; // CGL search not supported in unsafeMode - } - return this.estimationService.binarySearchCGLSafe(userOp, entryPoint); - } } diff --git a/packages/executor/src/services/UserOpValidation/utils.ts b/packages/executor/src/services/UserOpValidation/utils.ts index e7262996..a2cd7b62 100644 --- a/packages/executor/src/services/UserOpValidation/utils.ts +++ b/packages/executor/src/services/UserOpValidation/utils.ts @@ -1,113 +1,9 @@ import { BigNumber, BytesLike } from "ethers"; -import { AddressZero } from "params/lib"; -import RpcError from "types/lib/api/errors/rpc-error"; -import { - IEntryPoint, - IEntryPoint__factory, - IAccount__factory, - IAggregatedAccount__factory, - IAggregator__factory, - IPaymaster__factory, - SenderCreator__factory, -} from "types/lib/executor/contracts"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; -import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; import { Interface, hexZeroPad, hexlify, keccak256 } from "ethers/lib/utils"; import { BundlerCollectorReturn, CallEntry } from "types/lib/executor"; -import { UserOpValidationResult, StakeInfo } from "../../interfaces"; -import { getAddr } from "../../utils"; - -export function nonGethErrorHandler( - epContract: IEntryPoint, - errorResult: any -): any { - try { - let { error } = errorResult; - if (error && error.error) { - error = error.error; - } - if (error && error.code == -32015 && error.data.startsWith("Reverted ")) { - /** NETHERMIND */ - const parsed = epContract.interface.parseError(error.data.slice(9)); - errorResult = { - ...parsed, - errorName: parsed.name, - errorArgs: parsed.args, - }; - } else if (error && error.code == -32603 && error.data) { - /** BIFROST */ - const parsed = epContract.interface.parseError(error.data); - errorResult = { - ...parsed, - errorName: parsed.name, - errorArgs: parsed.args, - }; - } - } catch (err) { - /* empty */ - } - return errorResult; -} - -export function parseErrorResult( - userOp: UserOperationStruct, - errorResult: { errorName: string; errorArgs: any } -): UserOpValidationResult { - if (!errorResult?.errorName?.startsWith("ValidationResult")) { - // parse it as FailedOp - // if its FailedOp, then we have the paymaster param... otherwise its an Error(string) - let paymaster = errorResult.errorArgs?.paymaster; - if (paymaster === AddressZero) { - paymaster = undefined; - } - // eslint-disable-next-line - const msg: string = - errorResult.errorArgs?.reason ?? errorResult.toString(); - - if (paymaster == null) { - throw new RpcError(msg, RpcErrorCodes.VALIDATION_FAILED); - } else { - throw new RpcError(msg, RpcErrorCodes.REJECTED_BY_PAYMASTER, { - paymaster, - }); - } - } - - const { - returnInfo, - senderInfo, - factoryInfo, - paymasterInfo, - aggregatorInfo, // may be missing (exists only SimulationResultWithAggregator - } = errorResult.errorArgs; - - // extract address from "data" (first 20 bytes) - // add it as "addr" member to the "stakeinfo" struct - // if no address, then return "undefined" instead of struct. - function fillEntity(data: BytesLike, info: StakeInfo): StakeInfo | undefined { - const addr = getAddr(data); - return addr == null - ? undefined - : { - ...info, - addr, - }; - } - - return { - returnInfo, - senderInfo: { - ...senderInfo, - addr: userOp.sender, - }, - factoryInfo: fillEntity(userOp.initCode, factoryInfo), - paymasterInfo: fillEntity(userOp.paymasterAndData, paymasterInfo), - aggregatorInfo: fillEntity( - aggregatorInfo?.actualAggregator, - aggregatorInfo?.stakeInfo - ), - }; -} +import { StakeInfo } from "../../interfaces"; +import { IEntryPoint__factory, IPaymaster__factory, IAccount__factory } from "types/lib/contracts/EPv7/factories/interfaces"; +import { SenderCreator__factory } from "types/lib/contracts/EPv7/factories/core"; export function compareBytecode( artifactBytecode: string, @@ -137,17 +33,6 @@ export function toBytes32(b: BytesLike | number): string { return hexZeroPad(hexlify(b).toLowerCase(), 32); } -export function requireCond( - cond: boolean, - msg: string, - code?: number, - data: any = undefined -): void { - if (!cond) { - throw new RpcError(msg, code, data); - } -} - /** * parse all call operation in the trace. * notes: @@ -162,8 +47,6 @@ export function parseCallStack( [ ...IEntryPoint__factory.abi, ...IAccount__factory.abi, - ...IAggregatedAccount__factory.abi, - ...IAggregator__factory.abi, ...IPaymaster__factory.abi, ].reduce((set, entry: any) => { const key = `${entry.name}(${entry?.inputs @@ -320,21 +203,3 @@ export function isSlotAssociatedWith( } return false; } - -export function parseValidationResult( - entryPointContract: IEntryPoint, - userOp: UserOperationStruct, - data: string -): UserOpValidationResult { - const { name: errorName, args: errorArgs } = - entryPointContract.interface.parseError(data); - const errFullName = `${errorName}(${errorArgs.toString()})`; - const errResult = parseErrorResult(userOp, { - errorName, - errorArgs, - }); - if (!errorName.includes("Result")) { - throw new Error(errFullName); - } - return errResult; -} diff --git a/packages/executor/src/services/UserOpValidation/validators/estimation.ts b/packages/executor/src/services/UserOpValidation/validators/estimation.ts index 5ced7d69..6169b706 100644 --- a/packages/executor/src/services/UserOpValidation/validators/estimation.ts +++ b/packages/executor/src/services/UserOpValidation/validators/estimation.ts @@ -1,219 +1,38 @@ -import { AddressZero, BytesZero } from "params/lib"; import RpcError from "types/lib/api/errors/rpc-error"; -import { IEntryPoint__factory } from "types/lib/executor/contracts"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; -import { BundlerCollectorReturn, ExitInfo } from "types/lib/executor"; import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; -import { BigNumber, providers } from "ethers"; +import { providers } from "ethers"; import { Logger } from "types/lib"; -import { nonGethErrorHandler } from "../utils"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { ExecutionResult } from "../../../interfaces"; -import { GethTracer } from "../GethTracer"; - -const isVGLLow = (err: Error): boolean => { - const { message } = err; - if (!message) return false; - return ( - message.indexOf("OOG") > -1 || - message.indexOf("AA40") > -1 || - message.indexOf("ogg.validation") > -1 - ); -}; - -const isCGLLow = (err: Error): boolean => { - const { message } = err; - if (!message) return false; - return ( - message.indexOf("OOG") > -1 || - message.indexOf("AA40") > -1 || - message.indexOf("ogg.execution") > -1 - ); -}; +import { EntryPointService } from "../../EntryPointService"; +import { mergeValidationDataValues } from "../../EntryPointService/utils"; export class EstimationService { - private gethTracer: GethTracer; - - constructor(private provider: providers.Provider, private logger: Logger) { - this.gethTracer = new GethTracer( - this.provider as providers.JsonRpcProvider - ); - } + constructor( + private entryPointService: EntryPointService, + private provider: providers.Provider, + private logger: Logger + ) {} async estimateUserOp( - userOp: UserOperationStruct, + userOp: UserOperation, entryPoint: string ): Promise { - const entryPointContract = IEntryPoint__factory.connect( - entryPoint, - this.provider - ); - - const errorResult = await entryPointContract.callStatic - .simulateHandleOp(userOp, AddressZero, BytesZero) - .catch((e: any) => nonGethErrorHandler(entryPointContract, e)); - - if (errorResult.errorName === "FailedOp") { - throw new RpcError( - errorResult.errorArgs.at(-1), - RpcErrorCodes.VALIDATION_FAILED - ); - } - - if (errorResult.errorName !== "ExecutionResult") { - throw errorResult; - } - - return errorResult.errorArgs; - } - - // Binary search verificationGasLimit - async binarySearchVGL( - userOp: UserOperationStruct, - entryPoint: string - ): Promise { - const { verificationGasLimit } = userOp; - let [left, right] = [ - BigNumber.from(verificationGasLimit).div(2), // the estimated VGL doesn't differ that much from the actual VGL, so we can add some markup here - BigNumber.from(verificationGasLimit), - ]; - let lastOptimalVGL: BigNumber | undefined; - while (left.lt(right)) { - const mid = left.add(right).div(2); - try { - await this.estimateUserOp( - { ...userOp, verificationGasLimit: mid }, - entryPoint - ); - lastOptimalVGL = mid; - break; - } catch (err) { - if (isVGLLow(err as Error)) { - left = mid.add(1); - } else { - right = mid.sub(1); - } - } - } - - userOp.verificationGasLimit = lastOptimalVGL || userOp.verificationGasLimit; - return userOp; - } - - async binarySearchVGLSafe( - userOp: UserOperationStruct, - entryPoint: string - ): Promise { - const { verificationGasLimit } = userOp; - let [left, right] = [ - BigNumber.from(verificationGasLimit).div(2), - BigNumber.from(verificationGasLimit), - ]; - let lastOptimalVGL: BigNumber | undefined; - while (left.lt(right)) { - const mid = left.add(right).div(2); - try { - await this.checkForOOG( - { ...userOp, verificationGasLimit: mid }, - entryPoint - ); - lastOptimalVGL = mid; - break; - } catch (err) { - if (isVGLLow(err as Error)) { - left = mid.add(1); - } else { - right = mid.sub(1); - } - } - } - - userOp.verificationGasLimit = lastOptimalVGL || userOp.verificationGasLimit; - return userOp; - } - - // Binary search callGasLimit - // Only available in safe mode - async binarySearchCGLSafe( - userOp: UserOperationStruct, - entryPoint: string - ): Promise { - const { callGasLimit } = userOp; - let [left, right] = [ - BigNumber.from(callGasLimit).div(5), // the estimated CGL doesn't differ that much from the actual CGL, so we can add some markup here - BigNumber.from(callGasLimit), - ]; - let lastOptimalCGL: BigNumber | undefined; - let retries = 2; // keep trying to find the most optimal value - while (left.lt(right)) { - const mid = left.add(right).div(2); - userOp.callGasLimit = mid; - try { - await this.checkForOOG(userOp, entryPoint); - lastOptimalCGL = mid; - right = mid.sub(1); - } catch (err) { - if (isCGLLow(err as Error)) { - left = mid.add(1); - } else { - right = mid.sub(1); - } - if (lastOptimalCGL !== undefined && retries == 0) break; - if (lastOptimalCGL !== undefined) { - retries--; - } - } - } - - userOp.callGasLimit = lastOptimalCGL || userOp.callGasLimit; - return userOp; - } - - async checkForOOG( - userOp: UserOperationStruct, - entryPoint: string - ): Promise { - const entryPointContract = IEntryPoint__factory.connect( + const returnInfo = await this.entryPointService.simulateHandleOp( entryPoint, - this.provider + userOp ); - - const tx = { - data: entryPointContract.interface.encodeFunctionData( - "simulateHandleOp", - [userOp, AddressZero, BytesZero] - ), - to: entryPoint, - }; - - const traceCall: BundlerCollectorReturn = - await this.gethTracer.debug_traceCall(tx); - const lastResult = traceCall.calls.at(-1) as ExitInfo; - if (lastResult.type !== "REVERT") { - throw new RpcError( - "Invalid response. simulateCall must revert", - RpcErrorCodes.VALIDATION_FAILED - ); - } - const data = (lastResult as ExitInfo).data; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { name: errorName, args: errorArgs } = - entryPointContract.interface.parseError(data); - const errFullName = `${errorName}(${errorArgs.toString()})`; - if (!errorName?.startsWith("ExecutionResult")) { - throw new Error(errFullName); + const { validAfter, validUntil } = mergeValidationDataValues( + returnInfo.accountValidationData, + returnInfo.paymasterValidationData + ) + return { + preOpGas: returnInfo.preOpGas, + paid: returnInfo.paid, + validAfter: validAfter, + validUntil: validUntil, + targetSuccess: returnInfo.targetSuccess, + targetResult: returnInfo.targetResult, } - - traceCall.callsFromEntryPoint.forEach((currentLevel, index) => { - if (currentLevel.oog) { - if (index >= 1 && index < 3) { - throw new Error("oog.validation"); - } - if (index == 3) { - throw new Error("oog.execution"); - } - } - }); - - return ""; // successful validation } } diff --git a/packages/executor/src/services/UserOpValidation/validators/safe.ts b/packages/executor/src/services/UserOpValidation/validators/safe.ts index 8db0f555..ac54b1f9 100644 --- a/packages/executor/src/services/UserOpValidation/validators/safe.ts +++ b/packages/executor/src/services/UserOpValidation/validators/safe.ts @@ -1,14 +1,10 @@ -import { IEntryPoint__factory } from "types/lib/executor/contracts"; -import { - IEntryPoint, - UserOperationStruct, -} from "types/lib/executor/contracts/EntryPoint"; import { BigNumber, ethers, providers } from "ethers"; import { BundlerCollectorReturn, ExitInfo } from "types/lib/executor"; import RpcError from "types/lib/api/errors/rpc-error"; import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; import { Logger } from "types/lib"; import { IWhitelistedEntities } from "types/lib/executor"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { NetworkConfig, StorageMap, @@ -20,9 +16,11 @@ import { isSlotAssociatedWith, parseCallStack, parseEntitySlots, - parseValidationResult, } from "../utils"; import { ReputationService } from "../../ReputationService"; +import { EntryPointService } from "../../EntryPointService"; +import { AddressZero } from "params/lib"; +import { decodeRevertReason } from "../../EntryPointService/utils/decodeRevertReason"; /** * Some opcodes like: @@ -56,6 +54,7 @@ export class SafeValidationService { constructor( private provider: providers.Provider, + private entryPointService: EntryPointService, private reputationService: ReputationService, private chainId: number, private networkConfig: NetworkConfig, @@ -67,32 +66,28 @@ export class SafeValidationService { } async validateSafely( - userOp: UserOperationStruct, + userOp: UserOperation, entryPoint: string, codehash?: string ): Promise { - const entryPointContract = IEntryPoint__factory.connect( - entryPoint, - this.provider - ); + entryPoint = entryPoint.toLowerCase(); const simulationGas = BigNumber.from(userOp.preVerificationGas) .add(userOp.verificationGasLimit) .add(userOp.callGasLimit); + const [data, stateOverrides] = this.entryPointService.encodeSimulateValidation(entryPoint, userOp); const tx: providers.TransactionRequest = { to: entryPoint, - data: entryPointContract.interface.encodeFunctionData( - "simulateValidation", - [userOp] - ), + data, gasLimit: simulationGas, - }; + from: AddressZero + } const traceCall: BundlerCollectorReturn = - await this.gethTracer.debug_traceCall(tx); + await this.gethTracer.debug_traceCall(tx, stateOverrides); const validationResult = await this.validateOpcodesAndStake( traceCall, - entryPointContract, + entryPoint, userOp ); @@ -125,7 +120,7 @@ export class SafeValidationService { let hash = "", addresses: string[] = []; try { - const prestateTrace = await this.gethTracer.debug_traceCallPrestate(tx); + const prestateTrace = await this.gethTracer.debug_traceCallPrestate(tx, stateOverrides); addresses = traceCall.callsFromEntryPoint.flatMap((level) => Object.keys(level.contractSize) ); @@ -163,10 +158,9 @@ export class SafeValidationService { private async validateOpcodesAndStake( traceCall: BundlerCollectorReturn, - entryPointContract: IEntryPoint, - userOp: UserOperationStruct + entryPoint: string, + userOp: UserOperation ): Promise { - const entryPoint = entryPointContract.address.toLowerCase(); if (traceCall == null || traceCall.callsFromEntryPoint == undefined) { throw new Error( "Could not validate transaction. Tracing is not available" @@ -212,15 +206,12 @@ export class SafeValidationService { // Parse error result from the last call const lastResult = traceCall.calls.at(-1) as ExitInfo; - if (lastResult.type !== "REVERT") { - throw new RpcError( - "Invalid response. simulateCall must revert", - RpcErrorCodes.VALIDATION_FAILED - ); + if (lastResult.type === "REVERT") { + throw new RpcError(decodeRevertReason(lastResult.data, false) ?? "Validation failed", RpcErrorCodes.VALIDATION_FAILED); } const data = (lastResult as ExitInfo).data; - const validationResult = parseValidationResult( - entryPointContract, + const validationResult = this.entryPointService.parseValidationResult( + entryPoint, userOp, data ); @@ -330,18 +321,11 @@ export class SafeValidationService { let requireStakeSlot: string | undefined; for (const slot of [...Object.keys(writes), ...Object.keys(reads)]) { if (isSlotAssociatedWith(slot, sender, entitySlots)) { - if ( - userOp.initCode.length > 2 && - !( - entityAddr === sender && - ( - await this.reputationService.checkStake( - stakeInfoEntities.factory - ) - ).code === 0 - ) - ) { - requireStakeSlot = slot; + if (userOp.factory) { + const stake = await this.reputationService.checkStake(stakeInfoEntities.factory); + if (!(entityAddr === sender && stake.code === 0)) { + requireStakeSlot = slot + } } } else if (isSlotAssociatedWith(slot, entityAddr, entitySlots)) { requireStakeSlot = slot; diff --git a/packages/executor/src/services/UserOpValidation/validators/unsafe.ts b/packages/executor/src/services/UserOpValidation/validators/unsafe.ts index 63641301..f4aa7534 100644 --- a/packages/executor/src/services/UserOpValidation/validators/unsafe.ts +++ b/packages/executor/src/services/UserOpValidation/validators/unsafe.ts @@ -1,31 +1,21 @@ -import { IEntryPoint__factory } from "types/lib/executor/contracts"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; import { providers } from "ethers"; import { Logger } from "types/lib"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { NetworkConfig, UserOpValidationResult } from "../../../interfaces"; -import { nonGethErrorHandler, parseErrorResult } from "../utils"; +import { EntryPointService } from "../../EntryPointService"; export class UnsafeValidationService { constructor( + private entryPointService: EntryPointService, private provider: providers.Provider, private networkConfig: NetworkConfig, private logger: Logger ) {} async validateUnsafely( - userOp: UserOperationStruct, + userOp: UserOperation, entryPoint: string ): Promise { - const { validationGasLimit } = this.networkConfig; - const entryPointContract = IEntryPoint__factory.connect( - entryPoint, - this.provider - ); - const errorResult = await entryPointContract.callStatic - .simulateValidation(userOp, { - gasLimit: validationGasLimit, - }) - .catch((e: any) => nonGethErrorHandler(entryPointContract, e)); - return parseErrorResult(userOp, errorResult); + return await this.entryPointService.simulateValidation(entryPoint, userOp); } } diff --git a/packages/executor/src/services/index.ts b/packages/executor/src/services/index.ts index 0dc88f4e..505926fc 100644 --- a/packages/executor/src/services/index.ts +++ b/packages/executor/src/services/index.ts @@ -2,5 +2,5 @@ export * from "./UserOpValidation"; export * from "./MempoolService"; export * from "./BundlingService"; export * from "./ReputationService"; -export * from "./EventsService"; export * from "./P2PService"; +export * from "./EntryPointService"; diff --git a/packages/executor/src/utils/index.ts b/packages/executor/src/utils/index.ts index 44e7a678..a722f413 100644 --- a/packages/executor/src/utils/index.ts +++ b/packages/executor/src/utils/index.ts @@ -1,114 +1,4 @@ -import { - BytesLike, - defaultAbiCoder, - hexlify, - keccak256, -} from "ethers/lib/utils"; -import { IEntryPoint__factory } from "types/lib/executor/contracts/factories"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; - -const UserOpType = ( - IEntryPoint__factory.abi.find( - (entry: any) => entry.name === "simulateValidation" - ) as any -).inputs?.[0]; - -if (UserOpType == null) { - throw new Error("unable to find method simulateValidation in EntryPoint ABI"); -} - -/** - * pack the userOperation - * @param op - * @param forSignature "true" if the hash is needed to calculate the getUserOpHash() - * "false" to pack entire UserOp, for calculating the calldata cost of putting it on-chain. - */ -export function packUserOp( - op: UserOperationStruct, - forSignature = true -): string { - if (forSignature) { - return defaultAbiCoder.encode( - [ - "address", - "uint256", - "bytes32", - "bytes32", - "uint256", - "uint256", - "uint256", - "uint256", - "uint256", - "bytes32", - ], - [ - op.sender, - op.nonce, - keccak256(op.initCode), - keccak256(op.callData), - op.callGasLimit, - op.verificationGasLimit, - op.preVerificationGas, - op.maxFeePerGas, - op.maxPriorityFeePerGas, - keccak256(op.paymasterAndData), - ] - ); - } else { - // for the purpose of calculating gas cost encode also signature (and no keccak of bytes) - return defaultAbiCoder.encode( - [ - "address", - "uint256", - "bytes", - "bytes", - "uint256", - "uint256", - "uint256", - "uint256", - "uint256", - "bytes", - "bytes", - ], - [ - op.sender, - op.nonce, - op.initCode, - op.callData, - op.callGasLimit, - op.verificationGasLimit, - op.preVerificationGas, - op.maxFeePerGas, - op.maxPriorityFeePerGas, - op.paymasterAndData, - op.signature, - ] - ); - } -} - -/** - * calculate the userOpHash of a given userOperation. - * The userOpHash is a hash of all UserOperation fields, except the "signature" field. - * The entryPoint uses this value in the emitted UserOperationEvent. - * A wallet may use this value as the hash to sign (the SampleWallet uses this method) - * @param op - * @param entryPoint - * @param chainId - */ -export function getUserOpHash( - op: UserOperationStruct, - entryPoint: string, - chainId: number -): string { - const userOpHash = keccak256(packUserOp(op, true)); - const enc = defaultAbiCoder.encode( - ["bytes32", "address", "uint256"], - [userOpHash, entryPoint, chainId] - ); - return keccak256(enc); -} - +import { BytesLike, hexlify } from "ethers/lib/utils"; /** * hexlify all members of object, recursively * @param obj diff --git a/packages/executor/test/constants.ts b/packages/executor/test/constants.ts index 068af0e1..9249fad9 100644 --- a/packages/executor/test/constants.ts +++ b/packages/executor/test/constants.ts @@ -2,8 +2,8 @@ import { constants } from "ethers"; import { StakeInfo } from "../src/interfaces"; export const TestAccountMnemonic = "test test test test test test test test test test test junk"; -export const EntryPointAddress = "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789"; -export const SimpleFactoryAddress = "0x6Cf2534C6AA425F20fb6A15FC836C8DD7e8f14e3"; +export const EntryPointAddress = "0x9b5d240EF1bc8B4930346599cDDFfBD7d7D56db9"; +export const SimpleFactoryAddress = "0xE759fdEAC26252feFd31a044493154ABDd709344"; export const DefaultRpcUrl = "http://127.0.0.1:8545"; export const NetworkName = "anvil"; export const ChainId = 31337; diff --git a/packages/executor/test/fixtures/getClient.ts b/packages/executor/test/fixtures/getClient.ts index 5bea4658..7d633e04 100644 --- a/packages/executor/test/fixtures/getClient.ts +++ b/packages/executor/test/fixtures/getClient.ts @@ -1,10 +1,11 @@ import { exec } from "child_process"; import { now, wait } from "../../src/utils"; import { BytesLike, hexConcat, hexZeroPad, hexlify } from "ethers/lib/utils"; -import { IEntryPoint__factory, SimpleAccountFactory__factory } from "types/src/executor/contracts"; import { DefaultRpcUrl, EntryPointAddress } from "../constants"; import { Wallet, constants, providers, utils } from "ethers"; import { testAccounts } from "./accounts"; +import { _bytecode as EPBytecode } from "types/src/contracts/EPv7/factories/core/EntryPoint__factory"; +import { SimpleAccountFactory__factory } from "types/src/contracts/EPv7/factories/samples"; let provider: providers.JsonRpcProvider; @@ -37,8 +38,8 @@ async function runAnvil() { } export async function deployEntryPointAndFactory() { - await deployContractDeterministically(IEntryPoint__factory.bytecode); - await deployContractDeterministically((new SimpleAccountFactory__factory()).getDeployTransaction(EntryPointAddress).data!); + const ep = await deployContractDeterministically(EPBytecode); + const factory = await deployContractDeterministically((new SimpleAccountFactory__factory()).getDeployTransaction(EntryPointAddress).data!); } export async function deployDetermisticDeployer() { diff --git a/packages/executor/test/fixtures/getConfig.ts b/packages/executor/test/fixtures/getConfig.ts index c79fac7b..8d0508b4 100644 --- a/packages/executor/test/fixtures/getConfig.ts +++ b/packages/executor/test/fixtures/getConfig.ts @@ -34,6 +34,7 @@ const BaseConfig: ConfigOptions = { relayingMode: "classic", pvgMarkup: 0, canonicalMempoolId: "", + canonicalEntryPoint: "", }, testingMode: false, unsafeMode: false, diff --git a/packages/executor/test/fixtures/index.ts b/packages/executor/test/fixtures/index.ts index bc092094..61e3c238 100644 --- a/packages/executor/test/fixtures/index.ts +++ b/packages/executor/test/fixtures/index.ts @@ -2,5 +2,5 @@ export * from "./getClient"; export * from "./getConfig"; export * from "./services"; export * from "./accounts"; -export * from "./userOp"; +export * from "./userOpV7"; export * from "./modules"; diff --git a/packages/executor/test/fixtures/modules.ts b/packages/executor/test/fixtures/modules.ts index 5d76d567..ae8f0676 100644 --- a/packages/executor/test/fixtures/modules.ts +++ b/packages/executor/test/fixtures/modules.ts @@ -12,6 +12,7 @@ export async function getModules(config: Config, networkConfig: NetworkConfig) { userOpValidationService, mempoolService, bundlingService, + entryPointService, } = await getServices(config, networkConfig); const web3 = new Web3(config, { @@ -20,12 +21,14 @@ export async function getModules(config: Config, networkConfig: NetworkConfig) { }); const debug = new Debug( provider, + entryPointService, bundlingService, mempoolService, reputationService, networkConfig ); const skandha = new Skandha( + entryPointService, ChainId, provider, config, @@ -34,6 +37,7 @@ export async function getModules(config: Config, networkConfig: NetworkConfig) { const eth = new Eth( ChainId, provider, + entryPointService, userOpValidationService, mempoolService, skandha, diff --git a/packages/executor/test/fixtures/services.ts b/packages/executor/test/fixtures/services.ts index 5d916187..7ca3de5d 100644 --- a/packages/executor/test/fixtures/services.ts +++ b/packages/executor/test/fixtures/services.ts @@ -1,7 +1,7 @@ import { BigNumber } from "ethers"; import { Config } from "../../src/config"; import { NetworkConfig } from "../../src/interfaces"; -import { BundlingService, EventsService, MempoolService, ReputationService, UserOpValidationService } from "../../src/services"; +import { BundlingService, EntryPointService, MempoolService, ReputationService, UserOpValidationService } from "../../src/services"; import { LocalDbController } from "../mocks/database"; import { ChainId } from "../constants"; import { logger } from "../mocks/logger"; @@ -18,9 +18,18 @@ export async function getServices(config: Config, networkConfig: NetworkConfig) BigNumber.from(networkConfig.minStake), networkConfig.minUnstakeDelay ); + const entryPointService = new EntryPointService( + config.chainId, + networkConfig, + provider, + reputationService, + db, + logger + ) const userOpValidationService = new UserOpValidationService( provider, + entryPointService, reputationService, ChainId, config, @@ -30,6 +39,7 @@ export async function getServices(config: Config, networkConfig: NetworkConfig) const mempoolService = new MempoolService( db, ChainId, + entryPointService, reputationService, networkConfig ); @@ -37,6 +47,7 @@ export async function getServices(config: Config, networkConfig: NetworkConfig) const bundlingService = new BundlingService( ChainId, provider, + entryPointService, mempoolService, userOpValidationService, reputationService, @@ -48,20 +59,11 @@ export async function getServices(config: Config, networkConfig: NetworkConfig) bundlingService.setBundlingMode("manual"); - const eventsService = new EventsService( - ChainId, - provider, - logger, - reputationService, - networkConfig.entryPoints, - db - ); - return { reputationService, userOpValidationService, mempoolService, bundlingService, - eventsService + entryPointService, } } \ No newline at end of file diff --git a/packages/executor/test/fixtures/userOp.ts b/packages/executor/test/fixtures/userOpV7.ts similarity index 65% rename from packages/executor/test/fixtures/userOp.ts rename to packages/executor/test/fixtures/userOpV7.ts index 4eaccb20..60083c33 100644 --- a/packages/executor/test/fixtures/userOp.ts +++ b/packages/executor/test/fixtures/userOpV7.ts @@ -1,20 +1,20 @@ -import { IEntryPoint__factory, SimpleAccountFactory__factory, SimpleAccount__factory } from "types/src/executor/contracts" import { ChainId, DefaultRpcUrl, EntryPointAddress, SimpleFactoryAddress } from "../constants" import { BigNumber, BigNumberish, Contract, Wallet, ethers, providers, utils } from "ethers"; -import { arrayify, defaultAbiCoder, hexConcat, keccak256 } from "ethers/lib/utils"; -import { UserOperationStruct } from "types/src/executor/contracts/EntryPoint"; +import { arrayify, defaultAbiCoder, keccak256 } from "ethers/lib/utils"; import { applyEstimatedUserOp, randomAddress } from "../utils"; -import { packUserOp } from "../../src/utils"; import { Eth } from "../../src/modules"; +import { UserOperation } from "types/src/contracts/UserOperation"; +import { encodeUserOp } from "../../src/services/EntryPointService/utils"; +import { SimpleAccountFactory__factory, SimpleAccount__factory } from "types/src/contracts/EPv7/factories/samples"; // Creates random simple transfer userop export async function createRandomUnsignedUserOp( ownerAddress: string, salt: number = 0 -): Promise { +): Promise { const accountAddress = await getCounterFactualAddress(ownerAddress, salt); const isDeployed = await isAccountDeployed(ownerAddress, salt); - const initCode = isDeployed ? '0x' : _getAccountInitCode(ownerAddress, salt); + const factoryData = isDeployed ? undefined : getFactoryData(ownerAddress, salt); const verificationGasLimit = isDeployed ? 100000 : 200000; // random value, double if not deployed const maxFeePerGas = 1; // TODO: fetch gas prices from skandhaService const maxPriorityFeePerGas = 1; @@ -26,7 +26,8 @@ export async function createRandomUnsignedUserOp( return { sender: accountAddress, nonce: isDeployed ? await _getNonce(accountAddress) : 0, - initCode, + factory: isDeployed ? undefined : SimpleFactoryAddress, + factoryData, callGasLimit, callData, verificationGasLimit, @@ -34,7 +35,6 @@ export async function createRandomUnsignedUserOp( maxPriorityFeePerGas, preVerificationGas: 45000, signature: '0x', - paymasterAndData: '0x' } } @@ -44,12 +44,12 @@ export async function createSignedUserOp(eth: Eth, wallet: Wallet) { userOp: unsignedUserOp, entryPoint: EntryPointAddress }); - unsignedUserOp = applyEstimatedUserOp(unsignedUserOp, response); + unsignedUserOp = applyEstimatedUserOp(unsignedUserOp, response as any); const userOp = await signUserOp(wallet, unsignedUserOp); return userOp; } -export async function signUserOp(wallet: Wallet, userOp: UserOperationStruct): Promise { +export async function signUserOp(wallet: Wallet, userOp: UserOperation): Promise { const userOpHash = getUserOpHash(userOp); const signature = await _signUserOpHash(wallet, userOpHash); return { @@ -59,19 +59,13 @@ export async function signUserOp(wallet: Wallet, userOp: UserOperationStruct): P } export async function getCounterFactualAddress(ownerAddress: string, salt: number = 0): Promise { - try { - const provider = new providers.JsonRpcProvider(DefaultRpcUrl); - const initCode = await _getAccountInitCode(ownerAddress, salt); - const entryPoint = IEntryPoint__factory.connect(EntryPointAddress, provider); - await entryPoint.callStatic.getSenderAddress(initCode); - - throw new Error("getSenderAddress: unexpected result"); - } catch (error: any) { - const addr = error?.errorArgs?.sender; - if (!addr) throw error; - if (addr === ethers.constants.AddressZero) throw new Error('Unsupported chain_id/walletFactoryAddress'); - return addr; - } + const provider = new providers.JsonRpcProvider(DefaultRpcUrl); + const factoryData = await getFactoryData(ownerAddress, salt); + const retAddr = await provider.call({ + to: SimpleFactoryAddress, data: factoryData + }) + const [addr] = defaultAbiCoder.decode(['address'], retAddr) + return addr; } async function isAccountDeployed(ownerAddress: string, salt: number = 0): Promise { @@ -80,8 +74,8 @@ async function isAccountDeployed(ownerAddress: string, salt: number = 0): Promis return senderAddressCode.length > 2; } -export function getUserOpHash(userOp: UserOperationStruct): string { - const userOpHash = keccak256(packUserOp(userOp, true)); +export function getUserOpHash(userOp: UserOperation): string { + const userOpHash = keccak256(encodeUserOp(userOp, true)); const enc = defaultAbiCoder.encode(['bytes32', 'address', 'uint256'], [userOpHash, EntryPointAddress, ChainId]); return keccak256(enc); } @@ -105,19 +99,10 @@ function _encodeExecute(accountAddress: string, target: string, value: BigNumber return accountContract.interface.encodeFunctionData('execute', [target, value, data]); } -function _encodeBatch(accountAddress: string, targets: string[], datas: string[]): string { - const accountContract = new ethers.Contract(accountAddress, SimpleAccount__factory.abi); - return accountContract.interface.encodeFunctionData('executeBatch', [targets, datas]); -} - -function _getAccountInitCode(ownerAddress: string, salt: number = 0): string { +function getFactoryData(ownerAddress: string, salt: number = 0): string { const factory = new ethers.Contract(SimpleFactoryAddress, SimpleAccountFactory__factory.abi); - - return hexConcat([ - SimpleFactoryAddress, - factory.interface.encodeFunctionData('createAccount', [ - ownerAddress, - salt, - ]), + return factory.interface.encodeFunctionData('createAccount', [ + ownerAddress, + salt, ]); } diff --git a/packages/executor/test/mocks/GethTracer.ts b/packages/executor/test/mocks/GethTracer.ts index b88c5c07..a3c07cd4 100644 --- a/packages/executor/test/mocks/GethTracer.ts +++ b/packages/executor/test/mocks/GethTracer.ts @@ -1,5 +1,5 @@ import { providers } from "ethers"; -import { BundlerCollectorReturn } from "types/lib/executor"; +import { BundlerCollectorReturn } from "types/src/executor"; import { TracerPrestateResponse } from "../../src/interfaces"; export class GethTracer { diff --git a/packages/executor/test/unit/services/MempoolService.test.ts b/packages/executor/test/unit/services/MempoolService.test.ts index 3f085954..1b451704 100644 --- a/packages/executor/test/unit/services/MempoolService.test.ts +++ b/packages/executor/test/unit/services/MempoolService.test.ts @@ -57,7 +57,7 @@ async function createUserOp(eth: Eth, wallet: Wallet) { userOp: unsignedUserOp, entryPoint: EntryPointAddress }); - unsignedUserOp = applyEstimatedUserOp(unsignedUserOp, response); + unsignedUserOp = applyEstimatedUserOp(unsignedUserOp, response as any); const userOp = await signUserOp(wallet, unsignedUserOp); return userOp; } \ No newline at end of file diff --git a/packages/executor/test/unit/services/ReputationService.test.ts b/packages/executor/test/unit/services/ReputationService.test.ts index ec1ca570..228cd1be 100644 --- a/packages/executor/test/unit/services/ReputationService.test.ts +++ b/packages/executor/test/unit/services/ReputationService.test.ts @@ -4,7 +4,7 @@ import { ReputationStatus } from 'types/src/executor'; import { randomAddress } from '../../utils'; import { getClient, getConfigs, getServices } from '../../fixtures'; import { assert } from 'chai'; -import * as RpcErrorCodes from 'types/lib/api/errors/rpc-error-codes'; +import * as RpcErrorCodes from 'types/src/api/errors/rpc-error-codes'; describe('Reputation Service', async () => { await getClient(); diff --git a/packages/executor/test/unit/services/UserOpValidationService.test.ts b/packages/executor/test/unit/services/UserOpValidationService.test.ts index add864a4..4ae14eb1 100644 --- a/packages/executor/test/unit/services/UserOpValidationService.test.ts +++ b/packages/executor/test/unit/services/UserOpValidationService.test.ts @@ -9,6 +9,7 @@ import { import { Wallet } from 'ethers'; import { setBalance } from '../../utils'; import { assert } from 'chai'; +import { UserOperation } from 'types/src/contracts/UserOperation'; describe('UserOpValidation Service', async () => { await getClient(); // runs anvil @@ -22,20 +23,16 @@ describe('UserOpValidation Service', async () => { ); it('Validate Gas Fee with maxFeePerGas less than baseFee', async () => { await setBalance(aaWalletAddress); - const userOp = { + const userOp: UserOperation = { sender: '0xcd4295624350aB5F3e5413a667472f68Dd6d0030', nonce: 0, - initCode: - '0x6cf2534c6aa425f20fb6a15fc836c8dd7e8f14e35fbfb9cf000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000', callGasLimit: 35000, - callData: - '0xb61d27f600000000000000000000000040379505221ef0a561fee9c70e2ed41586b0f435000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000', + callData: '0xb61d27f6', verificationGasLimit: 200000, maxFeePerGas: '5', maxPriorityFeePerGas: '10', preVerificationGas: 45000, signature: '0x', - paymasterAndData: '0x', }; try { diff --git a/packages/executor/test/utils/applyEstimatedUserOp.ts b/packages/executor/test/utils/applyEstimatedUserOp.ts index 247a0ae4..913e9162 100644 --- a/packages/executor/test/utils/applyEstimatedUserOp.ts +++ b/packages/executor/test/utils/applyEstimatedUserOp.ts @@ -1,7 +1,7 @@ +import { UserOperation } from "types/src/contracts/UserOperation"; import { EstimatedUserOperationGas } from "types/src/api/interfaces"; -import { UserOperationStruct } from "types/src/executor/contracts/EntryPoint"; -export function applyEstimatedUserOp(userOp: UserOperationStruct, estimated: EstimatedUserOperationGas) { +export function applyEstimatedUserOp(userOp: UserOperation, estimated: EstimatedUserOperationGas) { userOp.maxFeePerGas = estimated.maxFeePerGas; userOp.maxPriorityFeePerGas = estimated.maxPriorityFeePerGas; userOp.preVerificationGas = estimated.preVerificationGas; diff --git a/packages/executor/test/utils/setBalance.ts b/packages/executor/test/utils/setBalance.ts index 0728837f..891f6d4d 100644 --- a/packages/executor/test/utils/setBalance.ts +++ b/packages/executor/test/utils/setBalance.ts @@ -1,7 +1,6 @@ import { BigNumber, BigNumberish } from "ethers"; import { getClient } from "../fixtures"; import { parseEther } from "ethers/lib/utils"; -import { wait } from "../../src/utils"; export async function setBalance( address: string, diff --git a/packages/node/src/api/publishVerifiedUserOperationJSON.ts b/packages/node/src/api/publishVerifiedUserOperationJSON.ts index face33a6..91c3e8e3 100644 --- a/packages/node/src/api/publishVerifiedUserOperationJSON.ts +++ b/packages/node/src/api/publishVerifiedUserOperationJSON.ts @@ -1,5 +1,5 @@ import { toVerifiedUserOperation } from "params/lib/utils/userOp"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; +import { UserOperationStruct } from "types/lib/contracts/EPv6/EntryPoint"; import { NodeAPIModules } from "./types"; export default function api(modules: NodeAPIModules) { diff --git a/packages/params/src/gas-estimation/arbitrum.ts b/packages/params/src/gas-estimation/arbitrum.ts index e88b1150..ab346569 100644 --- a/packages/params/src/gas-estimation/arbitrum.ts +++ b/packages/params/src/gas-estimation/arbitrum.ts @@ -1,8 +1,7 @@ import { NodeInterface__factory } from "@arbitrum/sdk/dist/lib/abi/factories/NodeInterface__factory"; import { NODE_INTERFACE_ADDRESS } from "@arbitrum/sdk/dist/lib/dataEntities/constants"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; -import { BigNumber, BigNumberish, ethers } from "ethers"; -import { IEntryPoint__factory } from "types/lib/executor/contracts"; +import { BigNumber, BigNumberish } from "ethers"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { IPVGEstimator, IPVGEstimatorWrapper } from "../types/IPVGEstimator"; export const estimateArbitrumPVG: IPVGEstimatorWrapper = ( @@ -12,29 +11,23 @@ export const estimateArbitrumPVG: IPVGEstimatorWrapper = ( NODE_INTERFACE_ADDRESS, provider ); - const dummyWallet = ethers.Wallet.createRandom(); return async ( - entryPointAddr: string, - userOp: UserOperationStruct, - initial: BigNumberish + contractAddr: string, + data: string, + initial: BigNumberish, + options?: { + contractCreation?: boolean; + userOp?: UserOperation; + } ): Promise => { - const entryPoint = IEntryPoint__factory.connect(entryPointAddr, provider); - const handleOpsData = entryPoint.interface.encodeFunctionData("handleOps", [ - [userOp], - dummyWallet.address, - ]); - - const contractCreation = BigNumber.from(userOp.nonce).eq(0); try { const gasEstimateComponents = await nodeInterface.callStatic.gasEstimateL1Component( - entryPoint.address, - contractCreation, - handleOpsData + contractAddr, + options!.contractCreation!, + data ); const l1GasEstimated = gasEstimateComponents.gasEstimateForL1; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const baseFee = gasEstimateComponents.baseFee; return l1GasEstimated.add(initial); } catch (err) { // eslint-disable-next-line no-console diff --git a/packages/params/src/gas-estimation/mantle.ts b/packages/params/src/gas-estimation/mantle.ts index 4224a259..d9a71d54 100644 --- a/packages/params/src/gas-estimation/mantle.ts +++ b/packages/params/src/gas-estimation/mantle.ts @@ -1,24 +1,20 @@ -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; -import { BigNumber, BigNumberish, ethers } from "ethers"; -import { IEntryPoint__factory } from "types/lib/executor/contracts"; +import { BigNumber, BigNumberish } from "ethers"; import mantleSDK from "@mantleio/sdk"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { IPVGEstimator, IPVGEstimatorWrapper } from "../types/IPVGEstimator"; export const estimateMantlePVG: IPVGEstimatorWrapper = ( provider ): IPVGEstimator => { - const dummyWallet = ethers.Wallet.createRandom(); return async ( - entryPointAddr: string, - userOp: UserOperationStruct, - initial: BigNumberish + contractAddr: string, + data: string, + initial: BigNumberish, + options?: { + contractCreation?: boolean; + userOp?: UserOperation; + } ): Promise => { - const entryPoint = IEntryPoint__factory.connect(entryPointAddr, provider); - const handleOpsData = entryPoint.interface.encodeFunctionData("handleOps", [ - [userOp], - dummyWallet.address, - ]); - try { const mantleProvider = mantleSDK.asL2Provider(provider); const latestBlock = await provider.getBlock("latest"); @@ -26,12 +22,12 @@ export const estimateMantlePVG: IPVGEstimatorWrapper = ( throw new Error("no base fee"); } const l1GasCost = await mantleProvider.estimateL1GasCost({ - to: entryPointAddr, - data: handleOpsData, + to: contractAddr, + data: data, }); - const l2MaxFee = BigNumber.from(userOp.maxFeePerGas); + const l2MaxFee = BigNumber.from(options!.userOp!.maxFeePerGas); const l2PriorityFee = latestBlock.baseFeePerGas.add( - userOp.maxPriorityFeePerGas + options!.userOp!.maxPriorityFeePerGas ); const l2Price = l2MaxFee.lt(l2PriorityFee) ? l2MaxFee : l2PriorityFee; return l1GasCost.div(l2Price).add(initial); diff --git a/packages/params/src/gas-estimation/optimism.ts b/packages/params/src/gas-estimation/optimism.ts index 2f894b95..035a302a 100644 --- a/packages/params/src/gas-estimation/optimism.ts +++ b/packages/params/src/gas-estimation/optimism.ts @@ -1,36 +1,32 @@ -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; -import { BigNumber, BigNumberish, ethers } from "ethers"; -import { IEntryPoint__factory } from "types/lib/executor/contracts"; +import { BigNumber, BigNumberish } from "ethers"; import { estimateL1GasCost } from "@eth-optimism/sdk"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { IPVGEstimator, IPVGEstimatorWrapper } from "../types/IPVGEstimator"; export const estimateOptimismPVG: IPVGEstimatorWrapper = ( provider ): IPVGEstimator => { - const dummyWallet = ethers.Wallet.createRandom(); return async ( - entryPointAddr: string, - userOp: UserOperationStruct, - initial: BigNumberish + contractAddr: string, + data: string, + initial: BigNumberish, + options?: { + contractCreation?: boolean; + userOp?: UserOperation; + } ): Promise => { - const entryPoint = IEntryPoint__factory.connect(entryPointAddr, provider); - const handleOpsData = entryPoint.interface.encodeFunctionData("handleOps", [ - [userOp], - dummyWallet.address, - ]); - try { const latestBlock = await provider.getBlock("latest"); if (latestBlock.baseFeePerGas == null) { throw new Error("no base fee"); } const l1GasCost = await estimateL1GasCost(provider, { - to: entryPointAddr, - data: handleOpsData, + to: contractAddr, + data: data, }); - const l2MaxFee = BigNumber.from(userOp.maxFeePerGas); + const l2MaxFee = BigNumber.from(options!.userOp!.maxFeePerGas); const l2PriorityFee = latestBlock.baseFeePerGas.add( - userOp.maxPriorityFeePerGas + options!.userOp!.maxPriorityFeePerGas ); const l2Price = l2MaxFee.lt(l2PriorityFee) ? l2MaxFee : l2PriorityFee; return l1GasCost.div(l2Price).add(initial); diff --git a/packages/params/src/gas-price-oracles/oracles/interfaces.ts b/packages/params/src/gas-price-oracles/oracles/interfaces.ts index fbdccbac..5b4700bb 100644 --- a/packages/params/src/gas-price-oracles/oracles/interfaces.ts +++ b/packages/params/src/gas-price-oracles/oracles/interfaces.ts @@ -1,5 +1,5 @@ import { BigNumberish, ethers } from "ethers"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; +import { UserOperation } from "types/lib/contracts/UserOperation"; export type IGetGasFeeResult = { maxPriorityFeePerGas: BigNumberish | undefined; @@ -15,5 +15,5 @@ export type IOracle = ( export type IOracleOptions = { entryPoint: string; - userOp: UserOperationStruct; + userOp: UserOperation; }; diff --git a/packages/params/src/types/IPVGEstimator.ts b/packages/params/src/types/IPVGEstimator.ts index b6665eed..0c69b40c 100644 --- a/packages/params/src/types/IPVGEstimator.ts +++ b/packages/params/src/types/IPVGEstimator.ts @@ -1,12 +1,16 @@ import { BigNumber, BigNumberish, providers } from "ethers"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; +import { UserOperation } from "types/lib/contracts/UserOperation"; export type IPVGEstimatorWrapper = ( provider: providers.StaticJsonRpcProvider ) => IPVGEstimator; export type IPVGEstimator = ( - entryPointAddr: string, - userOp: UserOperationStruct, - initial: BigNumberish // initial amount of gas. It will be added to the estimated gas + contractAddr: string, + data: string, + initial: BigNumberish, // initial amount of gas. It will be added to the estimated gas + options?: { + contractCreation?: boolean; + userOp?: UserOperation; + } ) => Promise; diff --git a/packages/params/src/utils/userOp.ts b/packages/params/src/utils/userOp.ts index 30d227ab..fe69a64c 100644 --- a/packages/params/src/utils/userOp.ts +++ b/packages/params/src/utils/userOp.ts @@ -2,7 +2,7 @@ import { ssz, ts } from "types/lib"; import { Bytes32, UintBn256 } from "types/lib/primitive/sszTypes"; import { fromHex, toHex } from "utils/lib"; import { BigNumber, BigNumberish } from "ethers"; -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; +import { UserOperationStruct } from "types/lib/contracts/EPv6/EntryPoint"; import { getAddress } from "ethers/lib/utils"; const bigintToBigNumber = (bn: bigint): BigNumberish => { diff --git a/packages/types/src/api/interfaces.ts b/packages/types/src/api/interfaces.ts index f274b51c..604867fe 100644 --- a/packages/types/src/api/interfaces.ts +++ b/packages/types/src/api/interfaces.ts @@ -1,9 +1,9 @@ import { BigNumberish, providers } from "ethers"; -import { UserOperationStruct } from "../executor/contracts/EntryPoint"; import { IWhitelistedEntities } from "../executor"; +import { UserOperation } from "../contracts/UserOperation"; export type EstimatedUserOperationGas = - | { + & { preVerificationGas: BigNumberish; verificationGas: BigNumberish; verificationGasLimit: BigNumberish; @@ -11,10 +11,10 @@ export type EstimatedUserOperationGas = validAfter?: BigNumberish; validUntil?: BigNumberish; } - | GetGasPriceResponse; + & GetGasPriceResponse; export type UserOperationByHashResponse = { - userOperation: UserOperationStruct; + userOperation: UserOperation; entryPoint: string; blockNumber: number; blockHash: string; diff --git a/packages/types/src/executor/contracts/EntryPoint.ts b/packages/types/src/contracts/EPv6/EntryPoint.ts similarity index 100% rename from packages/types/src/executor/contracts/EntryPoint.ts rename to packages/types/src/contracts/EPv6/EntryPoint.ts diff --git a/packages/types/src/executor/contracts/EtherspotAccount.ts b/packages/types/src/contracts/EPv6/EtherspotAccount.ts similarity index 100% rename from packages/types/src/executor/contracts/EtherspotAccount.ts rename to packages/types/src/contracts/EPv6/EtherspotAccount.ts diff --git a/packages/types/src/executor/contracts/EtherspotAccountFactory.ts b/packages/types/src/contracts/EPv6/EtherspotAccountFactory.ts similarity index 100% rename from packages/types/src/executor/contracts/EtherspotAccountFactory.ts rename to packages/types/src/contracts/EPv6/EtherspotAccountFactory.ts diff --git a/packages/types/src/executor/contracts/IAccount.ts b/packages/types/src/contracts/EPv6/IAccount.ts similarity index 100% rename from packages/types/src/executor/contracts/IAccount.ts rename to packages/types/src/contracts/EPv6/IAccount.ts diff --git a/packages/types/src/executor/contracts/IAggregatedAccount.ts b/packages/types/src/contracts/EPv6/IAggregatedAccount.ts similarity index 100% rename from packages/types/src/executor/contracts/IAggregatedAccount.ts rename to packages/types/src/contracts/EPv6/IAggregatedAccount.ts diff --git a/packages/types/src/executor/contracts/IAggregator.ts b/packages/types/src/contracts/EPv6/IAggregator.ts similarity index 100% rename from packages/types/src/executor/contracts/IAggregator.ts rename to packages/types/src/contracts/EPv6/IAggregator.ts diff --git a/packages/types/src/executor/contracts/IMulticall3.ts b/packages/types/src/contracts/EPv6/IMulticall3.ts similarity index 100% rename from packages/types/src/executor/contracts/IMulticall3.ts rename to packages/types/src/contracts/EPv6/IMulticall3.ts diff --git a/packages/types/src/executor/contracts/IPaymaster.ts b/packages/types/src/contracts/EPv6/IPaymaster.ts similarity index 100% rename from packages/types/src/executor/contracts/IPaymaster.ts rename to packages/types/src/contracts/EPv6/IPaymaster.ts diff --git a/packages/types/src/executor/contracts/SenderCreator.ts b/packages/types/src/contracts/EPv6/SenderCreator.ts similarity index 100% rename from packages/types/src/executor/contracts/SenderCreator.ts rename to packages/types/src/contracts/EPv6/SenderCreator.ts diff --git a/packages/types/src/executor/contracts/SimpleAccount.ts b/packages/types/src/contracts/EPv6/SimpleAccount.ts similarity index 100% rename from packages/types/src/executor/contracts/SimpleAccount.ts rename to packages/types/src/contracts/EPv6/SimpleAccount.ts diff --git a/packages/types/src/executor/contracts/SimpleAccountFactory.ts b/packages/types/src/contracts/EPv6/SimpleAccountFactory.ts similarity index 100% rename from packages/types/src/executor/contracts/SimpleAccountFactory.ts rename to packages/types/src/contracts/EPv6/SimpleAccountFactory.ts diff --git a/packages/types/src/executor/contracts/StakeManager.ts b/packages/types/src/contracts/EPv6/StakeManager.ts similarity index 100% rename from packages/types/src/executor/contracts/StakeManager.ts rename to packages/types/src/contracts/EPv6/StakeManager.ts diff --git a/packages/types/src/executor/contracts/VerifyingPaymaster.ts b/packages/types/src/contracts/EPv6/VerifyingPaymaster.ts similarity index 100% rename from packages/types/src/executor/contracts/VerifyingPaymaster.ts rename to packages/types/src/contracts/EPv6/VerifyingPaymaster.ts diff --git a/packages/types/src/executor/contracts/common.ts b/packages/types/src/contracts/EPv6/common.ts similarity index 100% rename from packages/types/src/executor/contracts/common.ts rename to packages/types/src/contracts/EPv6/common.ts diff --git a/packages/types/src/executor/contracts/factories/EntryPoint__factory.ts b/packages/types/src/contracts/EPv6/factories/EntryPoint__factory.ts similarity index 100% rename from packages/types/src/executor/contracts/factories/EntryPoint__factory.ts rename to packages/types/src/contracts/EPv6/factories/EntryPoint__factory.ts diff --git a/packages/types/src/executor/contracts/factories/EtherspotAccountFactory__factory.ts b/packages/types/src/contracts/EPv6/factories/EtherspotAccountFactory__factory.ts similarity index 100% rename from packages/types/src/executor/contracts/factories/EtherspotAccountFactory__factory.ts rename to packages/types/src/contracts/EPv6/factories/EtherspotAccountFactory__factory.ts diff --git a/packages/types/src/executor/contracts/factories/EtherspotAccount__factory.ts b/packages/types/src/contracts/EPv6/factories/EtherspotAccount__factory.ts similarity index 100% rename from packages/types/src/executor/contracts/factories/EtherspotAccount__factory.ts rename to packages/types/src/contracts/EPv6/factories/EtherspotAccount__factory.ts diff --git a/packages/types/src/executor/contracts/factories/IAccount__factory.ts b/packages/types/src/contracts/EPv6/factories/IAccount__factory.ts similarity index 100% rename from packages/types/src/executor/contracts/factories/IAccount__factory.ts rename to packages/types/src/contracts/EPv6/factories/IAccount__factory.ts diff --git a/packages/types/src/executor/contracts/factories/IAggregatedAccount__factory.ts b/packages/types/src/contracts/EPv6/factories/IAggregatedAccount__factory.ts similarity index 100% rename from packages/types/src/executor/contracts/factories/IAggregatedAccount__factory.ts rename to packages/types/src/contracts/EPv6/factories/IAggregatedAccount__factory.ts diff --git a/packages/types/src/executor/contracts/factories/IAggregator__factory.ts b/packages/types/src/contracts/EPv6/factories/IAggregator__factory.ts similarity index 100% rename from packages/types/src/executor/contracts/factories/IAggregator__factory.ts rename to packages/types/src/contracts/EPv6/factories/IAggregator__factory.ts diff --git a/packages/types/src/executor/contracts/factories/IMulticall3__factory.ts b/packages/types/src/contracts/EPv6/factories/IMulticall3__factory.ts similarity index 100% rename from packages/types/src/executor/contracts/factories/IMulticall3__factory.ts rename to packages/types/src/contracts/EPv6/factories/IMulticall3__factory.ts diff --git a/packages/types/src/executor/contracts/factories/IPaymaster__factory.ts b/packages/types/src/contracts/EPv6/factories/IPaymaster__factory.ts similarity index 100% rename from packages/types/src/executor/contracts/factories/IPaymaster__factory.ts rename to packages/types/src/contracts/EPv6/factories/IPaymaster__factory.ts diff --git a/packages/types/src/executor/contracts/factories/SenderCreator__factory.ts b/packages/types/src/contracts/EPv6/factories/SenderCreator__factory.ts similarity index 100% rename from packages/types/src/executor/contracts/factories/SenderCreator__factory.ts rename to packages/types/src/contracts/EPv6/factories/SenderCreator__factory.ts diff --git a/packages/types/src/executor/contracts/factories/SimpleAccountFactory__factory.ts b/packages/types/src/contracts/EPv6/factories/SimpleAccountFactory__factory.ts similarity index 100% rename from packages/types/src/executor/contracts/factories/SimpleAccountFactory__factory.ts rename to packages/types/src/contracts/EPv6/factories/SimpleAccountFactory__factory.ts diff --git a/packages/types/src/executor/contracts/factories/SimpleAccount__factory.ts b/packages/types/src/contracts/EPv6/factories/SimpleAccount__factory.ts similarity index 100% rename from packages/types/src/executor/contracts/factories/SimpleAccount__factory.ts rename to packages/types/src/contracts/EPv6/factories/SimpleAccount__factory.ts diff --git a/packages/types/src/executor/contracts/factories/StakeManager__factory.ts b/packages/types/src/contracts/EPv6/factories/StakeManager__factory.ts similarity index 100% rename from packages/types/src/executor/contracts/factories/StakeManager__factory.ts rename to packages/types/src/contracts/EPv6/factories/StakeManager__factory.ts diff --git a/packages/types/src/executor/contracts/factories/index.ts b/packages/types/src/contracts/EPv6/factories/index.ts similarity index 100% rename from packages/types/src/executor/contracts/factories/index.ts rename to packages/types/src/contracts/EPv6/factories/index.ts diff --git a/packages/types/src/executor/contracts/index.ts b/packages/types/src/contracts/EPv6/index.ts similarity index 100% rename from packages/types/src/executor/contracts/index.ts rename to packages/types/src/contracts/EPv6/index.ts diff --git a/packages/types/src/contracts/EPv7/core/BaseAccount.ts b/packages/types/src/contracts/EPv7/core/BaseAccount.ts new file mode 100644 index 00000000..efd6c45a --- /dev/null +++ b/packages/types/src/contracts/EPv7/core/BaseAccount.ts @@ -0,0 +1,185 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export type PackedUserOperationStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + initCode: PromiseOrValue; + callData: PromiseOrValue; + accountGasLimits: PromiseOrValue; + preVerificationGas: PromiseOrValue; + gasFees: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + string, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + gasFees: string; + paymasterAndData: string; + signature: string; +}; + +export interface BaseAccountInterface extends utils.Interface { + functions: { + "entryPoint()": FunctionFragment; + "getNonce()": FunctionFragment; + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "entryPoint" | "getNonce" | "validateUserOp" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "entryPoint", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "getNonce", values?: undefined): string; + encodeFunctionData( + functionFragment: "validateUserOp", + values: [ + PackedUserOperationStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "entryPoint", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "getNonce", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "validateUserOp", + data: BytesLike + ): Result; + + events: {}; +} + +export interface BaseAccount extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: BaseAccountInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + entryPoint(overrides?: CallOverrides): Promise<[string]>; + + getNonce(overrides?: CallOverrides): Promise<[BigNumber]>; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + entryPoint(overrides?: CallOverrides): Promise; + + getNonce(overrides?: CallOverrides): Promise; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + entryPoint(overrides?: CallOverrides): Promise; + + getNonce(overrides?: CallOverrides): Promise; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + entryPoint(overrides?: CallOverrides): Promise; + + getNonce(overrides?: CallOverrides): Promise; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + entryPoint(overrides?: CallOverrides): Promise; + + getNonce(overrides?: CallOverrides): Promise; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/core/BasePaymaster.ts b/packages/types/src/contracts/EPv7/core/BasePaymaster.ts new file mode 100644 index 00000000..80fd290b --- /dev/null +++ b/packages/types/src/contracts/EPv7/core/BasePaymaster.ts @@ -0,0 +1,506 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export type PackedUserOperationStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + initCode: PromiseOrValue; + callData: PromiseOrValue; + accountGasLimits: PromiseOrValue; + preVerificationGas: PromiseOrValue; + gasFees: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + string, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + gasFees: string; + paymasterAndData: string; + signature: string; +}; + +export interface BasePaymasterInterface extends utils.Interface { + functions: { + "addStake(uint32)": FunctionFragment; + "deposit()": FunctionFragment; + "entryPoint()": FunctionFragment; + "getDeposit()": FunctionFragment; + "owner()": FunctionFragment; + "postOp(uint8,bytes,uint256,uint256)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "unlockStake()": FunctionFragment; + "validatePaymasterUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; + "withdrawStake(address)": FunctionFragment; + "withdrawTo(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addStake" + | "deposit" + | "entryPoint" + | "getDeposit" + | "owner" + | "postOp" + | "renounceOwnership" + | "transferOwnership" + | "unlockStake" + | "validatePaymasterUserOp" + | "withdrawStake" + | "withdrawTo" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "deposit", values?: undefined): string; + encodeFunctionData( + functionFragment: "entryPoint", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getDeposit", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "postOp", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "unlockStake", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "validatePaymasterUserOp", + values: [ + PackedUserOperationStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "withdrawStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawTo", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "addStake", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "entryPoint", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "getDeposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "postOp", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "unlockStake", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "validatePaymasterUserOp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawStake", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdrawTo", data: BytesLike): Result; + + events: { + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface BasePaymaster extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: BasePaymasterInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise<[string]>; + + getDeposit(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deposit(overrides?: CallOverrides): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake(overrides?: CallOverrides): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, BigNumber] & { context: string; validationData: BigNumber } + >; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/core/EntryPoint.ts b/packages/types/src/contracts/EPv7/core/EntryPoint.ts new file mode 100644 index 00000000..650fbe6e --- /dev/null +++ b/packages/types/src/contracts/EPv7/core/EntryPoint.ts @@ -0,0 +1,1191 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export type PackedUserOperationStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + initCode: PromiseOrValue; + callData: PromiseOrValue; + accountGasLimits: PromiseOrValue; + preVerificationGas: PromiseOrValue; + gasFees: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + string, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + gasFees: string; + paymasterAndData: string; + signature: string; +}; + +export declare namespace IStakeManager { + export type DepositInfoStruct = { + deposit: PromiseOrValue; + staked: PromiseOrValue; + stake: PromiseOrValue; + unstakeDelaySec: PromiseOrValue; + withdrawTime: PromiseOrValue; + }; + + export type DepositInfoStructOutput = [ + BigNumber, + boolean, + BigNumber, + number, + number + ] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + }; +} + +export declare namespace IEntryPoint { + export type UserOpsPerAggregatorStruct = { + userOps: PackedUserOperationStruct[]; + aggregator: PromiseOrValue; + signature: PromiseOrValue; + }; + + export type UserOpsPerAggregatorStructOutput = [ + PackedUserOperationStructOutput[], + string, + string + ] & { + userOps: PackedUserOperationStructOutput[]; + aggregator: string; + signature: string; + }; +} + +export declare namespace EntryPoint { + export type MemoryUserOpStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + verificationGasLimit: PromiseOrValue; + callGasLimit: PromiseOrValue; + paymasterVerificationGasLimit: PromiseOrValue; + paymasterPostOpGasLimit: PromiseOrValue; + preVerificationGas: PromiseOrValue; + paymaster: PromiseOrValue; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + }; + + export type MemoryUserOpStructOutput = [ + string, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + string, + BigNumber, + BigNumber + ] & { + sender: string; + nonce: BigNumber; + verificationGasLimit: BigNumber; + callGasLimit: BigNumber; + paymasterVerificationGasLimit: BigNumber; + paymasterPostOpGasLimit: BigNumber; + preVerificationGas: BigNumber; + paymaster: string; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + }; + + export type UserOpInfoStruct = { + mUserOp: EntryPoint.MemoryUserOpStruct; + userOpHash: PromiseOrValue; + prefund: PromiseOrValue; + contextOffset: PromiseOrValue; + preOpGas: PromiseOrValue; + }; + + export type UserOpInfoStructOutput = [ + EntryPoint.MemoryUserOpStructOutput, + string, + BigNumber, + BigNumber, + BigNumber + ] & { + mUserOp: EntryPoint.MemoryUserOpStructOutput; + userOpHash: string; + prefund: BigNumber; + contextOffset: BigNumber; + preOpGas: BigNumber; + }; +} + +export interface EntryPointInterface extends utils.Interface { + functions: { + "addStake(uint32)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "delegateAndRevert(address,bytes)": FunctionFragment; + "depositTo(address)": FunctionFragment; + "deposits(address)": FunctionFragment; + "getDepositInfo(address)": FunctionFragment; + "getNonce(address,uint192)": FunctionFragment; + "getSenderAddress(bytes)": FunctionFragment; + "getUserOpHash((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))": FunctionFragment; + "handleAggregatedOps(((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes)[],address,bytes)[],address)": FunctionFragment; + "handleOps((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes)[],address)": FunctionFragment; + "incrementNonce(uint192)": FunctionFragment; + "innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)": FunctionFragment; + "nonceSequenceNumber(address,uint192)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "unlockStake()": FunctionFragment; + "withdrawStake(address)": FunctionFragment; + "withdrawTo(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addStake" + | "balanceOf" + | "delegateAndRevert" + | "depositTo" + | "deposits" + | "getDepositInfo" + | "getNonce" + | "getSenderAddress" + | "getUserOpHash" + | "handleAggregatedOps" + | "handleOps" + | "incrementNonce" + | "innerHandleOp" + | "nonceSequenceNumber" + | "supportsInterface" + | "unlockStake" + | "withdrawStake" + | "withdrawTo" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "delegateAndRevert", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "depositTo", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "deposits", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getDepositInfo", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getNonce", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSenderAddress", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getUserOpHash", + values: [PackedUserOperationStruct] + ): string; + encodeFunctionData( + functionFragment: "handleAggregatedOps", + values: [IEntryPoint.UserOpsPerAggregatorStruct[], PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "handleOps", + values: [PackedUserOperationStruct[], PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "incrementNonce", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "innerHandleOp", + values: [ + PromiseOrValue, + EntryPoint.UserOpInfoStruct, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "nonceSequenceNumber", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "unlockStake", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdrawStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawTo", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "addStake", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "delegateAndRevert", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "depositTo", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposits", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getDepositInfo", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getNonce", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getSenderAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getUserOpHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "handleAggregatedOps", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "handleOps", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "incrementNonce", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "innerHandleOp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "nonceSequenceNumber", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "unlockStake", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawStake", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdrawTo", data: BytesLike): Result; + + events: { + "AccountDeployed(bytes32,address,address,address)": EventFragment; + "BeforeExecution()": EventFragment; + "Deposited(address,uint256)": EventFragment; + "PostOpRevertReason(bytes32,address,uint256,bytes)": EventFragment; + "SignatureAggregatorChanged(address)": EventFragment; + "StakeLocked(address,uint256,uint256)": EventFragment; + "StakeUnlocked(address,uint256)": EventFragment; + "StakeWithdrawn(address,address,uint256)": EventFragment; + "UserOperationEvent(bytes32,address,address,uint256,bool,uint256,uint256)": EventFragment; + "UserOperationPrefundTooLow(bytes32,address,uint256)": EventFragment; + "UserOperationRevertReason(bytes32,address,uint256,bytes)": EventFragment; + "Withdrawn(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "AccountDeployed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "BeforeExecution"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Deposited"): EventFragment; + getEvent(nameOrSignatureOrTopic: "PostOpRevertReason"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SignatureAggregatorChanged"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeLocked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeUnlocked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeWithdrawn"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationEvent"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationPrefundTooLow"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationRevertReason"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Withdrawn"): EventFragment; +} + +export interface AccountDeployedEventObject { + userOpHash: string; + sender: string; + factory: string; + paymaster: string; +} +export type AccountDeployedEvent = TypedEvent< + [string, string, string, string], + AccountDeployedEventObject +>; + +export type AccountDeployedEventFilter = TypedEventFilter; + +export interface BeforeExecutionEventObject {} +export type BeforeExecutionEvent = TypedEvent<[], BeforeExecutionEventObject>; + +export type BeforeExecutionEventFilter = TypedEventFilter; + +export interface DepositedEventObject { + account: string; + totalDeposit: BigNumber; +} +export type DepositedEvent = TypedEvent< + [string, BigNumber], + DepositedEventObject +>; + +export type DepositedEventFilter = TypedEventFilter; + +export interface PostOpRevertReasonEventObject { + userOpHash: string; + sender: string; + nonce: BigNumber; + revertReason: string; +} +export type PostOpRevertReasonEvent = TypedEvent< + [string, string, BigNumber, string], + PostOpRevertReasonEventObject +>; + +export type PostOpRevertReasonEventFilter = + TypedEventFilter; + +export interface SignatureAggregatorChangedEventObject { + aggregator: string; +} +export type SignatureAggregatorChangedEvent = TypedEvent< + [string], + SignatureAggregatorChangedEventObject +>; + +export type SignatureAggregatorChangedEventFilter = + TypedEventFilter; + +export interface StakeLockedEventObject { + account: string; + totalStaked: BigNumber; + unstakeDelaySec: BigNumber; +} +export type StakeLockedEvent = TypedEvent< + [string, BigNumber, BigNumber], + StakeLockedEventObject +>; + +export type StakeLockedEventFilter = TypedEventFilter; + +export interface StakeUnlockedEventObject { + account: string; + withdrawTime: BigNumber; +} +export type StakeUnlockedEvent = TypedEvent< + [string, BigNumber], + StakeUnlockedEventObject +>; + +export type StakeUnlockedEventFilter = TypedEventFilter; + +export interface StakeWithdrawnEventObject { + account: string; + withdrawAddress: string; + amount: BigNumber; +} +export type StakeWithdrawnEvent = TypedEvent< + [string, string, BigNumber], + StakeWithdrawnEventObject +>; + +export type StakeWithdrawnEventFilter = TypedEventFilter; + +export interface UserOperationEventEventObject { + userOpHash: string; + sender: string; + paymaster: string; + nonce: BigNumber; + success: boolean; + actualGasCost: BigNumber; + actualGasUsed: BigNumber; +} +export type UserOperationEventEvent = TypedEvent< + [string, string, string, BigNumber, boolean, BigNumber, BigNumber], + UserOperationEventEventObject +>; + +export type UserOperationEventEventFilter = + TypedEventFilter; + +export interface UserOperationPrefundTooLowEventObject { + userOpHash: string; + sender: string; + nonce: BigNumber; +} +export type UserOperationPrefundTooLowEvent = TypedEvent< + [string, string, BigNumber], + UserOperationPrefundTooLowEventObject +>; + +export type UserOperationPrefundTooLowEventFilter = + TypedEventFilter; + +export interface UserOperationRevertReasonEventObject { + userOpHash: string; + sender: string; + nonce: BigNumber; + revertReason: string; +} +export type UserOperationRevertReasonEvent = TypedEvent< + [string, string, BigNumber, string], + UserOperationRevertReasonEventObject +>; + +export type UserOperationRevertReasonEventFilter = + TypedEventFilter; + +export interface WithdrawnEventObject { + account: string; + withdrawAddress: string; + amount: BigNumber; +} +export type WithdrawnEvent = TypedEvent< + [string, string, BigNumber], + WithdrawnEventObject +>; + +export type WithdrawnEventFilter = TypedEventFilter; + +export interface EntryPoint extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: EntryPointInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, boolean, BigNumber, number, number] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + } + >; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [IStakeManager.DepositInfoStructOutput] & { + info: IStakeManager.DepositInfoStructOutput; + } + >; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { nonce: BigNumber }>; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise<[string]>; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + innerHandleOp( + callData: PromiseOrValue, + opInfo: EntryPoint.UserOpInfoStruct, + context: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, boolean, BigNumber, number, number] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + } + >; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + innerHandleOp( + callData: PromiseOrValue, + opInfo: EntryPoint.UserOpInfoStruct, + context: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, boolean, BigNumber, number, number] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + } + >; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + innerHandleOp( + callData: PromiseOrValue, + opInfo: EntryPoint.UserOpInfoStruct, + context: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake(overrides?: CallOverrides): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "AccountDeployed(bytes32,address,address,address)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + factory?: null, + paymaster?: null + ): AccountDeployedEventFilter; + AccountDeployed( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + factory?: null, + paymaster?: null + ): AccountDeployedEventFilter; + + "BeforeExecution()"(): BeforeExecutionEventFilter; + BeforeExecution(): BeforeExecutionEventFilter; + + "Deposited(address,uint256)"( + account?: PromiseOrValue | null, + totalDeposit?: null + ): DepositedEventFilter; + Deposited( + account?: PromiseOrValue | null, + totalDeposit?: null + ): DepositedEventFilter; + + "PostOpRevertReason(bytes32,address,uint256,bytes)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): PostOpRevertReasonEventFilter; + PostOpRevertReason( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): PostOpRevertReasonEventFilter; + + "SignatureAggregatorChanged(address)"( + aggregator?: PromiseOrValue | null + ): SignatureAggregatorChangedEventFilter; + SignatureAggregatorChanged( + aggregator?: PromiseOrValue | null + ): SignatureAggregatorChangedEventFilter; + + "StakeLocked(address,uint256,uint256)"( + account?: PromiseOrValue | null, + totalStaked?: null, + unstakeDelaySec?: null + ): StakeLockedEventFilter; + StakeLocked( + account?: PromiseOrValue | null, + totalStaked?: null, + unstakeDelaySec?: null + ): StakeLockedEventFilter; + + "StakeUnlocked(address,uint256)"( + account?: PromiseOrValue | null, + withdrawTime?: null + ): StakeUnlockedEventFilter; + StakeUnlocked( + account?: PromiseOrValue | null, + withdrawTime?: null + ): StakeUnlockedEventFilter; + + "StakeWithdrawn(address,address,uint256)"( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): StakeWithdrawnEventFilter; + StakeWithdrawn( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): StakeWithdrawnEventFilter; + + "UserOperationEvent(bytes32,address,address,uint256,bool,uint256,uint256)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + paymaster?: PromiseOrValue | null, + nonce?: null, + success?: null, + actualGasCost?: null, + actualGasUsed?: null + ): UserOperationEventEventFilter; + UserOperationEvent( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + paymaster?: PromiseOrValue | null, + nonce?: null, + success?: null, + actualGasCost?: null, + actualGasUsed?: null + ): UserOperationEventEventFilter; + + "UserOperationPrefundTooLow(bytes32,address,uint256)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null + ): UserOperationPrefundTooLowEventFilter; + UserOperationPrefundTooLow( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null + ): UserOperationPrefundTooLowEventFilter; + + "UserOperationRevertReason(bytes32,address,uint256,bytes)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): UserOperationRevertReasonEventFilter; + UserOperationRevertReason( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): UserOperationRevertReasonEventFilter; + + "Withdrawn(address,address,uint256)"( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): WithdrawnEventFilter; + Withdrawn( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): WithdrawnEventFilter; + }; + + estimateGas: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + innerHandleOp( + callData: PromiseOrValue, + opInfo: EntryPoint.UserOpInfoStruct, + context: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + innerHandleOp( + callData: PromiseOrValue, + opInfo: EntryPoint.UserOpInfoStruct, + context: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/core/EntryPointSimulations.ts b/packages/types/src/contracts/EPv7/core/EntryPointSimulations.ts new file mode 100644 index 00000000..c09186ae --- /dev/null +++ b/packages/types/src/contracts/EPv7/core/EntryPointSimulations.ts @@ -0,0 +1,1415 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export type PackedUserOperationStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + initCode: PromiseOrValue; + callData: PromiseOrValue; + accountGasLimits: PromiseOrValue; + preVerificationGas: PromiseOrValue; + gasFees: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + string, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + gasFees: string; + paymasterAndData: string; + signature: string; +}; + +export declare namespace IStakeManager { + export type DepositInfoStruct = { + deposit: PromiseOrValue; + staked: PromiseOrValue; + stake: PromiseOrValue; + unstakeDelaySec: PromiseOrValue; + withdrawTime: PromiseOrValue; + }; + + export type DepositInfoStructOutput = [ + BigNumber, + boolean, + BigNumber, + number, + number + ] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + }; + + export type StakeInfoStruct = { + stake: PromiseOrValue; + unstakeDelaySec: PromiseOrValue; + }; + + export type StakeInfoStructOutput = [BigNumber, BigNumber] & { + stake: BigNumber; + unstakeDelaySec: BigNumber; + }; +} + +export declare namespace IEntryPoint { + export type UserOpsPerAggregatorStruct = { + userOps: PackedUserOperationStruct[]; + aggregator: PromiseOrValue; + signature: PromiseOrValue; + }; + + export type UserOpsPerAggregatorStructOutput = [ + PackedUserOperationStructOutput[], + string, + string + ] & { + userOps: PackedUserOperationStructOutput[]; + aggregator: string; + signature: string; + }; + + export type ReturnInfoStruct = { + preOpGas: PromiseOrValue; + prefund: PromiseOrValue; + accountValidationData: PromiseOrValue; + paymasterValidationData: PromiseOrValue; + paymasterContext: PromiseOrValue; + }; + + export type ReturnInfoStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + string + ] & { + preOpGas: BigNumber; + prefund: BigNumber; + accountValidationData: BigNumber; + paymasterValidationData: BigNumber; + paymasterContext: string; + }; + + export type AggregatorStakeInfoStruct = { + aggregator: PromiseOrValue; + stakeInfo: IStakeManager.StakeInfoStruct; + }; + + export type AggregatorStakeInfoStructOutput = [ + string, + IStakeManager.StakeInfoStructOutput + ] & { aggregator: string; stakeInfo: IStakeManager.StakeInfoStructOutput }; +} + +export declare namespace EntryPoint { + export type MemoryUserOpStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + verificationGasLimit: PromiseOrValue; + callGasLimit: PromiseOrValue; + paymasterVerificationGasLimit: PromiseOrValue; + paymasterPostOpGasLimit: PromiseOrValue; + preVerificationGas: PromiseOrValue; + paymaster: PromiseOrValue; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + }; + + export type MemoryUserOpStructOutput = [ + string, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + string, + BigNumber, + BigNumber + ] & { + sender: string; + nonce: BigNumber; + verificationGasLimit: BigNumber; + callGasLimit: BigNumber; + paymasterVerificationGasLimit: BigNumber; + paymasterPostOpGasLimit: BigNumber; + preVerificationGas: BigNumber; + paymaster: string; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + }; + + export type UserOpInfoStruct = { + mUserOp: EntryPoint.MemoryUserOpStruct; + userOpHash: PromiseOrValue; + prefund: PromiseOrValue; + contextOffset: PromiseOrValue; + preOpGas: PromiseOrValue; + }; + + export type UserOpInfoStructOutput = [ + EntryPoint.MemoryUserOpStructOutput, + string, + BigNumber, + BigNumber, + BigNumber + ] & { + mUserOp: EntryPoint.MemoryUserOpStructOutput; + userOpHash: string; + prefund: BigNumber; + contextOffset: BigNumber; + preOpGas: BigNumber; + }; +} + +export declare namespace IEntryPointSimulations { + export type ExecutionResultStruct = { + preOpGas: PromiseOrValue; + paid: PromiseOrValue; + accountValidationData: PromiseOrValue; + paymasterValidationData: PromiseOrValue; + targetSuccess: PromiseOrValue; + targetResult: PromiseOrValue; + }; + + export type ExecutionResultStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + boolean, + string + ] & { + preOpGas: BigNumber; + paid: BigNumber; + accountValidationData: BigNumber; + paymasterValidationData: BigNumber; + targetSuccess: boolean; + targetResult: string; + }; + + export type ValidationResultStruct = { + returnInfo: IEntryPoint.ReturnInfoStruct; + senderInfo: IStakeManager.StakeInfoStruct; + factoryInfo: IStakeManager.StakeInfoStruct; + paymasterInfo: IStakeManager.StakeInfoStruct; + aggregatorInfo: IEntryPoint.AggregatorStakeInfoStruct; + }; + + export type ValidationResultStructOutput = [ + IEntryPoint.ReturnInfoStructOutput, + IStakeManager.StakeInfoStructOutput, + IStakeManager.StakeInfoStructOutput, + IStakeManager.StakeInfoStructOutput, + IEntryPoint.AggregatorStakeInfoStructOutput + ] & { + returnInfo: IEntryPoint.ReturnInfoStructOutput; + senderInfo: IStakeManager.StakeInfoStructOutput; + factoryInfo: IStakeManager.StakeInfoStructOutput; + paymasterInfo: IStakeManager.StakeInfoStructOutput; + aggregatorInfo: IEntryPoint.AggregatorStakeInfoStructOutput; + }; +} + +export interface EntryPointSimulationsInterface extends utils.Interface { + functions: { + "_validateSenderAndPaymaster(bytes,address,bytes)": FunctionFragment; + "addStake(uint32)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "delegateAndRevert(address,bytes)": FunctionFragment; + "depositTo(address)": FunctionFragment; + "deposits(address)": FunctionFragment; + "getDepositInfo(address)": FunctionFragment; + "getNonce(address,uint192)": FunctionFragment; + "getSenderAddress(bytes)": FunctionFragment; + "getUserOpHash((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))": FunctionFragment; + "handleAggregatedOps(((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes)[],address,bytes)[],address)": FunctionFragment; + "handleOps((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes)[],address)": FunctionFragment; + "incrementNonce(uint192)": FunctionFragment; + "innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)": FunctionFragment; + "nonceSequenceNumber(address,uint192)": FunctionFragment; + "simulateHandleOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),address,bytes)": FunctionFragment; + "simulateValidation((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "unlockStake()": FunctionFragment; + "withdrawStake(address)": FunctionFragment; + "withdrawTo(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "_validateSenderAndPaymaster" + | "addStake" + | "balanceOf" + | "delegateAndRevert" + | "depositTo" + | "deposits" + | "getDepositInfo" + | "getNonce" + | "getSenderAddress" + | "getUserOpHash" + | "handleAggregatedOps" + | "handleOps" + | "incrementNonce" + | "innerHandleOp" + | "nonceSequenceNumber" + | "simulateHandleOp" + | "simulateValidation" + | "supportsInterface" + | "unlockStake" + | "withdrawStake" + | "withdrawTo" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "_validateSenderAndPaymaster", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "addStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "delegateAndRevert", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "depositTo", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "deposits", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getDepositInfo", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getNonce", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSenderAddress", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getUserOpHash", + values: [PackedUserOperationStruct] + ): string; + encodeFunctionData( + functionFragment: "handleAggregatedOps", + values: [IEntryPoint.UserOpsPerAggregatorStruct[], PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "handleOps", + values: [PackedUserOperationStruct[], PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "incrementNonce", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "innerHandleOp", + values: [ + PromiseOrValue, + EntryPoint.UserOpInfoStruct, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "nonceSequenceNumber", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "simulateHandleOp", + values: [ + PackedUserOperationStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "simulateValidation", + values: [PackedUserOperationStruct] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "unlockStake", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdrawStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawTo", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "_validateSenderAndPaymaster", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "addStake", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "delegateAndRevert", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "depositTo", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposits", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getDepositInfo", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getNonce", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getSenderAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getUserOpHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "handleAggregatedOps", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "handleOps", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "incrementNonce", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "innerHandleOp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "nonceSequenceNumber", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "simulateHandleOp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "simulateValidation", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "unlockStake", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawStake", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdrawTo", data: BytesLike): Result; + + events: { + "AccountDeployed(bytes32,address,address,address)": EventFragment; + "BeforeExecution()": EventFragment; + "Deposited(address,uint256)": EventFragment; + "PostOpRevertReason(bytes32,address,uint256,bytes)": EventFragment; + "SignatureAggregatorChanged(address)": EventFragment; + "StakeLocked(address,uint256,uint256)": EventFragment; + "StakeUnlocked(address,uint256)": EventFragment; + "StakeWithdrawn(address,address,uint256)": EventFragment; + "UserOperationEvent(bytes32,address,address,uint256,bool,uint256,uint256)": EventFragment; + "UserOperationPrefundTooLow(bytes32,address,uint256)": EventFragment; + "UserOperationRevertReason(bytes32,address,uint256,bytes)": EventFragment; + "Withdrawn(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "AccountDeployed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "BeforeExecution"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Deposited"): EventFragment; + getEvent(nameOrSignatureOrTopic: "PostOpRevertReason"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SignatureAggregatorChanged"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeLocked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeUnlocked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeWithdrawn"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationEvent"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationPrefundTooLow"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationRevertReason"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Withdrawn"): EventFragment; +} + +export interface AccountDeployedEventObject { + userOpHash: string; + sender: string; + factory: string; + paymaster: string; +} +export type AccountDeployedEvent = TypedEvent< + [string, string, string, string], + AccountDeployedEventObject +>; + +export type AccountDeployedEventFilter = TypedEventFilter; + +export interface BeforeExecutionEventObject {} +export type BeforeExecutionEvent = TypedEvent<[], BeforeExecutionEventObject>; + +export type BeforeExecutionEventFilter = TypedEventFilter; + +export interface DepositedEventObject { + account: string; + totalDeposit: BigNumber; +} +export type DepositedEvent = TypedEvent< + [string, BigNumber], + DepositedEventObject +>; + +export type DepositedEventFilter = TypedEventFilter; + +export interface PostOpRevertReasonEventObject { + userOpHash: string; + sender: string; + nonce: BigNumber; + revertReason: string; +} +export type PostOpRevertReasonEvent = TypedEvent< + [string, string, BigNumber, string], + PostOpRevertReasonEventObject +>; + +export type PostOpRevertReasonEventFilter = + TypedEventFilter; + +export interface SignatureAggregatorChangedEventObject { + aggregator: string; +} +export type SignatureAggregatorChangedEvent = TypedEvent< + [string], + SignatureAggregatorChangedEventObject +>; + +export type SignatureAggregatorChangedEventFilter = + TypedEventFilter; + +export interface StakeLockedEventObject { + account: string; + totalStaked: BigNumber; + unstakeDelaySec: BigNumber; +} +export type StakeLockedEvent = TypedEvent< + [string, BigNumber, BigNumber], + StakeLockedEventObject +>; + +export type StakeLockedEventFilter = TypedEventFilter; + +export interface StakeUnlockedEventObject { + account: string; + withdrawTime: BigNumber; +} +export type StakeUnlockedEvent = TypedEvent< + [string, BigNumber], + StakeUnlockedEventObject +>; + +export type StakeUnlockedEventFilter = TypedEventFilter; + +export interface StakeWithdrawnEventObject { + account: string; + withdrawAddress: string; + amount: BigNumber; +} +export type StakeWithdrawnEvent = TypedEvent< + [string, string, BigNumber], + StakeWithdrawnEventObject +>; + +export type StakeWithdrawnEventFilter = TypedEventFilter; + +export interface UserOperationEventEventObject { + userOpHash: string; + sender: string; + paymaster: string; + nonce: BigNumber; + success: boolean; + actualGasCost: BigNumber; + actualGasUsed: BigNumber; +} +export type UserOperationEventEvent = TypedEvent< + [string, string, string, BigNumber, boolean, BigNumber, BigNumber], + UserOperationEventEventObject +>; + +export type UserOperationEventEventFilter = + TypedEventFilter; + +export interface UserOperationPrefundTooLowEventObject { + userOpHash: string; + sender: string; + nonce: BigNumber; +} +export type UserOperationPrefundTooLowEvent = TypedEvent< + [string, string, BigNumber], + UserOperationPrefundTooLowEventObject +>; + +export type UserOperationPrefundTooLowEventFilter = + TypedEventFilter; + +export interface UserOperationRevertReasonEventObject { + userOpHash: string; + sender: string; + nonce: BigNumber; + revertReason: string; +} +export type UserOperationRevertReasonEvent = TypedEvent< + [string, string, BigNumber, string], + UserOperationRevertReasonEventObject +>; + +export type UserOperationRevertReasonEventFilter = + TypedEventFilter; + +export interface WithdrawnEventObject { + account: string; + withdrawAddress: string; + amount: BigNumber; +} +export type WithdrawnEvent = TypedEvent< + [string, string, BigNumber], + WithdrawnEventObject +>; + +export type WithdrawnEventFilter = TypedEventFilter; + +export interface EntryPointSimulations extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: EntryPointSimulationsInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + _validateSenderAndPaymaster( + initCode: PromiseOrValue, + sender: PromiseOrValue, + paymasterAndData: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[void]>; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, boolean, BigNumber, number, number] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + } + >; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [IStakeManager.DepositInfoStructOutput] & { + info: IStakeManager.DepositInfoStructOutput; + } + >; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { nonce: BigNumber }>; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise<[string]>; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + innerHandleOp( + callData: PromiseOrValue, + opInfo: EntryPoint.UserOpInfoStruct, + context: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + simulateHandleOp( + op: PackedUserOperationStruct, + target: PromiseOrValue, + targetCallData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + simulateValidation( + userOp: PackedUserOperationStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + _validateSenderAndPaymaster( + initCode: PromiseOrValue, + sender: PromiseOrValue, + paymasterAndData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, boolean, BigNumber, number, number] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + } + >; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + innerHandleOp( + callData: PromiseOrValue, + opInfo: EntryPoint.UserOpInfoStruct, + context: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + simulateHandleOp( + op: PackedUserOperationStruct, + target: PromiseOrValue, + targetCallData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + simulateValidation( + userOp: PackedUserOperationStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + _validateSenderAndPaymaster( + initCode: PromiseOrValue, + sender: PromiseOrValue, + paymasterAndData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, boolean, BigNumber, number, number] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + } + >; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + innerHandleOp( + callData: PromiseOrValue, + opInfo: EntryPoint.UserOpInfoStruct, + context: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + simulateHandleOp( + op: PackedUserOperationStruct, + target: PromiseOrValue, + targetCallData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + simulateValidation( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake(overrides?: CallOverrides): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "AccountDeployed(bytes32,address,address,address)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + factory?: null, + paymaster?: null + ): AccountDeployedEventFilter; + AccountDeployed( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + factory?: null, + paymaster?: null + ): AccountDeployedEventFilter; + + "BeforeExecution()"(): BeforeExecutionEventFilter; + BeforeExecution(): BeforeExecutionEventFilter; + + "Deposited(address,uint256)"( + account?: PromiseOrValue | null, + totalDeposit?: null + ): DepositedEventFilter; + Deposited( + account?: PromiseOrValue | null, + totalDeposit?: null + ): DepositedEventFilter; + + "PostOpRevertReason(bytes32,address,uint256,bytes)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): PostOpRevertReasonEventFilter; + PostOpRevertReason( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): PostOpRevertReasonEventFilter; + + "SignatureAggregatorChanged(address)"( + aggregator?: PromiseOrValue | null + ): SignatureAggregatorChangedEventFilter; + SignatureAggregatorChanged( + aggregator?: PromiseOrValue | null + ): SignatureAggregatorChangedEventFilter; + + "StakeLocked(address,uint256,uint256)"( + account?: PromiseOrValue | null, + totalStaked?: null, + unstakeDelaySec?: null + ): StakeLockedEventFilter; + StakeLocked( + account?: PromiseOrValue | null, + totalStaked?: null, + unstakeDelaySec?: null + ): StakeLockedEventFilter; + + "StakeUnlocked(address,uint256)"( + account?: PromiseOrValue | null, + withdrawTime?: null + ): StakeUnlockedEventFilter; + StakeUnlocked( + account?: PromiseOrValue | null, + withdrawTime?: null + ): StakeUnlockedEventFilter; + + "StakeWithdrawn(address,address,uint256)"( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): StakeWithdrawnEventFilter; + StakeWithdrawn( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): StakeWithdrawnEventFilter; + + "UserOperationEvent(bytes32,address,address,uint256,bool,uint256,uint256)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + paymaster?: PromiseOrValue | null, + nonce?: null, + success?: null, + actualGasCost?: null, + actualGasUsed?: null + ): UserOperationEventEventFilter; + UserOperationEvent( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + paymaster?: PromiseOrValue | null, + nonce?: null, + success?: null, + actualGasCost?: null, + actualGasUsed?: null + ): UserOperationEventEventFilter; + + "UserOperationPrefundTooLow(bytes32,address,uint256)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null + ): UserOperationPrefundTooLowEventFilter; + UserOperationPrefundTooLow( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null + ): UserOperationPrefundTooLowEventFilter; + + "UserOperationRevertReason(bytes32,address,uint256,bytes)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): UserOperationRevertReasonEventFilter; + UserOperationRevertReason( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): UserOperationRevertReasonEventFilter; + + "Withdrawn(address,address,uint256)"( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): WithdrawnEventFilter; + Withdrawn( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): WithdrawnEventFilter; + }; + + estimateGas: { + _validateSenderAndPaymaster( + initCode: PromiseOrValue, + sender: PromiseOrValue, + paymasterAndData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + innerHandleOp( + callData: PromiseOrValue, + opInfo: EntryPoint.UserOpInfoStruct, + context: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + simulateHandleOp( + op: PackedUserOperationStruct, + target: PromiseOrValue, + targetCallData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + simulateValidation( + userOp: PackedUserOperationStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + _validateSenderAndPaymaster( + initCode: PromiseOrValue, + sender: PromiseOrValue, + paymasterAndData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + innerHandleOp( + callData: PromiseOrValue, + opInfo: EntryPoint.UserOpInfoStruct, + context: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + simulateHandleOp( + op: PackedUserOperationStruct, + target: PromiseOrValue, + targetCallData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + simulateValidation( + userOp: PackedUserOperationStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/core/NonceManager.ts b/packages/types/src/contracts/EPv7/core/NonceManager.ts new file mode 100644 index 00000000..ba297877 --- /dev/null +++ b/packages/types/src/contracts/EPv7/core/NonceManager.ts @@ -0,0 +1,186 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface NonceManagerInterface extends utils.Interface { + functions: { + "getNonce(address,uint192)": FunctionFragment; + "incrementNonce(uint192)": FunctionFragment; + "nonceSequenceNumber(address,uint192)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "getNonce" + | "incrementNonce" + | "nonceSequenceNumber" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "getNonce", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "incrementNonce", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "nonceSequenceNumber", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "getNonce", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "incrementNonce", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "nonceSequenceNumber", + data: BytesLike + ): Result; + + events: {}; +} + +export interface NonceManager extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: NonceManagerInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { nonce: BigNumber }>; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonceSequenceNumber( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/core/SenderCreator.ts b/packages/types/src/contracts/EPv7/core/SenderCreator.ts new file mode 100644 index 00000000..8ed463e0 --- /dev/null +++ b/packages/types/src/contracts/EPv7/core/SenderCreator.ts @@ -0,0 +1,105 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface SenderCreatorInterface extends utils.Interface { + functions: { + "createSender(bytes)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "createSender"): FunctionFragment; + + encodeFunctionData( + functionFragment: "createSender", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "createSender", + data: BytesLike + ): Result; + + events: {}; +} + +export interface SenderCreator extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SenderCreatorInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + createSender( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + createSender( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + createSender( + initCode: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + createSender( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + createSender( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/core/StakeManager.ts b/packages/types/src/contracts/EPv7/core/StakeManager.ts new file mode 100644 index 00000000..94185694 --- /dev/null +++ b/packages/types/src/contracts/EPv7/core/StakeManager.ts @@ -0,0 +1,515 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export declare namespace IStakeManager { + export type DepositInfoStruct = { + deposit: PromiseOrValue; + staked: PromiseOrValue; + stake: PromiseOrValue; + unstakeDelaySec: PromiseOrValue; + withdrawTime: PromiseOrValue; + }; + + export type DepositInfoStructOutput = [ + BigNumber, + boolean, + BigNumber, + number, + number + ] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + }; +} + +export interface StakeManagerInterface extends utils.Interface { + functions: { + "addStake(uint32)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "depositTo(address)": FunctionFragment; + "deposits(address)": FunctionFragment; + "getDepositInfo(address)": FunctionFragment; + "unlockStake()": FunctionFragment; + "withdrawStake(address)": FunctionFragment; + "withdrawTo(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addStake" + | "balanceOf" + | "depositTo" + | "deposits" + | "getDepositInfo" + | "unlockStake" + | "withdrawStake" + | "withdrawTo" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "depositTo", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "deposits", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getDepositInfo", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "unlockStake", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdrawStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawTo", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "addStake", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "depositTo", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposits", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getDepositInfo", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "unlockStake", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawStake", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdrawTo", data: BytesLike): Result; + + events: { + "Deposited(address,uint256)": EventFragment; + "StakeLocked(address,uint256,uint256)": EventFragment; + "StakeUnlocked(address,uint256)": EventFragment; + "StakeWithdrawn(address,address,uint256)": EventFragment; + "Withdrawn(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Deposited"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeLocked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeUnlocked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeWithdrawn"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Withdrawn"): EventFragment; +} + +export interface DepositedEventObject { + account: string; + totalDeposit: BigNumber; +} +export type DepositedEvent = TypedEvent< + [string, BigNumber], + DepositedEventObject +>; + +export type DepositedEventFilter = TypedEventFilter; + +export interface StakeLockedEventObject { + account: string; + totalStaked: BigNumber; + unstakeDelaySec: BigNumber; +} +export type StakeLockedEvent = TypedEvent< + [string, BigNumber, BigNumber], + StakeLockedEventObject +>; + +export type StakeLockedEventFilter = TypedEventFilter; + +export interface StakeUnlockedEventObject { + account: string; + withdrawTime: BigNumber; +} +export type StakeUnlockedEvent = TypedEvent< + [string, BigNumber], + StakeUnlockedEventObject +>; + +export type StakeUnlockedEventFilter = TypedEventFilter; + +export interface StakeWithdrawnEventObject { + account: string; + withdrawAddress: string; + amount: BigNumber; +} +export type StakeWithdrawnEvent = TypedEvent< + [string, string, BigNumber], + StakeWithdrawnEventObject +>; + +export type StakeWithdrawnEventFilter = TypedEventFilter; + +export interface WithdrawnEventObject { + account: string; + withdrawAddress: string; + amount: BigNumber; +} +export type WithdrawnEvent = TypedEvent< + [string, string, BigNumber], + WithdrawnEventObject +>; + +export type WithdrawnEventFilter = TypedEventFilter; + +export interface StakeManager extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: StakeManagerInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, boolean, BigNumber, number, number] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + } + >; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [IStakeManager.DepositInfoStructOutput] & { + info: IStakeManager.DepositInfoStructOutput; + } + >; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, boolean, BigNumber, number, number] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + } + >; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, boolean, BigNumber, number, number] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + } + >; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake(overrides?: CallOverrides): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Deposited(address,uint256)"( + account?: PromiseOrValue | null, + totalDeposit?: null + ): DepositedEventFilter; + Deposited( + account?: PromiseOrValue | null, + totalDeposit?: null + ): DepositedEventFilter; + + "StakeLocked(address,uint256,uint256)"( + account?: PromiseOrValue | null, + totalStaked?: null, + unstakeDelaySec?: null + ): StakeLockedEventFilter; + StakeLocked( + account?: PromiseOrValue | null, + totalStaked?: null, + unstakeDelaySec?: null + ): StakeLockedEventFilter; + + "StakeUnlocked(address,uint256)"( + account?: PromiseOrValue | null, + withdrawTime?: null + ): StakeUnlockedEventFilter; + StakeUnlocked( + account?: PromiseOrValue | null, + withdrawTime?: null + ): StakeUnlockedEventFilter; + + "StakeWithdrawn(address,address,uint256)"( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): StakeWithdrawnEventFilter; + StakeWithdrawn( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): StakeWithdrawnEventFilter; + + "Withdrawn(address,address,uint256)"( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): WithdrawnEventFilter; + Withdrawn( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): WithdrawnEventFilter; + }; + + estimateGas: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/core/UserOperationLib.ts b/packages/types/src/contracts/EPv7/core/UserOperationLib.ts new file mode 100644 index 00000000..aa5ca53f --- /dev/null +++ b/packages/types/src/contracts/EPv7/core/UserOperationLib.ts @@ -0,0 +1,146 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, +} from "../../common"; + +export interface UserOperationLibInterface extends utils.Interface { + functions: { + "PAYMASTER_DATA_OFFSET()": FunctionFragment; + "PAYMASTER_POSTOP_GAS_OFFSET()": FunctionFragment; + "PAYMASTER_VALIDATION_GAS_OFFSET()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "PAYMASTER_DATA_OFFSET" + | "PAYMASTER_POSTOP_GAS_OFFSET" + | "PAYMASTER_VALIDATION_GAS_OFFSET" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "PAYMASTER_DATA_OFFSET", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PAYMASTER_POSTOP_GAS_OFFSET", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PAYMASTER_VALIDATION_GAS_OFFSET", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "PAYMASTER_DATA_OFFSET", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PAYMASTER_POSTOP_GAS_OFFSET", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PAYMASTER_VALIDATION_GAS_OFFSET", + data: BytesLike + ): Result; + + events: {}; +} + +export interface UserOperationLib extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: UserOperationLibInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + PAYMASTER_DATA_OFFSET(overrides?: CallOverrides): Promise<[BigNumber]>; + + PAYMASTER_POSTOP_GAS_OFFSET( + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + PAYMASTER_VALIDATION_GAS_OFFSET( + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + PAYMASTER_DATA_OFFSET(overrides?: CallOverrides): Promise; + + PAYMASTER_POSTOP_GAS_OFFSET(overrides?: CallOverrides): Promise; + + PAYMASTER_VALIDATION_GAS_OFFSET( + overrides?: CallOverrides + ): Promise; + + callStatic: { + PAYMASTER_DATA_OFFSET(overrides?: CallOverrides): Promise; + + PAYMASTER_POSTOP_GAS_OFFSET(overrides?: CallOverrides): Promise; + + PAYMASTER_VALIDATION_GAS_OFFSET( + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + PAYMASTER_DATA_OFFSET(overrides?: CallOverrides): Promise; + + PAYMASTER_POSTOP_GAS_OFFSET(overrides?: CallOverrides): Promise; + + PAYMASTER_VALIDATION_GAS_OFFSET( + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + PAYMASTER_DATA_OFFSET( + overrides?: CallOverrides + ): Promise; + + PAYMASTER_POSTOP_GAS_OFFSET( + overrides?: CallOverrides + ): Promise; + + PAYMASTER_VALIDATION_GAS_OFFSET( + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/core/index.ts b/packages/types/src/contracts/EPv7/core/index.ts new file mode 100644 index 00000000..af0c2fd7 --- /dev/null +++ b/packages/types/src/contracts/EPv7/core/index.ts @@ -0,0 +1,11 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { BaseAccount } from "./BaseAccount"; +export type { BasePaymaster } from "./BasePaymaster"; +export type { EntryPoint } from "./EntryPoint"; +export type { EntryPointSimulations } from "./EntryPointSimulations"; +export type { NonceManager } from "./NonceManager"; +export type { SenderCreator } from "./SenderCreator"; +export type { StakeManager } from "./StakeManager"; +export type { UserOperationLib } from "./UserOperationLib"; diff --git a/packages/types/src/contracts/EPv7/factories/core/BaseAccount__factory.ts b/packages/types/src/contracts/EPv7/factories/core/BaseAccount__factory.ts new file mode 100644 index 00000000..f0ee419b --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/core/BaseAccount__factory.ts @@ -0,0 +1,128 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + BaseAccount, + BaseAccountInterface, +} from "../../core/BaseAccount"; + +const _abi = [ + { + inputs: [], + name: "entryPoint", + outputs: [ + { + internalType: "contract IEntryPoint", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getNonce", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + { + internalType: "bytes32", + name: "userOpHash", + type: "bytes32", + }, + { + internalType: "uint256", + name: "missingAccountFunds", + type: "uint256", + }, + ], + name: "validateUserOp", + outputs: [ + { + internalType: "uint256", + name: "validationData", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class BaseAccount__factory { + static readonly abi = _abi; + static createInterface(): BaseAccountInterface { + return new utils.Interface(_abi) as BaseAccountInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): BaseAccount { + return new Contract(address, _abi, signerOrProvider) as BaseAccount; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/core/BasePaymaster__factory.ts b/packages/types/src/contracts/EPv7/factories/core/BasePaymaster__factory.ts new file mode 100644 index 00000000..e03546c6 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/core/BasePaymaster__factory.ts @@ -0,0 +1,293 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + BasePaymaster, + BasePaymasterInterface, +} from "../../core/BasePaymaster"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "OwnableInvalidOwner", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "OwnableUnauthorizedAccount", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [ + { + internalType: "uint32", + name: "unstakeDelaySec", + type: "uint32", + }, + ], + name: "addStake", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "deposit", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "entryPoint", + outputs: [ + { + internalType: "contract IEntryPoint", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getDeposit", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "enum IPaymaster.PostOpMode", + name: "mode", + type: "uint8", + }, + { + internalType: "bytes", + name: "context", + type: "bytes", + }, + { + internalType: "uint256", + name: "actualGasCost", + type: "uint256", + }, + { + internalType: "uint256", + name: "actualUserOpFeePerGas", + type: "uint256", + }, + ], + name: "postOp", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "unlockStake", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + { + internalType: "bytes32", + name: "userOpHash", + type: "bytes32", + }, + { + internalType: "uint256", + name: "maxCost", + type: "uint256", + }, + ], + name: "validatePaymasterUserOp", + outputs: [ + { + internalType: "bytes", + name: "context", + type: "bytes", + }, + { + internalType: "uint256", + name: "validationData", + type: "uint256", + }, + ], + 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: "amount", + type: "uint256", + }, + ], + name: "withdrawTo", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class BasePaymaster__factory { + static readonly abi = _abi; + static createInterface(): BasePaymasterInterface { + return new utils.Interface(_abi) as BasePaymasterInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): BasePaymaster { + return new Contract(address, _abi, signerOrProvider) as BasePaymaster; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/core/EntryPointSimulations__factory.ts b/packages/types/src/contracts/EPv7/factories/core/EntryPointSimulations__factory.ts new file mode 100644 index 00000000..467274e8 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/core/EntryPointSimulations__factory.ts @@ -0,0 +1,1379 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + EntryPointSimulations, + EntryPointSimulationsInterface, +} from "../../core/EntryPointSimulations"; + +const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "bool", + name: "success", + type: "bool", + }, + { + internalType: "bytes", + name: "ret", + type: "bytes", + }, + ], + name: "DelegateAndRevert", + type: "error", + }, + { + inputs: [ + { + internalType: "uint256", + name: "opIndex", + type: "uint256", + }, + { + internalType: "string", + name: "reason", + type: "string", + }, + ], + name: "FailedOp", + type: "error", + }, + { + inputs: [ + { + internalType: "uint256", + name: "opIndex", + type: "uint256", + }, + { + internalType: "string", + name: "reason", + type: "string", + }, + { + internalType: "bytes", + name: "inner", + type: "bytes", + }, + ], + name: "FailedOpWithRevert", + type: "error", + }, + { + inputs: [ + { + internalType: "bytes", + name: "returnData", + type: "bytes", + }, + ], + name: "PostOpReverted", + type: "error", + }, + { + inputs: [], + name: "ReentrancyGuardReentrantCall", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "SenderAddressResult", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "aggregator", + type: "address", + }, + ], + name: "SignatureValidationFailed", + 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: "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: "PostOpRevertReason", + 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", + }, + ], + name: "UserOperationPrefundTooLow", + 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: [ + { + 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: "target", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "delegateAndRevert", + outputs: [], + stateMutability: "nonpayable", + 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: "uint256", + name: "deposit", + type: "uint256", + }, + { + 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: "uint256", + name: "deposit", + type: "uint256", + }, + { + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation[]", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation[]", + 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: "verificationGasLimit", + type: "uint256", + }, + { + internalType: "uint256", + name: "callGasLimit", + type: "uint256", + }, + { + internalType: "uint256", + name: "paymasterVerificationGasLimit", + type: "uint256", + }, + { + internalType: "uint256", + name: "paymasterPostOpGasLimit", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "op", + type: "tuple", + }, + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bytes", + name: "targetCallData", + type: "bytes", + }, + ], + name: "simulateHandleOp", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "preOpGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "paid", + type: "uint256", + }, + { + internalType: "uint256", + name: "accountValidationData", + type: "uint256", + }, + { + internalType: "uint256", + name: "paymasterValidationData", + type: "uint256", + }, + { + internalType: "bool", + name: "targetSuccess", + type: "bool", + }, + { + internalType: "bytes", + name: "targetResult", + type: "bytes", + }, + ], + internalType: "struct IEntryPointSimulations.ExecutionResult", + name: "", + type: "tuple", + }, + ], + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + ], + name: "simulateValidation", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "preOpGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "prefund", + type: "uint256", + }, + { + internalType: "uint256", + name: "accountValidationData", + type: "uint256", + }, + { + internalType: "uint256", + name: "paymasterValidationData", + type: "uint256", + }, + { + 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", + }, + ], + internalType: "struct IEntryPointSimulations.ValidationResult", + name: "", + type: "tuple", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + 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", + }, +] as const; + +const _bytecode = + "0x60a06040526040516200001290620000f2565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b0390811660805260408051808201825260008082528251808401909352808352602080840191825282018390529051600380546001600160a01b031916919094161790925551600455516005553480156200009157600080fd5b50600160025560644310620000ec5760405162461bcd60e51b815260206004820152601660248201527f73686f756c64206e6f74206265206465706c6f79656400000000000000000000604482015260640160405180910390fd5b62000100565b61023380620053f383390190565b6080516152da62000119600039600050506152da6000f3fe60806040526004361061016d5760003560e01c8063765e827f116100cb578063b760faf91161007f578063c3bce00911610059578063c3bce009146105ac578063dbed18e0146105d9578063fc7e286d146105f957600080fd5b8063b760faf914610564578063bb9fe6bf14610577578063c23a5cea1461058c57600080fd5b8063957122ab116100b0578063957122ab146104f757806397b2dcb9146105175780639b249f691461054457600080fd5b8063765e827f146104b7578063850aaf62146104d757600080fd5b8063205c28781161012257806335567e1a1161010757806335567e1a146102905780635287ce121461032557806370a082311461047457600080fd5b8063205c28781461025057806322cdde4c1461027057600080fd5b80630396cb60116101535780630396cb60146101e55780630bd28e3b146101f85780631b2e01b81461021857600080fd5b806242dc531461018257806301ffc9a7146101b557600080fd5b3661017d5761017b336106cb565b005b600080fd5b34801561018e57600080fd5b506101a261019d36600461426a565b6106ec565b6040519081526020015b60405180910390f35b3480156101c157600080fd5b506101d56101d0366004614330565b6108b7565b60405190151581526020016101ac565b61017b6101f3366004614372565b610a34565b34801561020457600080fd5b5061017b6102133660046143c0565b610dca565b34801561022457600080fd5b506101a26102333660046143db565b600160209081526000928352604080842090915290825290205481565b34801561025c57600080fd5b5061017b61026b366004614410565b610e12565b34801561027c57600080fd5b506101a261028b366004614455565b610fbc565b34801561029c57600080fd5b506101a26102ab3660046143db565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff8516845290915290819020549082901b7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000161792915050565b34801561033157600080fd5b5061041261034036600461448a565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525073ffffffffffffffffffffffffffffffffffffffff1660009081526020818152604091829020825160a0810184528154815260019091015460ff811615159282019290925261010082046dffffffffffffffffffffffffffff16928101929092526f01000000000000000000000000000000810463ffffffff166060830152730100000000000000000000000000000000000000900465ffffffffffff16608082015290565b6040516101ac9190600060a082019050825182526020830151151560208301526dffffffffffffffffffffffffffff604084015116604083015263ffffffff606084015116606083015265ffffffffffff608084015116608083015292915050565b34801561048057600080fd5b506101a261048f36600461448a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b3480156104c357600080fd5b5061017b6104d23660046144ec565b610ffe565b3480156104e357600080fd5b5061017b6104f2366004614543565b61117b565b34801561050357600080fd5b5061017b610512366004614598565b611220565b34801561052357600080fd5b5061053761053236600461461d565b611378565b6040516101ac91906146ed565b34801561055057600080fd5b5061017b61055f36600461473c565b6114c4565b61017b61057236600461448a565b6106cb565b34801561058357600080fd5b5061017b6115af565b34801561059857600080fd5b5061017b6105a736600461448a565b61178f565b3480156105b857600080fd5b506105cc6105c7366004614455565b611a7c565b6040516101ac919061477e565b3480156105e557600080fd5b5061017b6105f43660046144ec565b611d80565b34801561060557600080fd5b5061068161061436600461448a565b6000602081905290815260409020805460019091015460ff81169061010081046dffffffffffffffffffffffffffff16906f01000000000000000000000000000000810463ffffffff1690730100000000000000000000000000000000000000900465ffffffffffff1685565b6040805195865293151560208601526dffffffffffffffffffffffffffff9092169284019290925263ffffffff909116606083015265ffffffffffff16608082015260a0016101ac565b60015b60058110156106df576001016106ce565b6106e88261222c565b5050565b6000805a9050333014610760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c7900000000000000000060448201526064015b60405180910390fd5b8451606081015160a082015181016127100160405a603f02816107855761078561485e565b0410156107b6577fdeaddead0000000000000000000000000000000000000000000000000000000060005260206000fd5b8751600090156108575760006107d3846000015160008c86612282565b9050806108555760006107e761080061229a565b80519091501561084f57846000015173ffffffffffffffffffffffffffffffffffffffff168a602001517f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a20187602001518460405161084692919061488d565b60405180910390a35b60019250505b505b600088608001515a86030190506108a7828a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506122c6915050565b955050505050505b949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f60fc6b6e00000000000000000000000000000000000000000000000000000000148061094a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f915074d800000000000000000000000000000000000000000000000000000000145b8061099657507fffffffff0000000000000000000000000000000000000000000000000000000082167fcf28ef9700000000000000000000000000000000000000000000000000000000145b806109e257507fffffffff0000000000000000000000000000000000000000000000000000000082167f3e84f02100000000000000000000000000000000000000000000000000000000145b80610a2e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b33600090815260208190526040902063ffffffff8216610ab0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152606401610757565b600181015463ffffffff6f0100000000000000000000000000000090910481169083161015610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152606401610757565b6001810154600090610b6390349061010090046dffffffffffffffffffffffffffff166148d5565b905060008111610bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152606401610757565b6dffffffffffffffffffffffffffff811115610c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152606401610757565b6040805160a08101825283548152600160208083018281526dffffffffffffffffffffffffffff86811685870190815263ffffffff8a811660608801818152600060808a0181815233808352828a52918c90209a518b55965199909801805494519151965165ffffffffffff16730100000000000000000000000000000000000000027fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff979094166f0100000000000000000000000000000002969096167fffffffffffffff00000000000000000000ffffffffffffffffffffffffffffff91909516610100027fffffffffffffffffffffffffffffffffff0000000000000000000000000000ff991515999099167fffffffffffffffffffffffffffffffffff00000000000000000000000000000090941693909317979097179190911691909117179055835185815290810192909252917fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01910160405180910390a2505050565b33600090815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff851684529091528120805491610e0a836148e8565b919050555050565b3360009081526020819052604090208054821115610e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152606401610757565b8054610e99908390614920565b81556040805173ffffffffffffffffffffffffffffffffffffffff851681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb910160405180910390a260008373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114610f46576040519150601f19603f3d011682016040523d82523d6000602084013e610f4b565b606091505b5050905080610fb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152606401610757565b50505050565b6000610fc7826124ee565b6040805160208101929092523090820152466060820152608001604051602081830303815290604052805190602001209050919050565b611006612507565b8160008167ffffffffffffffff81111561102257611022613ffd565b60405190808252806020026020018201604052801561105b57816020015b611048613e51565b8152602001906001900390816110405790505b50905060005b828110156110d457600082828151811061107d5761107d614933565b602002602001015190506000806110b8848a8a878181106110a0576110a0614933565b90506020028101906110b29190614962565b85612548565b915091506110c984838360006127a7565b505050600101611061565b506040516000907fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972908290a160005b8381101561115e576111528188888481811061112157611121614933565b90506020028101906111339190614962565b85848151811061114557611145614933565b60200260200101516129fc565b90910190600101611103565b506111698482612dd2565b5050506111766001600255565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1684846040516111a59291906149a0565b600060405180830381855af49150503d80600081146111e0576040519150601f19603f3d011682016040523d82523d6000602084013e6111e5565b606091505b509150915081816040517f994105540000000000000000000000000000000000000000000000000000000081526004016107579291906149b0565b83158015611243575073ffffffffffffffffffffffffffffffffffffffff83163b155b156112aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f41413230206163636f756e74206e6f74206465706c6f796564000000000000006044820152606401610757565b6014811061133c5760006112c160148284866149cb565b6112ca916149f5565b60601c9050803b60000361133a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f41413330207061796d6173746572206e6f74206465706c6f79656400000000006044820152606401610757565b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610757565b6113b36040518060c0016040528060008152602001600081526020016000815260200160008152602001600015158152602001606081525090565b6113bb612507565b6113c3613e51565b6113cc86612f19565b6000806113db60008985612548565b9150915060006113ed60008a866129fc565b90506000606073ffffffffffffffffffffffffffffffffffffffff8a161561147f578973ffffffffffffffffffffffffffffffffffffffff1689896040516114369291906149a0565b6000604051808303816000865af19150503d8060008114611473576040519150601f19603f3d011682016040523d82523d6000602084013e611478565b606091505b5090925090505b6040518060c001604052808760800151815260200184815260200186815260200185815260200183151581526020018281525096505050505050506108af6001600255565b60006114e560065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663570e1a3684846040518363ffffffff1660e01b815260040161151f929190614a86565b6020604051808303816000875af115801561153e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115629190614a9a565b6040517f6ca7b80600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152909150602401610757565b336000908152602081905260408120600181015490916f0100000000000000000000000000000090910463ffffffff169003611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152606401610757565b600181015460ff166116b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152606401610757565b60018101546000906116e0906f01000000000000000000000000000000900463ffffffff1642614ab7565b6001830180547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001673010000000000000000000000000000000000000065ffffffffffff84169081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169190911790915560405190815290915033907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a906020015b60405180910390a25050565b336000908152602081905260409020600181015461010090046dffffffffffffffffffffffffffff168061181f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152606401610757565b6001820154730100000000000000000000000000000000000000900465ffffffffffff166118a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152606401610757565b60018201544273010000000000000000000000000000000000000090910465ffffffffffff161115611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152606401610757565b6001820180547fffffffffffffff000000000000000000000000000000000000000000000000ff1690556040805173ffffffffffffffffffffffffffffffffffffffff851681526020810183905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda3910160405180910390a260008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611a0c576040519150601f19603f3d011682016040523d82523d6000602084013e611a11565b606091505b5050905080610fb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152606401610757565b611a84613f03565b611a8c613e51565b611a9583612f19565b600080611aa460008685612548565b845160e001516040805180820182526000808252602080830182815273ffffffffffffffffffffffffffffffffffffffff95861683528282528483206001908101546dffffffffffffffffffffffffffff6101008083048216885263ffffffff6f010000000000000000000000000000009384900481169095528e51518951808b018b5288815280880189815291909b168852878752898820909401549081049091168952049091169052835180850190945281845283015293955091935090366000611b7460408b018b614add565b909250905060006014821015611b8b576000611ba6565b611b996014600084866149cb565b611ba2916149f5565b60601c5b6040805180820182526000808252602080830182815273ffffffffffffffffffffffffffffffffffffffff86168352908290529290206001015461010081046dffffffffffffffffffffffffffff1682526f01000000000000000000000000000000900463ffffffff169091529091509350505050600085905060006040518060a001604052808960800151815260200189604001518152602001888152602001878152602001611c588a6060015190565b905260408051808201825260035473ffffffffffffffffffffffffffffffffffffffff908116825282518084019093526004548352600554602084810191909152820192909252919250831615801590611cc9575060018373ffffffffffffffffffffffffffffffffffffffff1614155b15611d4d5760408051808201825273ffffffffffffffffffffffffffffffffffffffff851680825282518084018452600080825260208083018281529382528181529490206001015461010081046dffffffffffffffffffffffffffff1682526f01000000000000000000000000000000900463ffffffff16909152909182015290505b6040805160a081018252928352602083019590955293810192909252506060810192909252608082015295945050505050565b611d88612507565b816000805b82811015611f7a5736868683818110611da857611da8614933565b9050602002810190611dba9190614b42565b9050366000611dc98380614b76565b90925090506000611de0604085016020860161448a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff821601611e81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152606401610757565b73ffffffffffffffffffffffffffffffffffffffff811615611f5e5773ffffffffffffffffffffffffffffffffffffffff8116632dd811338484611ec86040890189614add565b6040518563ffffffff1660e01b8152600401611ee79493929190614d2e565b60006040518083038186803b158015611eff57600080fd5b505afa925050508015611f10575060015b611f5e576040517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610757565b611f6882876148d5565b95505060019093019250611d8d915050565b5060008167ffffffffffffffff811115611f9657611f96613ffd565b604051908082528060200260200182016040528015611fcf57816020015b611fbc613e51565b815260200190600190039081611fb45790505b5090506000805b848110156120ac5736888883818110611ff157611ff1614933565b90506020028101906120039190614b42565b90503660006120128380614b76565b90925090506000612029604085016020860161448a565b90508160005b8181101561209a57600089898151811061204b5761204b614933565b6020026020010151905060008061206e8b8989878181106110a0576110a0614933565b9150915061207e848383896127a7565b8a612088816148e8565b9b50506001909301925061202f915050565b505060019094019350611fd692505050565b506040517fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f97290600090a150600080805b858110156121e757368989838181106120f7576120f7614933565b90506020028101906121099190614b42565b905061211b604082016020830161448a565b73ffffffffffffffffffffffffffffffffffffffff167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d60405160405180910390a236600061216a8380614b76565b90925090508060005b818110156121d6576121b58885858481811061219157612191614933565b90506020028101906121a39190614962565b8b8b8151811061114557611145614933565b6121bf90886148d5565b9650876121cb816148e8565b985050600101612173565b5050600190930192506120dc915050565b506040516000907f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d908290a261221d8682612dd2565b50505050506111766001600255565b60006122388234613107565b90508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c48260405161178391815260200190565b6000806000845160208601878987f195945050505050565b60603d828111156122a85750815b604051602082018101604052818152816000602083013e9392505050565b6000805a8551909150600090816122dc82613147565b60e083015190915073ffffffffffffffffffffffffffffffffffffffff81166123085782519350612403565b80935060008851111561240357868202955060028a600281111561232e5761232e614de5565b146124035760a08301516040517f7c627b2100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691637c627b2191612390908e908d908c908990600401614e14565b600060405180830381600088803b1580156123aa57600080fd5b5087f1935050505080156123bc575060015b6124035760006123cd61080061229a565b9050806040517fad7954bc0000000000000000000000000000000000000000000000000000000081526004016107579190614e77565b5a60a0840151606085015160808c015192880399909901980190880380821115612436576064600a828403020498909801975b505060408901518783029650868110156124ab5760028b600281111561245e5761245e614de5565b036124815780965061246f8a613171565b61247c8a6000898b6131cd565b6124e0565b7fdeadaa510000000000000000000000000000000000000000000000000000000060005260206000fd5b8681036124b88682613107565b506000808d60028111156124ce576124ce614de5565b1490506124dd8c828b8d6131cd565b50505b505050505050949350505050565b60006124f982613255565b805190602001209050919050565b6002805403612542576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b60008060005a845190915061255d868261331a565b61256686610fbc565b6020860152604081015161012082015161010083015160a08401516080850151606086015160c0870151861717171717176effffffffffffffffffffffffffffff811115612610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152606401610757565b600061263f8460c081015160a08201516080830151606084015160408501516101009095015194010101010290565b905061264e8a8a8a8487613465565b9650612662846000015185602001516136a6565b6126d157896040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601a908201527f4141323520696e76616c6964206163636f756e74206e6f6e6365000000000000606082015260800190565b825a8603111561274657896040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601e908201527f41413236206f76657220766572696669636174696f6e4761734c696d69740000606082015260800190565b60e084015160609073ffffffffffffffffffffffffffffffffffffffff161561277a576127758b8b8b85613701565b975090505b604089018290528060608a015260a08a01355a870301896080018181525050505050505050935093915050565b6000806127b385613958565b915091508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461285557856040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526014908201527f41413234207369676e6174757265206572726f72000000000000000000000000606082015260800190565b80156128c657856040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526017908201527f414132322065787069726564206f72206e6f7420647565000000000000000000606082015260800190565b60006128d185613958565b9250905073ffffffffffffffffffffffffffffffffffffffff81161561295c57866040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526014908201527f41413334207369676e6174757265206572726f72000000000000000000000000606082015260800190565b81156129f357866040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526021908201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560608201527f6500000000000000000000000000000000000000000000000000000000000000608082015260a00190565b50505050505050565b6000805a90506000612a0f846060015190565b6040519091506000903682612a2760608a018a614add565b9150915060606000826003811115612a3e57843591505b507f72288ed1000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601612b7e5760008b8b60200151604051602401612aa1929190614e8a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8dd7712f000000000000000000000000000000000000000000000000000000001790525190915030906242dc5390612b349084908f908d90602401614f70565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050925050612bf5565b3073ffffffffffffffffffffffffffffffffffffffff166242dc5385858d8b604051602401612bb09493929190614fb0565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505091505b602060008351602085016000305af19550600051985084604052505050505080612dc85760003d80602003612c305760206000803e60005191505b507fdeaddead000000000000000000000000000000000000000000000000000000008103612cc357876040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052600f908201527f41413935206f7574206f66206761730000000000000000000000000000000000606082015260800190565b7fdeadaa51000000000000000000000000000000000000000000000000000000008103612d2d57600086608001515a612cfc9087614920565b612d0691906148d5565b6040880151909150612d1788613171565b612d2488600083856131cd565b9550612dc69050565b8551805160208089015192015173ffffffffffffffffffffffffffffffffffffffff90911691907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f479290612d8161080061229a565b604051612d8f92919061488d565b60405180910390a3600086608001515a612da99087614920565b612db391906148d5565b9050612dc260028886846122c6565b9550505b505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8216612e4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152606401610757565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612ea9576040519150601f19603f3d011682016040523d82523d6000602084013e612eae565b606091505b5050905080611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152606401610757565b6130196040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f01000000000000000000000000000000000000000000000000000000000000006036820152600090603701604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529190528051602090910120600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905550565b3063957122ab61302c6040840184614add565b613039602086018661448a565b61304660e0870187614add565b6040518663ffffffff1660e01b8152600401613066959493929190614fe7565b60006040518083038186803b15801561307e57600080fd5b505afa92505050801561308f575060015b6131045761309b615036565b806308c379a0036130f857506130af615052565b806130ba57506130fa565b8051156106e8576000816040517f220266b600000000000000000000000000000000000000000000000000000000815260040161075792919061488d565b505b3d6000803e3d6000fd5b50565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054829061313b9085906148d5565b91829055509392505050565b61010081015161012082015160009190808203613165575092915050565b6108af824883016139ab565b805180516020808401519281015160405190815273ffffffffffffffffffffffffffffffffffffffff90921692917f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e910160405180910390a350565b835160e0810151815160208088015193015160405173ffffffffffffffffffffffffffffffffffffffff9384169492909316927f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f916132479189908990899093845291151560208401526040830152606082015260800190565b60405180910390a450505050565b60608135602083013560006132756132706040870187614add565b6139c3565b905060006132896132706060880188614add565b9050608086013560a087013560c088013560006132ac61327060e08c018c614add565b6040805173ffffffffffffffffffffffffffffffffffffffff9a909a1660208b015289810198909852606089019690965250608087019390935260a086019190915260c085015260e08401526101008084019190915281518084039091018152610120909201905292915050565b613327602083018361448a565b73ffffffffffffffffffffffffffffffffffffffff168152602082810135908201526fffffffffffffffffffffffffffffffff6080808401358281166060850152811c604084015260a084013560c0808501919091528401359182166101008401521c6101208201523660006133a060e0850185614add565b9092509050801561344a576034811015613416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152606401610757565b61342082826139d6565b60a0860152608085015273ffffffffffffffffffffffffffffffffffffffff1660e0840152610fb6565b600060e084018190526080840181905260a084015250505050565b8251805160009190613484888761347f60408b018b614add565b613a47565b60e0820151600073ffffffffffffffffffffffffffffffffffffffff82166134e25773ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548781116134db578088036134de565b60005b9150505b60208801516040517f19822f7c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516916319822f7c91899161353e918e919087906004016150fa565b60206040518083038160008887f193505050508015613598575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526135959181019061511f565b60015b6135dc57896135a861080061229a565b6040517f65c8fd4d000000000000000000000000000000000000000000000000000000008152600401610757929190615138565b945073ffffffffffffffffffffffffffffffffffffffff82166136995773ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020805480891115613693578b6040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526017908201527f41413231206469646e2774207061792070726566756e64000000000000000000606082015260800190565b88900390555b5050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832084821c808552925282208054849167ffffffffffffffff83169190856136f3836148e8565b909155501495945050505050565b60606000805a855160e081015173ffffffffffffffffffffffffffffffffffffffff8116600090815260208190526040902080549394509192909190878110156137b0578a6040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601e908201527f41413331207061796d6173746572206465706f73697420746f6f206c6f770000606082015260800190565b87810382600001819055506000846080015190508373ffffffffffffffffffffffffffffffffffffffff166352b7512c828d8d602001518d6040518563ffffffff1660e01b8152600401613806939291906150fa565b60006040518083038160008887f19350505050801561386557506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526138629190810190615185565b60015b6138a9578b61387561080061229a565b6040517f65c8fd4d000000000000000000000000000000000000000000000000000000008152600401610757929190615211565b9098509650805a87031115613949578b6040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526027908201527f41413336206f766572207061796d6173746572566572696669636174696f6e4760608201527f61734c696d697400000000000000000000000000000000000000000000000000608082015260a00190565b50505050505094509492505050565b6000808260000361396e57506000928392509050565b600061397984613dd3565b9050806040015165ffffffffffff164211806139a05750806020015165ffffffffffff1642105b905194909350915050565b60008183106139ba57816139bc565b825b9392505050565b6000604051828085833790209392505050565b600080806139e760148286886149cb565b6139f0916149f5565b60601c613a016024601487896149cb565b613a0a9161525e565b60801c613a1b60346024888a6149cb565b613a249161525e565b9194506fffffffffffffffffffffffffffffffff16925060801c90509250925092565b8015610fb65782515173ffffffffffffffffffffffffffffffffffffffff81163b15613ad857846040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601f908201527f414131302073656e64657220616c726561647920636f6e737472756374656400606082015260800190565b6000613af960065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663570e1a3686600001516040015186866040518463ffffffff1660e01b8152600401613b3c929190614a86565b60206040518083038160008887f1158015613b5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b809190614a9a565b905073ffffffffffffffffffffffffffffffffffffffff8116613c0857856040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601b908201527f4141313320696e6974436f6465206661696c6564206f72204f4f470000000000606082015260800190565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613ca557856040517f220266b600000000000000000000000000000000000000000000000000000000815260040161075791815260406020808301829052908201527f4141313420696e6974436f6465206d7573742072657475726e2073656e646572606082015260800190565b8073ffffffffffffffffffffffffffffffffffffffff163b600003613d2e57856040517f220266b600000000000000000000000000000000000000000000000000000000815260040161075791815260406020808301829052908201527f4141313520696e6974436f6465206d757374206372656174652073656e646572606082015260800190565b6000613d3d60148286886149cb565b613d46916149f5565b60601c90508273ffffffffffffffffffffffffffffffffffffffff1686602001517fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d83896000015160e00151604051613dc292919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b60405180910390a350505050505050565b60408051606081018252600080825260208201819052918101919091528160a081901c65ffffffffffff8116600003613e0f575065ffffffffffff5b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff909316835260d09490941c602083015265ffffffffffff16928101929092525090565b6040518060a00160405280613ede604051806101400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b8152602001600080191681526020016000815260200160008152602001600081525090565b6040518060a00160405280613f406040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b8152602001613f62604051806040016040528060008152602001600081525090565b8152602001613f84604051806040016040528060008152602001600081525090565b8152602001613fa6604051806040016040528060008152602001600081525090565b8152602001613fb3613fb8565b905290565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001613fb3604051806040016040528060008152602001600081525090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810181811067ffffffffffffffff8211171561404c5761404c613ffd565b60405250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561409657614096613ffd565b6040525050565b604051610140810167ffffffffffffffff811182821017156140c1576140c1613ffd565b60405290565b600067ffffffffffffffff8211156140e1576140e1613ffd565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461310457600080fd5b803561413a8161410d565b919050565b60008183036101c081121561415357600080fd5b60405161415f8161402c565b8092506101408083121561417257600080fd5b61417a61409d565b92506141858561412f565b83526020850135602084015260408501356040840152606085013560608401526080850135608084015260a085013560a084015260c085013560c08401526141cf60e0860161412f565b60e084015261010085810135908401526101208086013590840152918152908301356020820152610160830135604082015261018083013560608201526101a090920135608090920191909152919050565b60008083601f84011261423357600080fd5b50813567ffffffffffffffff81111561424b57600080fd5b60208301915083602082850101111561426357600080fd5b9250929050565b600080600080610200858703121561428157600080fd5b843567ffffffffffffffff8082111561429957600080fd5b818701915087601f8301126142ad57600080fd5b81356142b8816140c7565b6040516142c58282614052565b8281528a60208487010111156142da57600080fd5b82602086016020830137600060208483010152809850505050614300886020890161413f565b94506101e087013591508082111561431757600080fd5b5061432487828801614221565b95989497509550505050565b60006020828403121561434257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146139bc57600080fd5b60006020828403121561438457600080fd5b813563ffffffff811681146139bc57600080fd5b803577ffffffffffffffffffffffffffffffffffffffffffffffff8116811461413a57600080fd5b6000602082840312156143d257600080fd5b6139bc82614398565b600080604083850312156143ee57600080fd5b82356143f98161410d565b915061440760208401614398565b90509250929050565b6000806040838503121561442357600080fd5b823561442e8161410d565b946020939093013593505050565b6000610120828403121561444f57600080fd5b50919050565b60006020828403121561446757600080fd5b813567ffffffffffffffff81111561447e57600080fd5b6108af8482850161443c565b60006020828403121561449c57600080fd5b81356139bc8161410d565b60008083601f8401126144b957600080fd5b50813567ffffffffffffffff8111156144d157600080fd5b6020830191508360208260051b850101111561426357600080fd5b60008060006040848603121561450157600080fd5b833567ffffffffffffffff81111561451857600080fd5b614524868287016144a7565b90945092505060208401356145388161410d565b809150509250925092565b60008060006040848603121561455857600080fd5b83356145638161410d565b9250602084013567ffffffffffffffff81111561457f57600080fd5b61458b86828701614221565b9497909650939450505050565b6000806000806000606086880312156145b057600080fd5b853567ffffffffffffffff808211156145c857600080fd5b6145d489838a01614221565b9097509550602088013591506145e98261410d565b909350604087013590808211156145ff57600080fd5b5061460c88828901614221565b969995985093965092949392505050565b6000806000806060858703121561463357600080fd5b843567ffffffffffffffff8082111561464b57600080fd5b6146578883890161443c565b9550602087013591506146698261410d565b9093506040860135908082111561431757600080fd5b60005b8381101561469a578181015183820152602001614682565b50506000910152565b600081518084526146bb81602086016020860161467f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152815160208201526020820151604082015260408201516060820152606082015160808201526080820151151560a0820152600060a083015160c0808401526108af60e08401826146a3565b6000806020838503121561474f57600080fd5b823567ffffffffffffffff81111561476657600080fd5b61477285828601614221565b90969095509350505050565b602080825282516101408383015280516101608401529081015161018083015260408101516101a083015260608101516101c08301526080015160a06101e08301526000906147d16102008401826146a3565b905060208401516147ef604085018280518252602090810151910152565b506040840151805160808581019190915260209182015160a08601526060860151805160c087015282015160e0860152850151805173ffffffffffffffffffffffffffffffffffffffff1661010086015280820151805161012087015290910151610140850152509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8281526040602082015260006108af60408301846146a3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610a2e57610a2e6148a6565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614919576149196148a6565b5060010190565b81810381811115610a2e57610a2e6148a6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee183360301811261499657600080fd5b9190910192915050565b8183823760009101908152919050565b82151581526040602082015260006108af60408301846146a3565b600080858511156149db57600080fd5b838611156149e857600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008135818116916014851015614a355780818660140360031b1b83161692505b505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006108af602083018486614a3d565b600060208284031215614aac57600080fd5b81516139bc8161410d565b65ffffffffffff818116838216019080821115614ad657614ad66148a6565b5092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614b1257600080fd5b83018035915067ffffffffffffffff821115614b2d57600080fd5b60200191503681900382131561426357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261499657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614bab57600080fd5b83018035915067ffffffffffffffff821115614bc657600080fd5b6020019150600581901b360382131561426357600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614c1357600080fd5b830160208101925035905067ffffffffffffffff811115614c3357600080fd5b80360382131561426357600080fd5b6000610120614c6e84614c548561412f565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208301356020850152614c856040840184614bde565b826040870152614c988387018284614a3d565b92505050614ca96060840184614bde565b8583036060870152614cbc838284614a3d565b925050506080830135608085015260a083013560a085015260c083013560c0850152614ceb60e0840184614bde565b85830360e0870152614cfe838284614a3d565b92505050610100614d1181850185614bde565b86840383880152614d23848284614a3d565b979650505050505050565b6040808252810184905260006060600586901b830181019083018783805b89811015614dce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18c3603018112614dac578283fd5b614db8868d8301614c42565b9550506020938401939290920191600101614d4c565b505050508281036020840152614d23818587614a3d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060038610614e4d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b85825260806020830152614e6460808301866146a3565b6040830194909452506060015292915050565b6020815260006139bc60208301846146a3565b604081526000614e9d6040830185614c42565b90508260208301529392505050565b8051805173ffffffffffffffffffffffffffffffffffffffff1683526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c084015260e0810151614f2b60e085018273ffffffffffffffffffffffffffffffffffffffff169052565b5061010081810151908401526101209081015190830152602081015161014083015260408101516101608301526060810151610180830152608001516101a090910152565b6000610200808352614f84818401876146a3565b9050614f936020840186614eac565b8281036101e0840152614fa681856146a3565b9695505050505050565b6000610200808352614fc58184018789614a3d565b9050614fd46020840186614eac565b8281036101e0840152614d2381856146a3565b606081526000614ffb606083018789614a3d565b73ffffffffffffffffffffffffffffffffffffffff86166020840152828103604084015261502a818587614a3d565b98975050505050505050565b600060033d111561504f5760046000803e5060005160e01c5b90565b600060443d10156150605790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156150ae57505050505090565b82850191508151818111156150c65750505050505090565b843d87010160208285010111156150e05750505050505090565b6150ef60208286010187614052565b509095945050505050565b60608152600061510d6060830186614c42565b60208301949094525060400152919050565b60006020828403121561513157600080fd5b5051919050565b82815260606020820152600d60608201527f4141323320726576657274656400000000000000000000000000000000000000608082015260a0604082015260006108af60a08301846146a3565b6000806040838503121561519857600080fd5b825167ffffffffffffffff8111156151af57600080fd5b8301601f810185136151c057600080fd5b80516151cb816140c7565b6040516151d88282614052565b8281528760208486010111156151ed57600080fd5b6151fe83602083016020870161467f565b6020969096015195979596505050505050565b82815260606020820152600d60608201527f4141333320726576657274656400000000000000000000000000000000000000608082015260a0604082015260006108af60a08301846146a3565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008135818116916010851015614a355760109490940360031b84901b169092169291505056fea2646970667358221220de05860bb0e7d51602d68c6a114b6a6b1814d59585e487c28be89f0d4af007a364736f6c63430008170033608060405234801561001057600080fd5b50610213806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063570e1a3614610030575b600080fd5b61004361003e3660046100f9565b61006c565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60008061007c601482858761016b565b61008591610195565b60601c90506000610099846014818861016b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525084519495509360209350849250905082850182875af190506000519350806100f057600093505b50505092915050565b6000806020838503121561010c57600080fd5b823567ffffffffffffffff8082111561012457600080fd5b818501915085601f83011261013857600080fd5b81358181111561014757600080fd5b86602082850101111561015957600080fd5b60209290920196919550909350505050565b6000808585111561017b57600080fd5b8386111561018857600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156101d55780818660140360031b1b83161692505b50509291505056fea26469706673582212204d4d792be653535745d2f0897b9fc8feed690aae4dea5ee45c439a5e15a06dc564736f6c63430008170033"; + +export const _deployedBytecode = "0x60806040526004361061012d5760003560e01c8063765e827f116100ab578063b760faf91161006f578063b760faf9146104ab578063bb9fe6bf146104be578063c23a5cea146104d3578063c3bce009146104f3578063dbed18e014610520578063fc7e286d1461054057600080fd5b8063765e827f146103fe578063850aaf621461041e578063957122ab1461043e57806397b2dcb91461045e5780639b249f691461048b57600080fd5b8063205c2878116100f2578063205c28781461021057806322cdde4c1461023057806335567e1a146102505780635287ce12146102b057806370a08231146103c857600080fd5b806242dc531461014257806301ffc9a7146101755780630396cb60146101a55780630bd28e3b146101b85780631b2e01b8146101d857600080fd5b3661013d5761013b336105e8565b005b600080fd5b34801561014e57600080fd5b5061016261015d366004613417565b610609565b6040519081526020015b60405180910390f35b34801561018157600080fd5b506101956101903660046134dc565b610794565b604051901515815260200161016c565b61013b6101b3366004613506565b61081c565b3480156101c457600080fd5b5061013b6101d3366004613543565b610aab565b3480156101e457600080fd5b506101626101f336600461355e565b600160209081526000928352604080842090915290825290205481565b34801561021c57600080fd5b5061013b61022b366004613593565b610ae2565b34801561023c57600080fd5b5061016261024b3660046135d8565b610c33565b34801561025c57600080fd5b5061016261026b36600461355e565b6001600160a01b03821660009081526001602090815260408083206001600160c01b038516845290915290819020549082901b67ffffffffffffffff19161792915050565b3480156102bc57600080fd5b5061036d6102cb36600461360c565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b031660009081526020818152604091829020825160a0810184528154815260019091015460ff811615159282019290925261010082046001600160701b031692810192909252600160781b810463ffffffff166060830152600160981b900465ffffffffffff16608082015290565b60405161016c9190600060a082019050825182526020830151151560208301526001600160701b03604084015116604083015263ffffffff606084015116606083015265ffffffffffff608084015116608083015292915050565b3480156103d457600080fd5b506101626103e336600461360c565b6001600160a01b031660009081526020819052604090205490565b34801561040a57600080fd5b5061013b61041936600461366d565b610c75565b34801561042a57600080fd5b5061013b6104393660046136c3565b610df1565b34801561044a57600080fd5b5061013b610459366004613717565b610e70565b34801561046a57600080fd5b5061047e61047936600461379b565b610f6d565b60405161016c919061384c565b34801561049757600080fd5b5061013b6104a636600461389b565b61109f565b61013b6104b936600461360c565b6105e8565b3480156104ca57600080fd5b5061013b61114a565b3480156104df57600080fd5b5061013b6104ee36600461360c565b61127e565b3480156104ff57600080fd5b5061051361050e3660046135d8565b6114a2565b60405161016c91906138dc565b34801561052c57600080fd5b5061013b61053b36600461366d565b611658565b34801561054c57600080fd5b506105a561055b36600461360c565b6000602081905290815260409020805460019091015460ff81169061010081046001600160701b031690600160781b810463ffffffff1690600160981b900465ffffffffffff1685565b6040805195865293151560208601526001600160701b039092169284019290925263ffffffff909116606083015265ffffffffffff16608082015260a00161016c565b60015b60058110156105fc576001016105eb565b61060582611a71565b5050565b6000805a90503330146106635760405162461bcd60e51b815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c7900000000000000000060448201526064015b60405180910390fd5b8451606081015160a082015181016127100160405a603f0281610688576106886139af565b0410156106a05763deaddead60e01b60005260206000fd5b8751600090156107345760006106bd846000015160008c86611aba565b9050806107325760006106d1610800611ad2565b80519091501561072c5784600001516001600160a01b03168a602001517f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a2018760200151846040516107239291906139c5565b60405180910390a35b60019250505b505b600088608001515a8603019050610784828a8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250611afe915050565b955050505050505b949350505050565b60006001600160e01b0319821663307e35b760e11b14806107c557506001600160e01b0319821663122a0e9b60e31b145b806107e057506001600160e01b0319821663cf28ef9760e01b145b806107fb57506001600160e01b03198216633e84f02160e01b145b8061081657506301ffc9a760e01b6001600160e01b03198316145b92915050565b33600090815260208190526040902063ffffffff821661087e5760405162461bcd60e51b815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c6179000000000000604482015260640161065a565b600181015463ffffffff600160781b909104811690831610156108e35760405162461bcd60e51b815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d6500000000604482015260640161065a565b600181015460009061090490349061010090046001600160701b03166139f4565b90506000811161094b5760405162461bcd60e51b81526020600482015260126024820152711b9bc81cdd185ad9481cdc1958da599a595960721b604482015260640161065a565b6001600160701b038111156109935760405162461bcd60e51b815260206004820152600e60248201526d7374616b65206f766572666c6f7760901b604482015260640161065a565b6040805160a08101825283548152600160208083018281526001600160701b0386811685870190815263ffffffff8a811660608801818152600060808a0181815233808352828a52918c90209a518b55965199909801805494519151965165ffffffffffff16600160981b0265ffffffffffff60981b1997909416600160781b029690961669ffffffffffffffffffff60781b1991909516610100026effffffffffffffffffffffffffff0019991515999099166effffffffffffffffffffffffffffff1990941693909317979097179190911691909117179055835185815290810192909252917fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01910160405180910390a2505050565b3360009081526001602090815260408083206001600160c01b03851684529091528120805491610ada83613a07565b919050555050565b3360009081526020819052604090208054821115610b425760405162461bcd60e51b815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c6172676500000000000000604482015260640161065a565b8054610b4f908390613a20565b8155604080516001600160a01b03851681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb910160405180910390a26000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114610be2576040519150601f19603f3d011682016040523d82523d6000602084013e610be7565b606091505b5050905080610c2d5760405162461bcd60e51b81526020600482015260126024820152716661696c656420746f20776974686472617760701b604482015260640161065a565b50505050565b6000610c3e82611cc1565b6040805160208101929092523090820152466060820152608001604051602081830303815290604052805190602001209050919050565b610c7d611cda565b816000816001600160401b03811115610c9857610c98613211565b604051908082528060200260200182016040528015610cd157816020015b610cbe61308c565b815260200190600190039081610cb65790505b50905060005b82811015610d4a576000828281518110610cf357610cf3613a33565b60200260200101519050600080610d2e848a8a87818110610d1657610d16613a33565b9050602002810190610d289190613a49565b85611d02565b91509150610d3f8483836000611f08565b505050600101610cd7565b506040516000907fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972908290a160005b83811015610dd457610dc881888884818110610d9757610d97613a33565b9050602002810190610da99190613a49565b858481518110610dbb57610dbb613a33565b60200260200101516120a4565b90910190600101610d79565b50610ddf8482612360565b505050610dec6001600255565b505050565b600080846001600160a01b03168484604051610e0e929190613a6a565b600060405180830381855af49150503d8060008114610e49576040519150601f19603f3d011682016040523d82523d6000602084013e610e4e565b606091505b50915091508181604051632650415560e21b815260040161065a929190613a7a565b83158015610e8657506001600160a01b0383163b155b15610ed35760405162461bcd60e51b815260206004820152601960248201527f41413230206163636f756e74206e6f74206465706c6f79656400000000000000604482015260640161065a565b60148110610f4b576000610eea6014828486613a95565b610ef391613abf565b60601c9050803b600003610f495760405162461bcd60e51b815260206004820152601b60248201527f41413330207061796d6173746572206e6f74206465706c6f7965640000000000604482015260640161065a565b505b60405162461bcd60e51b8152602060048201526000602482015260440161065a565b610fa86040518060c0016040528060008152602001600081526020016000815260200160008152602001600015158152602001606081525090565b610fb0611cda565b610fb861308c565b610fc186612459565b600080610fd060008985611d02565b915091506000610fe260008a866120a4565b9050600060606001600160a01b038a161561105a57896001600160a01b03168989604051611011929190613a6a565b6000604051808303816000865af19150503d806000811461104e576040519150601f19603f3d011682016040523d82523d6000602084013e611053565b606091505b5090925090505b6040518060c0016040528087608001518152602001848152602001868152602001858152602001831515815260200182815250965050505050505061078c6001600255565b60006110b36006546001600160a01b031690565b6001600160a01b031663570e1a3684846040518363ffffffff1660e01b81526004016110e0929190613b1d565b6020604051808303816000875af11580156110ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111239190613b31565b604051633653dc0360e11b81526001600160a01b038216600482015290915060240161065a565b33600090815260208190526040812060018101549091600160781b90910463ffffffff1690036111a95760405162461bcd60e51b815260206004820152600a6024820152691b9bdd081cdd185ad95960b21b604482015260640161065a565b600181015460ff166111f15760405162461bcd60e51b8152602060048201526011602482015270616c726561647920756e7374616b696e6760781b604482015260640161065a565b600181015460009061121090600160781b900463ffffffff1642613b4e565b60018301805460ff65ffffffffffff60981b011916600160981b65ffffffffffff841690810260ff19169190911790915560405190815290915033907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a906020015b60405180910390a25050565b336000908152602081905260409020600181015461010090046001600160701b0316806112e45760405162461bcd60e51b81526020600482015260146024820152734e6f207374616b6520746f20776974686472617760601b604482015260640161065a565b6001820154600160981b900465ffffffffffff166113445760405162461bcd60e51b815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b652829206669727374000000604482015260640161065a565b600182015442600160981b90910465ffffffffffff1611156113a85760405162461bcd60e51b815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f74206475650000000000604482015260640161065a565b600182018054610100600160c81b0319169055604080516001600160a01b03851681526020810183905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda3910160405180910390a26000836001600160a01b03168260405160006040518083038185875af1925050503d806000811461144c576040519150601f19603f3d011682016040523d82523d6000602084013e611451565b606091505b5050905080610c2d5760405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b650000000000000000604482015260640161065a565b6114aa613124565b6114b261308c565b6114bb83612459565b6000806114ca60008685611d02565b9150915060006114e1846000015160e001516125a1565b8451519091506000906114f3906125a1565b9050611512604051806040016040528060008152602001600081525090565b36600061152260408b018b613b74565b909250905060006014821015611539576000611554565b611547601460008486613a95565b61155091613abf565b60601c5b905061155f816125a1565b9350505050600085905060006040518060a0016040528089608001518152602001896040015181526020018881526020018781526020016115a18a6060015190565b90526040805180820182526003546001600160a01b039081168252825180840190935260045483526005546020848101919091528201929092529192508316158015906115f857506001836001600160a01b031614155b15611625576040518060400160405280846001600160a01b03168152602001611620856125a1565b905290505b6040805160a081018252928352602083019590955293810192909252506060810192909252608082015295945050505050565b611660611cda565b816000805b828110156117cd573686868381811061168057611680613a33565b90506020028101906116929190613bba565b90503660006116a18380613bd0565b909250905060006116b8604085016020860161360c565b90506000196001600160a01b038216016117145760405162461bcd60e51b815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f72000000000000000000604482015260640161065a565b6001600160a01b038116156117b1576001600160a01b038116632dd8113384846117416040890189613b74565b6040518563ffffffff1660e01b81526004016117609493929190613d3d565b60006040518083038186803b15801561177857600080fd5b505afa925050508015611789575060015b6117b15760405163086a9f7560e41b81526001600160a01b038216600482015260240161065a565b6117bb82876139f4565b95505060019093019250611665915050565b506000816001600160401b038111156117e8576117e8613211565b60405190808252806020026020018201604052801561182157816020015b61180e61308c565b8152602001906001900390816118065790505b5090506000805b848110156118fe573688888381811061184357611843613a33565b90506020028101906118559190613bba565b90503660006118648380613bd0565b9092509050600061187b604085016020860161360c565b90508160005b818110156118ec57600089898151811061189d5761189d613a33565b602002602001015190506000806118c08b898987818110610d1657610d16613a33565b915091506118d084838389611f08565b8a6118da81613a07565b9b505060019093019250611881915050565b50506001909401935061182892505050565b506040517fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f97290600090a150600080805b85811015611a2c573689898381811061194957611949613a33565b905060200281019061195b9190613bba565b905061196d604082016020830161360c565b6001600160a01b03167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d60405160405180910390a23660006119af8380613bd0565b90925090508060005b81811015611a1b576119fa888585848181106119d6576119d6613a33565b90506020028101906119e89190613a49565b8b8b81518110610dbb57610dbb613a33565b611a0490886139f4565b965087611a1081613a07565b9850506001016119b8565b50506001909301925061192e915050565b506040516000907f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d908290a2611a628682612360565b5050505050610dec6001600255565b6000611a7d82346125f3565b9050816001600160a01b03167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c48260405161127291815260200190565b6000806000845160208601878987f195945050505050565b60603d82811115611ae05750815b604051602082018101604052818152816000602083013e9392505050565b6000805a855190915060009081611b1482612626565b60e08301519091506001600160a01b038116611b335782519350611bef565b809350600088511115611bef57868202955060028a6002811115611b5957611b59613dba565b14611bef5760a0830151604051637c627b2160e01b81526001600160a01b03831691637c627b2191611b95908e908d908c908990600401613dd0565b600060405180830381600088803b158015611baf57600080fd5b5087f193505050508015611bc1575060015b611bef576000611bd2610800611ad2565b905080604051632b5e552f60e21b815260040161065a9190613e1a565b5a60a0840151606085015160808c015192880399909901980190880380821115611c22576064600a828403020498909801975b50506040890151878302965086811015611c7e5760028b6002811115611c4a57611c4a613dba565b03611c6d57809650611c5b8a612650565b611c688a6000898b61269f565b611cb3565b63deadaa5160e01b60005260206000fd5b868103611c8b86826125f3565b506000808d6002811115611ca157611ca1613dba565b149050611cb08c828b8d61269f565b50505b505050505050949350505050565b6000611ccc8261271a565b805190602001209050919050565b6002805403611cfc57604051633ee5aeb560e01b815260040160405180910390fd5b60028055565b60008060005a8451909150611d1786826127d2565b611d2086610c33565b6020860152604081015161012082015161010083015160a08401516080850151606086015160c0870151861717171717176effffffffffffffffffffffffffffff811115611db05760405162461bcd60e51b815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f770000000000000000604482015260640161065a565b6000611ddf8460c081015160a08201516080830151606084015160408501516101009095015194010101010290565b9050611dee8a8a8a84876128e0565b9650611e0284600001518560200151612a77565b611e585789604051631101335b60e11b815260040161065a918152604060208201819052601a908201527f4141323520696e76616c6964206163636f756e74206e6f6e6365000000000000606082015260800190565b825a86031115611eb45789604051631101335b60e11b815260040161065a918152604060208201819052601e908201527f41413236206f76657220766572696669636174696f6e4761734c696d69740000606082015260800190565b60e08401516060906001600160a01b031615611edb57611ed68b8b8b85612ac4565b975090505b604089018290528060608a015260a08a01355a870301896080018181525050505050505050935093915050565b600080611f1485612c82565b91509150816001600160a01b0316836001600160a01b031614611f7a5785604051631101335b60e11b815260040161065a9181526040602082018190526014908201527320a0991a1039b4b3b730ba3ab9329032b93937b960611b606082015260800190565b8015611fd25785604051631101335b60e11b815260040161065a9181526040602082018190526017908201527f414132322065787069726564206f72206e6f7420647565000000000000000000606082015260800190565b6000611fdd85612c82565b925090506001600160a01b038116156120395786604051631101335b60e11b815260040161065a9181526040602082018190526014908201527320a0999a1039b4b3b730ba3ab9329032b93937b960611b606082015260800190565b811561209b5786604051631101335b60e11b815260040161065a9181526040602082018190526021908201527f41413332207061796d61737465722065787069726564206f72206e6f742064756060820152606560f81b608082015260a00190565b50505050505050565b6000805a905060006120b7846060015190565b60405190915060009036826120cf60608a018a613b74565b91509150606060008260038111156120e657843591505b506372288ed160e01b6001600160e01b03198216016121945760008b8b60200151604051602401612118929190613e2d565b60408051601f198184030181529181526020820180516001600160e01b0316638dd7712f60e01b1790525190915030906242dc539061215f9084908f908d90602401613ef9565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509250506121e9565b306001600160a01b03166242dc5385858d8b6040516024016121b99493929190613f39565b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505091505b602060008351602085016000305af195506000519850846040525050505050806123565760003d806020036122245760206000803e60005191505b5063deaddead60e01b81036122775787604051631101335b60e11b815260040161065a918152604060208201819052600f908201526e41413935206f7574206f662067617360881b606082015260800190565b63deadaa5160e01b81036122c857600086608001515a6122979087613a20565b6122a191906139f4565b60408801519091506122b288612650565b6122bf886000838561269f565b95506123549050565b855180516020808901519201516001600160a01b0390911691907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f47929061230f610800611ad2565b60405161231d9291906139c5565b60405180910390a3600086608001515a6123379087613a20565b61234191906139f4565b90506123506002888684611afe565b9550505b505b5050509392505050565b6001600160a01b0382166123b65760405162461bcd60e51b815260206004820152601860248201527f4141393020696e76616c69642062656e65666963696172790000000000000000604482015260640161065a565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612403576040519150601f19603f3d011682016040523d82523d6000602084013e612408565b606091505b5050905080610dec5760405162461bcd60e51b815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e656669636961727900604482015260640161065a565b6124cc6040516135a560f21b60208201526bffffffffffffffffffffffff193060601b166022820152600160f81b603682015260009060370160408051808303601f190181529190528051602090910120600680546001600160a01b0319166001600160a01b0390921691909117905550565b3063957122ab6124df6040840184613b74565b6124ec602086018661360c565b6124f960e0870187613b74565b6040518663ffffffff1660e01b8152600401612519959493929190613f70565b60006040518083038186803b15801561253157600080fd5b505afa925050508015612542575060015b61259e5761254e613fb2565b806308c379a0036125925750612562613fce565b8061256d5750612594565b80511561060557600081604051631101335b60e11b815260040161065a9291906139c5565b505b3d6000803e3d6000fd5b50565b604080518082018252600080825260208083018281526001600160a01b03959095168252819052919091206001015461010081046001600160701b03168252600160781b900463ffffffff1690915290565b6001600160a01b03821660009081526020819052604081208054829061261a9085906139f4565b91829055509392505050565b61010081015161012082015160009190808203612644575092915050565b61078c82488301612cd5565b80518051602080840151928101516040519081526001600160a01b0390921692917f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e910160405180910390a350565b835160e081015181516020808801519301516040516001600160a01b039384169492909316927f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f9161270c9189908990899093845291151560208401526040830152606082015260800190565b60405180910390a450505050565b606081356020830135600061273a6127356040870187613b74565b612ced565b9050600061274e6127356060880188613b74565b9050608086013560a087013560c0880135600061277161273560e08c018c613b74565b604080516001600160a01b039a909a1660208b015289810198909852606089019690965250608087019390935260a086019190915260c085015260e08401526101008084019190915281518084039091018152610120909201905292915050565b6127df602083018361360c565b6001600160a01b03168152602082810135908201526001600160801b036080808401358281166060850152811c604084015260a084013560c0808501919091528401359182166101008401521c61012082015236600061284260e0850185613b74565b909250905080156128c557603481101561289e5760405162461bcd60e51b815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e6444617461000000604482015260640161065a565b6128a88282612d00565b60a086015260808501526001600160a01b031660e0840152610c2d565b600060e084018190526080840181905260a084015250505050565b82518051600091906128ff88876128fa60408b018b613b74565b612d68565b60e082015160006001600160a01b038216612943576001600160a01b03831660009081526020819052604090205487811161293c5780880361293f565b60005b9150505b60208801516040516306608bdf60e21b81526001600160a01b038516916319822f7c918991612979918e91908790600401614057565b60206040518083038160008887f1935050505080156129b5575060408051601f3d908101601f191682019092526129b29181019061407c565b60015b6129e057896129c5610800611ad2565b6040516365c8fd4d60e01b815260040161065a929190614095565b94506001600160a01b038216612a6a576001600160a01b0383166000908152602081905260409020805480891115612a64578b604051631101335b60e11b815260040161065a9181526040602082018190526017908201527f41413231206469646e2774207061792070726566756e64000000000000000000606082015260800190565b88900390555b5050505095945050505050565b6001600160a01b038216600090815260016020908152604080832084821c80855292528220805484916001600160401b038316919085612ab683613a07565b909155501495945050505050565b60606000805a855160e08101516001600160a01b03811660009081526020819052604090208054939450919290919087811015612b4d578a604051631101335b60e11b815260040161065a918152604060208201819052601e908201527f41413331207061796d6173746572206465706f73697420746f6f206c6f770000606082015260800190565b8781038260000181905550600084608001519050836001600160a01b03166352b7512c828d8d602001518d6040518563ffffffff1660e01b8152600401612b9693929190614057565b60006040518083038160008887f193505050508015612bd757506040513d6000823e601f3d908101601f19168201604052612bd491908101906140d2565b60015b612c02578b612be7610800611ad2565b6040516365c8fd4d60e01b815260040161065a92919061415d565b9098509650805a87031115612c73578b604051631101335b60e11b815260040161065a9181526040602082018190526027908201527f41413336206f766572207061796d6173746572566572696669636174696f6e47606082015266185cd31a5b5a5d60ca1b608082015260a00190565b50505050505094509492505050565b60008082600003612c9857506000928392509050565b6000612ca38461301b565b9050806040015165ffffffffffff16421180612cca5750806020015165ffffffffffff1642105b905194909350915050565b6000818310612ce45781612ce6565b825b9392505050565b6000604051828085833790209392505050565b60008080612d116014828688613a95565b612d1a91613abf565b60601c612d2b602460148789613a95565b612d349161419a565b60801c612d4560346024888a613a95565b612d4e9161419a565b9194506001600160801b0316925060801c90509250925092565b8015610c2d578251516001600160a01b0381163b15612dd35784604051631101335b60e11b815260040161065a918152604060208201819052601f908201527f414131302073656e64657220616c726561647920636f6e737472756374656400606082015260800190565b6000612de76006546001600160a01b031690565b6001600160a01b031663570e1a3686600001516040015186866040518463ffffffff1660e01b8152600401612e1d929190613b1d565b60206040518083038160008887f1158015612e3c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e619190613b31565b90506001600160a01b038116612ec35785604051631101335b60e11b815260040161065a918152604060208201819052601b908201527f4141313320696e6974436f6465206661696c6564206f72204f4f470000000000606082015260800190565b816001600160a01b0316816001600160a01b031614612f2d5785604051631101335b60e11b815260040161065a91815260406020808301829052908201527f4141313420696e6974436f6465206d7573742072657475726e2073656e646572606082015260800190565b806001600160a01b03163b600003612f905785604051631101335b60e11b815260040161065a91815260406020808301829052908201527f4141313520696e6974436f6465206d757374206372656174652073656e646572606082015260800190565b6000612f9f6014828688613a95565b612fa891613abf565b60601c9050826001600160a01b031686602001517fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d83896000015160e0015160405161300a9291906001600160a01b0392831681529116602082015260400190565b60405180910390a350505050505050565b60408051606081018252600080825260208201819052918101919091528160a081901c65ffffffffffff8116600003613057575065ffffffffffff5b604080516060810182526001600160a01b03909316835260d09490941c602083015265ffffffffffff16928101929092525090565b6040518060a001604052806130ff60405180610140016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b8152602001600080191681526020016000815260200160008152602001600081525090565b6040518060a001604052806131616040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b8152602001613183604051806040016040528060008152602001600081525090565b81526020016131a5604051806040016040528060008152602001600081525090565b81526020016131c7604051806040016040528060008152602001600081525090565b81526020016131d46131d9565b905290565b604051806040016040528060006001600160a01b031681526020016131d4604051806040016040528060008152602001600081525090565b634e487b7160e01b600052604160045260246000fd5b60a081018181106001600160401b038211171561324657613246613211565b60405250565b601f8201601f191681016001600160401b038111828210171561327157613271613211565b6040525050565b60405161014081016001600160401b038111828210171561329b5761329b613211565b60405290565b60006001600160401b038211156132ba576132ba613211565b50601f01601f191660200190565b6001600160a01b038116811461259e57600080fd5b80356132e8816132c8565b919050565b60008183036101c081121561330157600080fd5b60405161330d81613227565b8092506101408083121561332057600080fd5b613328613278565b9250613333856132dd565b83526020850135602084015260408501356040840152606085013560608401526080850135608084015260a085013560a084015260c085013560c084015261337d60e086016132dd565b60e084015261010085810135908401526101208086013590840152918152908301356020820152610160830135604082015261018083013560608201526101a090920135608090920191909152919050565b60008083601f8401126133e157600080fd5b5081356001600160401b038111156133f857600080fd5b60208301915083602082850101111561341057600080fd5b9250929050565b600080600080610200858703121561342e57600080fd5b84356001600160401b038082111561344557600080fd5b818701915087601f83011261345957600080fd5b8135613464816132a1565b604051613471828261324c565b8281528a602084870101111561348657600080fd5b826020860160208301376000602084830101528098505050506134ac88602089016132ed565b94506101e08701359150808211156134c357600080fd5b506134d0878288016133cf565b95989497509550505050565b6000602082840312156134ee57600080fd5b81356001600160e01b031981168114612ce657600080fd5b60006020828403121561351857600080fd5b813563ffffffff81168114612ce657600080fd5b80356001600160c01b03811681146132e857600080fd5b60006020828403121561355557600080fd5b612ce68261352c565b6000806040838503121561357157600080fd5b823561357c816132c8565b915061358a6020840161352c565b90509250929050565b600080604083850312156135a657600080fd5b82356135b1816132c8565b946020939093013593505050565b600061012082840312156135d257600080fd5b50919050565b6000602082840312156135ea57600080fd5b81356001600160401b0381111561360057600080fd5b61078c848285016135bf565b60006020828403121561361e57600080fd5b8135612ce6816132c8565b60008083601f84011261363b57600080fd5b5081356001600160401b0381111561365257600080fd5b6020830191508360208260051b850101111561341057600080fd5b60008060006040848603121561368257600080fd5b83356001600160401b0381111561369857600080fd5b6136a486828701613629565b90945092505060208401356136b8816132c8565b809150509250925092565b6000806000604084860312156136d857600080fd5b83356136e3816132c8565b925060208401356001600160401b038111156136fe57600080fd5b61370a868287016133cf565b9497909650939450505050565b60008060008060006060868803121561372f57600080fd5b85356001600160401b038082111561374657600080fd5b61375289838a016133cf565b909750955060208801359150613767826132c8565b9093506040870135908082111561377d57600080fd5b5061378a888289016133cf565b969995985093965092949392505050565b600080600080606085870312156137b157600080fd5b84356001600160401b03808211156137c857600080fd5b6137d4888389016135bf565b9550602087013591506137e6826132c8565b909350604086013590808211156134c357600080fd5b60005b838110156138175781810151838201526020016137ff565b50506000910152565b600081518084526138388160208601602086016137fc565b601f01601f19169290920160200192915050565b60208152815160208201526020820151604082015260408201516060820152606082015160808201526080820151151560a0820152600060a083015160c08084015261078c60e0840182613820565b600080602083850312156138ae57600080fd5b82356001600160401b038111156138c457600080fd5b6138d0858286016133cf565b90969095509350505050565b602080825282516101408383015280516101608401529081015161018083015260408101516101a083015260608101516101c08301526080015160a06101e083015260009061392f610200840182613820565b9050602084015161394d604085018280518252602090810151910152565b506040840151805160808581019190915260209182015160a08601526060860151805160c087015282015160e086015285015180516001600160a01b031661010086015280820151805161012087015290910151610140850152509392505050565b634e487b7160e01b600052601260045260246000fd5b82815260406020820152600061078c6040830184613820565b634e487b7160e01b600052601160045260246000fd5b80820180821115610816576108166139de565b600060018201613a1957613a196139de565b5060010190565b81810381811115610816576108166139de565b634e487b7160e01b600052603260045260246000fd5b6000823561011e19833603018112613a6057600080fd5b9190910192915050565b8183823760009101908152919050565b821515815260406020820152600061078c6040830184613820565b60008085851115613aa557600080fd5b83861115613ab257600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015613aec5780818660140360031b1b83161692505b505092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600061078c602083018486613af4565b600060208284031215613b4357600080fd5b8151612ce6816132c8565b65ffffffffffff818116838216019080821115613b6d57613b6d6139de565b5092915050565b6000808335601e19843603018112613b8b57600080fd5b8301803591506001600160401b03821115613ba557600080fd5b60200191503681900382131561341057600080fd5b60008235605e19833603018112613a6057600080fd5b6000808335601e19843603018112613be757600080fd5b8301803591506001600160401b03821115613c0157600080fd5b6020019150600581901b360382131561341057600080fd5b6000808335601e19843603018112613c3057600080fd5b83016020810192503590506001600160401b03811115613c4f57600080fd5b80360382131561341057600080fd5b6000610120613c7d84613c70856132dd565b6001600160a01b03169052565b60208301356020850152613c946040840184613c19565b826040870152613ca78387018284613af4565b92505050613cb86060840184613c19565b8583036060870152613ccb838284613af4565b925050506080830135608085015260a083013560a085015260c083013560c0850152613cfa60e0840184613c19565b85830360e0870152613d0d838284613af4565b92505050610100613d2081850185613c19565b86840383880152613d32848284613af4565b979650505050505050565b6040808252810184905260006060600586901b830181019083018783805b89811015613da357868503605f190184528235368c900361011e19018112613d81578283fd5b613d8d868d8301613c5e565b9550506020938401939290920191600101613d5b565b505050508281036020840152613d32818587613af4565b634e487b7160e01b600052602160045260246000fd5b600060038610613df057634e487b7160e01b600052602160045260246000fd5b85825260806020830152613e076080830186613820565b6040830194909452506060015292915050565b602081526000612ce66020830184613820565b604081526000613e406040830185613c5e565b90508260208301529392505050565b805180516001600160a01b031683526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c084015260e0810151613eb460e08501826001600160a01b03169052565b5061010081810151908401526101209081015190830152602081015161014083015260408101516101608301526060810151610180830152608001516101a090910152565b6000610200808352613f0d81840187613820565b9050613f1c6020840186613e4f565b8281036101e0840152613f2f8185613820565b9695505050505050565b6000610200808352613f4e8184018789613af4565b9050613f5d6020840186613e4f565b8281036101e0840152613d328185613820565b606081526000613f84606083018789613af4565b6001600160a01b03861660208401528281036040840152613fa6818587613af4565b98975050505050505050565b600060033d1115613fcb5760046000803e5060005160e01c5b90565b600060443d1015613fdc5790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561400b57505050505090565b82850191508151818111156140235750505050505090565b843d870101602082850101111561403d5750505050505090565b61404c6020828601018761324c565b509095945050505050565b60608152600061406a6060830186613c5e565b60208301949094525060400152919050565b60006020828403121561408e57600080fd5b5051919050565b82815260606020820152600d60608201526c10504c8cc81c995d995c9d1959609a1b608082015260a06040820152600061078c60a0830184613820565b600080604083850312156140e557600080fd5b82516001600160401b038111156140fb57600080fd5b8301601f8101851361410c57600080fd5b8051614117816132a1565b604051614124828261324c565b82815287602084860101111561413957600080fd5b61414a8360208301602087016137fc565b6020969096015195979596505050505050565b82815260606020820152600d60608201526c10504cccc81c995d995c9d1959609a1b608082015260a06040820152600061078c60a0830184613820565b6fffffffffffffffffffffffffffffffff198135818116916010851015613aec5760109490940360031b84901b169092169291505056fea26469706673582212206610f8adc26902276d5fab81aee5c0147a30d9a747079784da0641d1ede15a4864736f6c63430008170033"; + +type EntryPointSimulationsConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: EntryPointSimulationsConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class EntryPointSimulations__factory extends ContractFactory { + constructor(...args: EntryPointSimulationsConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): EntryPointSimulations { + return super.attach(address) as EntryPointSimulations; + } + override connect(signer: Signer): EntryPointSimulations__factory { + return super.connect(signer) as EntryPointSimulations__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): EntryPointSimulationsInterface { + return new utils.Interface(_abi) as EntryPointSimulationsInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): EntryPointSimulations { + return new Contract( + address, + _abi, + signerOrProvider + ) as EntryPointSimulations; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/core/EntryPoint__factory.ts b/packages/types/src/contracts/EPv7/factories/core/EntryPoint__factory.ts new file mode 100644 index 00000000..7067638d --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/core/EntryPoint__factory.ts @@ -0,0 +1,1057 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + EntryPoint, + EntryPointInterface, +} from "../../core/EntryPoint"; + +const _abi = [ + { + inputs: [ + { + internalType: "bool", + name: "success", + type: "bool", + }, + { + internalType: "bytes", + name: "ret", + type: "bytes", + }, + ], + name: "DelegateAndRevert", + type: "error", + }, + { + inputs: [ + { + internalType: "uint256", + name: "opIndex", + type: "uint256", + }, + { + internalType: "string", + name: "reason", + type: "string", + }, + ], + name: "FailedOp", + type: "error", + }, + { + inputs: [ + { + internalType: "uint256", + name: "opIndex", + type: "uint256", + }, + { + internalType: "string", + name: "reason", + type: "string", + }, + { + internalType: "bytes", + name: "inner", + type: "bytes", + }, + ], + name: "FailedOpWithRevert", + type: "error", + }, + { + inputs: [ + { + internalType: "bytes", + name: "returnData", + type: "bytes", + }, + ], + name: "PostOpReverted", + type: "error", + }, + { + inputs: [], + name: "ReentrancyGuardReentrantCall", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "SenderAddressResult", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "aggregator", + type: "address", + }, + ], + name: "SignatureValidationFailed", + 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: "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: "PostOpRevertReason", + 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", + }, + ], + name: "UserOperationPrefundTooLow", + 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: [ + { + 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: "target", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "delegateAndRevert", + outputs: [], + stateMutability: "nonpayable", + 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: "uint256", + name: "deposit", + type: "uint256", + }, + { + 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: "uint256", + name: "deposit", + type: "uint256", + }, + { + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation[]", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation[]", + 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: "verificationGasLimit", + type: "uint256", + }, + { + internalType: "uint256", + name: "callGasLimit", + type: "uint256", + }, + { + internalType: "uint256", + name: "paymasterVerificationGasLimit", + type: "uint256", + }, + { + internalType: "uint256", + name: "paymasterPostOpGasLimit", + 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: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + 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", + }, +] as const; + +export const _bytecode = + "0x60a08060405234620000825760016002556101df8181016001600160401b038111838210176200006c57829162003f2b833903906000f080156200006057608052604051613ea39081620000888239608051818181610d22015261324b0152f35b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b600080fdfe60806040526004361015610024575b361561001957600080fd5b61002233612748565b005b60003560e01c806242dc5314611b0057806301ffc9a7146119ae5780630396cb60146116765780630bd28e3b146115fa5780631b2e01b814611566578063205c2878146113d157806322cdde4c1461136b57806335567e1a146112b35780635287ce12146111a557806370a0823114611140578063765e827f14610e82578063850aaf6214610dc35780639b249f6914610c74578063b760faf914610c3a578063bb9fe6bf14610a68578063c23a5cea146107c4578063dbed18e0146101a15763fc7e286d0361000e573461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61013a61229f565b16600052600060205260a0604060002065ffffffffffff6001825492015460405192835260ff8116151560208401526dffffffffffffffffffffffffffff8160081c16604084015263ffffffff8160781c16606084015260981c166080820152f35b600080fd5b3461019c576101af36612317565b906101b86129bd565b60009160005b82811061056f57506101d08493612588565b6000805b8481106102fc5750507fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000809360005b81811061024757610240868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2613ba7565b6001600255005b6102a261025582848a612796565b73ffffffffffffffffffffffffffffffffffffffff6102766020830161282a565b167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a2806127d6565b906000915b8083106102b957505050600101610209565b909194976102f36102ed6001926102e78c8b6102e0826102da8e8b8d61269d565b9261265a565b5191613597565b90612409565b99612416565b950191906102a7565b6020610309828789612796565b61031f61031682806127d6565b9390920161282a565b9160009273ffffffffffffffffffffffffffffffffffffffff8091165b8285106103505750505050506001016101d4565b909192939561037f83610378610366848c61265a565b516103728b898b61269d565b856129f6565b9290613dd7565b9116840361050a576104a5576103958491613dd7565b9116610440576103b5576103aa600191612416565b96019392919061033c565b60a487604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608489604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b61057a818487612796565b9361058585806127d6565b919095602073ffffffffffffffffffffffffffffffffffffffff6105aa82840161282a565b1697600192838a1461076657896105da575b5050505060019293949550906105d191612409565b939291016101be565b8060406105e892019061284b565b918a3b1561019c57929391906040519485937f2dd8113300000000000000000000000000000000000000000000000000000000855288604486016040600488015252606490818601918a60051b8701019680936000915b8c83106106e657505050505050838392610684927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8560009803016024860152612709565b03818a5afa90816106d7575b506106c657602486604051907f86a9f7500000000000000000000000000000000000000000000000000000000082526004820152fd5b93945084936105d1600189806105bc565b6106e0906121bd565b88610690565b91939596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c908a9294969a0301865288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18336030181121561019c57836107538793858394016128ec565b9a0196019301909189979695949261063f565b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b3461019c576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576107fc61229f565b33600052600082526001604060002001908154916dffffffffffffffffffffffffffff8360081c16928315610a0a5765ffffffffffff8160981c1680156109ac57421061094e5760009373ffffffffffffffffffffffffffffffffffffffff859485947fffffffffffffff000000000000000000000000000000000000000000000000ff86951690556040517fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda33391806108da8786836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a2165af16108e8612450565b50156108f057005b606490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b3461019c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c573360005260006020526001604060002001805463ffffffff8160781c16908115610bdc5760ff1615610b7e5765ffffffffffff908142160191818311610b4f5780547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001678ffffffffffff00000000000000000000000000000000000000609885901b161790556040519116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a2005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610022610c6f61229f565b612748565b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043567ffffffffffffffff811161019c576020610cc8610d1b9236906004016122c2565b919073ffffffffffffffffffffffffffffffffffffffff9260405194859283927f570e1a360000000000000000000000000000000000000000000000000000000084528560048501526024840191612709565b03816000857f0000000000000000000000000000000000000000000000000000000000000000165af1908115610db757602492600092610d86575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b610da991925060203d602011610db0575b610da181836121ed565b8101906126dd565b9083610d56565b503d610d97565b6040513d6000823e3d90fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610dfa61229f565b60243567ffffffffffffffff811161019c57600091610e1e839236906004016122c2565b90816040519283928337810184815203915af4610e39612450565b90610e7e6040519283927f99410554000000000000000000000000000000000000000000000000000000008452151560048401526040602484015260448301906123c6565b0390fd5b3461019c57610e9036612317565b610e9b9291926129bd565b610ea483612588565b60005b848110610f1c57506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000915b858310610eec576102408585613ba7565b909193600190610f12610f0087898761269d565b610f0a888661265a565b519088613597565b0194019190610edb565b610f47610f40610f2e8385979561265a565b51610f3a84898761269d565b846129f6565b9190613dd7565b73ffffffffffffffffffffffffffffffffffffffff929183166110db5761107657610f7190613dd7565b911661101157610f8657600101929092610ea7565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608483604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61118c61229f565b1660005260006020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff6111f161229f565b6000608060405161120181612155565b828152826020820152826040820152826060820152015216600052600060205260a06040600020608060405161123681612155565b6001835493848352015490602081019060ff8316151582526dffffffffffffffffffffffffffff60408201818560081c16815263ffffffff936060840193858760781c16855265ffffffffffff978891019660981c1686526040519788525115156020880152511660408601525116606084015251166080820152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760206112ec61229f565b73ffffffffffffffffffffffffffffffffffffffff6113096122f0565b911660005260018252604060002077ffffffffffffffffffffffffffffffffffffffffffffffff821660005282526040600020547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b3461019c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60208136011261019c576004359067ffffffffffffffff821161019c5761012090823603011261019c576113c9602091600401612480565b604051908152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761140861229f565b60243590336000526000602052604060002090815491828411611508576000808573ffffffffffffffffffffffffffffffffffffffff8295839561144c848a612443565b90556040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af16114a2612450565b50156114aa57005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761159d61229f565b73ffffffffffffffffffffffffffffffffffffffff6115ba6122f0565b9116600052600160205277ffffffffffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043577ffffffffffffffffffffffffffffffffffffffffffffffff811680910361019c5733600052600160205260406000209060005260205260406000206116728154612416565b9055005b6020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043563ffffffff9182821680920361019c5733600052600081526040600020928215611950576001840154908160781c1683106118f2576116f86dffffffffffffffffffffffffffff9182349160081c16612409565b93841561189457818511611836579065ffffffffffff61180592546040519061172082612155565b8152848101926001845260408201908816815260608201878152600160808401936000855233600052600089526040600020905181550194511515917fffffffffffffffffffffffffff0000000000000000000000000000000000000060ff72ffffffff0000000000000000000000000000006effffffffffffffffffffffffffff008954945160081b16945160781b1694169116171717835551167fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff78ffffffffffff0000000000000000000000000000000000000083549260981b169116179055565b6040519283528201527fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c0160403392a2005b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361019c57807f60fc6b6e0000000000000000000000000000000000000000000000000000000060209214908115611ad6575b8115611aac575b8115611a82575b8115611a58575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501482611a4d565b7f3e84f0210000000000000000000000000000000000000000000000000000000081149150611a46565b7fcf28ef970000000000000000000000000000000000000000000000000000000081149150611a3f565b7f915074d80000000000000000000000000000000000000000000000000000000081149150611a38565b3461019c576102007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5767ffffffffffffffff60043581811161019c573660238201121561019c57611b62903690602481600401359101612268565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101c0811261019c5761014060405191611b9e83612155565b1261019c5760405192611bb0846121a0565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361019c578452602093604435858201526064356040820152608435606082015260a435608082015260c43560a082015260e43560c08201526101043573ffffffffffffffffffffffffffffffffffffffff8116810361019c5760e08201526101243561010082015261014435610120820152825261016435848301526101843560408301526101a43560608301526101c43560808301526101e43590811161019c57611c7c9036906004016122c2565b905a3033036120f7578351606081015195603f5a0260061c61271060a0840151890101116120ce5760009681519182611ff0575b5050505090611cca915a9003608085015101923691612268565b925a90600094845193611cdc85613ccc565b9173ffffffffffffffffffffffffffffffffffffffff60e0870151168015600014611ea957505073ffffffffffffffffffffffffffffffffffffffff855116935b5a9003019360a06060820151910151016080860151850390818111611e95575b50508302604085015192818410600014611dce5750506003811015611da157600203611d79576113c99293508093611d7481613d65565b613cf6565b5050507fdeadaa51000000000000000000000000000000000000000000000000000000008152fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b81611dde92979396940390613c98565b506003841015611e6857507f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f60808683015192519473ffffffffffffffffffffffffffffffffffffffff865116948873ffffffffffffffffffffffffffffffffffffffff60e0890151169701519160405192835215898301528760408301526060820152a46113c9565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b6064919003600a0204909301928780611d3d565b8095918051611eba575b5050611d1d565b6003861015611fc1576002860315611eb35760a088015190823b1561019c57600091611f2491836040519586809581947f7c627b210000000000000000000000000000000000000000000000000000000083528d60048401526080602484015260848301906123c6565b8b8b0260448301528b60648301520393f19081611fad575b50611fa65787893d610800808211611f9e575b506040519282828501016040528184528284013e610e7e6040519283927fad7954bc000000000000000000000000000000000000000000000000000000008452600484015260248301906123c6565b905083611f4f565b8980611eb3565b611fb89199506121bd565b6000978a611f3c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91600092918380938c73ffffffffffffffffffffffffffffffffffffffff885116910192f115612023575b808080611cb0565b611cca929195503d6108008082116120c6575b5060405190888183010160405280825260008983013e805161205f575b5050600194909161201b565b7f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a20188870151918973ffffffffffffffffffffffffffffffffffffffff8551169401516120bc604051928392835260408d84015260408301906123c6565b0390a38680612053565b905088612036565b877fdeaddead000000000000000000000000000000000000000000000000000000006000526000fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b60a0810190811067ffffffffffffffff82111761217157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610140810190811067ffffffffffffffff82111761217157604052565b67ffffffffffffffff811161217157604052565b6060810190811067ffffffffffffffff82111761217157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761217157604052565b67ffffffffffffffff811161217157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926122748261222e565b9161228260405193846121ed565b82948184528183011161019c578281602093846000960137010152565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9181601f8401121561019c5782359167ffffffffffffffff831161019c576020838186019501011161019c57565b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261019c5760043567ffffffffffffffff9283821161019c578060238301121561019c57816004013593841161019c5760248460051b8301011161019c57602401919060243573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b60005b8381106123b65750506000910152565b81810151838201526020016123a6565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612402815180928187528780880191016123a3565b0116010190565b91908201809211610b4f57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b4f5760010190565b91908203918211610b4f57565b3d1561247b573d906124618261222e565b9161246f60405193846121ed565b82523d6000602084013e565b606090565b604061248e8183018361284b565b90818351918237206124a3606084018461284b565b90818451918237209260c06124bb60e083018361284b565b908186519182372091845195602087019473ffffffffffffffffffffffffffffffffffffffff833516865260208301358789015260608801526080870152608081013560a087015260a081013582870152013560e08501526101009081850152835261012083019167ffffffffffffffff918484108385111761217157838252845190206101408501908152306101608601524661018086015260608452936101a00191821183831017612171575251902090565b67ffffffffffffffff81116121715760051b60200190565b9061259282612570565b6040906125a260405191826121ed565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06125d08295612570565b019160005b8381106125e25750505050565b60209082516125f081612155565b83516125fb816121a0565b600081526000849181838201528187820152816060818184015260809282848201528260a08201528260c08201528260e082015282610100820152826101208201528652818587015281898701528501528301528286010152016125d5565b805182101561266e5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919081101561266e5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18136030182121561019c570190565b9081602091031261019c575173ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b7f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4602073ffffffffffffffffffffffffffffffffffffffff61278a3485613c98565b936040519485521692a2565b919081101561266e5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18136030182121561019c570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c57602001918160051b3603831361019c57565b3573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c5760200191813603831361019c57565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561019c57016020813591019167ffffffffffffffff821161019c57813603831361019c57565b61012091813573ffffffffffffffffffffffffffffffffffffffff811680910361019c576129626129476129ba9561299b93855260208601356020860152612937604087018761289c565b9091806040880152860191612709565b612954606086018661289c565b908583036060870152612709565b6080840135608084015260a084013560a084015260c084013560c084015261298d60e085018561289c565b9084830360e0860152612709565b916129ac610100918281019061289c565b929091818503910152612709565b90565b60028054146129cc5760028055565b60046040517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b926000905a93805194843573ffffffffffffffffffffffffffffffffffffffff811680910361019c5786526020850135602087015260808501356fffffffffffffffffffffffffffffffff90818116606089015260801c604088015260a086013560c088015260c086013590811661010088015260801c610120870152612a8060e086018661284b565b801561357b576034811061351d578060141161019c578060241161019c5760341161019c57602481013560801c60a0880152601481013560801c60808801523560601c60e08701525b612ad285612480565b60208301526040860151946effffffffffffffffffffffffffffff8660c08901511760608901511760808901511760a0890151176101008901511761012089015117116134bf57604087015160608801510160808801510160a08801510160c0880151016101008801510296835173ffffffffffffffffffffffffffffffffffffffff81511690612b66604085018561284b565b806131e4575b505060e0015173ffffffffffffffffffffffffffffffffffffffff1690600082156131ac575b6020612bd7918b828a01516000868a604051978896879586937f19822f7c00000000000000000000000000000000000000000000000000000000855260048501613db5565b0393f160009181613178575b50612c8b573d8c610800808311612c83575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141323320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123c6565b915082612bf5565b9a92939495969798999a91156130f2575b509773ffffffffffffffffffffffffffffffffffffffff835116602084015190600052600160205260406000208160401c60005260205267ffffffffffffffff604060002091825492612cee84612416565b9055160361308d575a8503116130285773ffffffffffffffffffffffffffffffffffffffff60e0606093015116612d42575b509060a09184959697986040608096015260608601520135905a900301910152565b969550505a9683519773ffffffffffffffffffffffffffffffffffffffff60e08a01511680600052600060205260406000208054848110612fc3576080612dcd9a9b9c600093878094039055015192602089015183604051809d819582947f52b7512c0000000000000000000000000000000000000000000000000000000084528c60048501613db5565b039286f1978860009160009a612f36575b50612e86573d8b610800808311612e7e575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141333320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123c6565b915082612df0565b9991929394959697989998925a900311612eab57509096959094939291906080612d20565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602760448201527f41413336206f766572207061796d6173746572566572696669636174696f6e4760648201527f61734c696d6974000000000000000000000000000000000000000000000000006084820152fd5b915098503d90816000823e612f4b82826121ed565b604081838101031261019c5780519067ffffffffffffffff821161019c57828101601f83830101121561019c578181015191612f868361222e565b93612f9460405195866121ed565b838552820160208483850101011161019c57602092612fba9184808701918501016123a3565b01519838612dde565b60848b604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b608490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413236206f76657220766572696669636174696f6e4761734c696d697400006064820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152fd5b600052600060205260406000208054808c11613113578b9003905538612c9c565b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152fd5b9091506020813d6020116131a4575b81613194602093836121ed565b8101031261019c57519038612be3565b3d9150613187565b508060005260006020526040600020548a81116000146131d75750612bd7602060005b915050612b92565b6020612bd7918c036131cf565b833b61345a57604088510151602060405180927f570e1a360000000000000000000000000000000000000000000000000000000082528260048301528160008161323260248201898b612709565b039273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690f1908115610db75760009161343b575b5073ffffffffffffffffffffffffffffffffffffffff811680156133d6578503613371573b1561330c5760141161019c5773ffffffffffffffffffffffffffffffffffffffff9183887fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d604060e0958787602086015195510151168251913560601c82526020820152a391612b6c565b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152fd5b60848e604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313420696e6974436f6465206d7573742072657475726e2073656e6465726064820152fd5b60848f604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601b60448201527f4141313320696e6974436f6465206661696c6564206f72204f4f4700000000006064820152fd5b613454915060203d602011610db057610da181836121ed565b3861327c565b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b5050600060e087015260006080870152600060a0870152612ac9565b9092915a906060810151916040928351967fffffffff00000000000000000000000000000000000000000000000000000000886135d7606084018461284b565b600060038211613b9f575b7f8dd7712f0000000000000000000000000000000000000000000000000000000094168403613a445750505061379d6000926136b292602088015161363a8a5193849360208501528b602485015260648401906128ec565b90604483015203906136727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0928381018352826121ed565b61379189519485927e42dc5300000000000000000000000000000000000000000000000000000000602085015261020060248501526102248401906123c6565b613760604484018b60806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152876123c6565b039081018352826121ed565b6020918183809351910182305af1600051988652156137bf575b505050505050565b909192939495965060003d8214613a3a575b7fdeaddead00000000000000000000000000000000000000000000000000000000810361385b57608487878051917f220266b600000000000000000000000000000000000000000000000000000000835260048301526024820152600f60448201527f41413935206f7574206f662067617300000000000000000000000000000000006064820152fd5b7fdeadaa510000000000000000000000000000000000000000000000000000000091929395949650146000146138c55750506138a961389e6138b8935a90612443565b608085015190612409565b9083015183611d748295613d65565b905b3880808080806137b7565b909261395290828601518651907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f479273ffffffffffffffffffffffffffffffffffffffff9580878551169401516139483d610800808211613a32575b508a519084818301018c5280825260008583013e8a805194859485528401528a8301906123c6565b0390a35a90612443565b916139636080860193845190612409565b926000905a94829488519761397789613ccc565b948260e08b0151168015600014613a1857505050875116955b5a9003019560a06060820151910151019051860390818111613a04575b5050840290850151928184106000146139de57505080611e68575090816139d89293611d7481613d65565b906138ba565b6139ee9082849397950390613c98565b50611e68575090826139ff92613cf6565b6139d8565b6064919003600a02049094019338806139ad565b90919892509751613a2a575b50613990565b955038613a24565b905038613920565b8181803e516137d1565b613b97945082935090613a8c917e42dc53000000000000000000000000000000000000000000000000000000006020613b6b9501526102006024860152610224850191612709565b613b3a604484018860806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152846123c6565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018952886121ed565b60008761379d565b5081356135e2565b73ffffffffffffffffffffffffffffffffffffffff168015613c3a57600080809381935af1613bd4612450565b5015613bdc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff166000526000602052613cc66040600020918254612409565b80915590565b610120610100820151910151808214613cf257480180821015613ced575090565b905090565b5090565b9190917f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f6080602083015192519473ffffffffffffffffffffffffffffffffffffffff946020868851169660e089015116970151916040519283526000602084015260408301526060820152a4565b60208101519051907f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e60208073ffffffffffffffffffffffffffffffffffffffff855116940151604051908152a3565b613dcd604092959493956060835260608301906128ec565b9460208201520152565b8015613e6457600060408051613dec816121d1565b828152826020820152015273ffffffffffffffffffffffffffffffffffffffff811690604065ffffffffffff91828160a01c16908115613e5c575b60d01c92825191613e37836121d1565b8583528460208401521691829101524211908115613e5457509091565b905042109091565b839150613e27565b5060009060009056fea2646970667358221220b094fd69f04977ae9458e5ba422d01cd2d20dbcfca0992ff37f19aa07deec25464736f6c6343000817003360808060405234610016576101c3908161001c8239f35b600080fdfe6080600436101561000f57600080fd5b6000803560e01c63570e1a361461002557600080fd5b3461018a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018a576004359167ffffffffffffffff9081841161018657366023850112156101865783600401358281116101825736602482870101116101825780601411610182577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec810192808411610155577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81600b8501160116830190838210908211176101555792846024819482600c60209a968b9960405286845289840196603889018837830101525193013560601c5af1908051911561014d575b5073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b90503861012e565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8380fd5b8280fd5b80fdfea26469706673582212207adef8895ad3393b02fab10a111d85ea80ff35366aa43995f4ea20e67f29200664736f6c63430008170033"; + +type EntryPointConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: EntryPointConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class EntryPoint__factory extends ContractFactory { + constructor(...args: EntryPointConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): EntryPoint { + return super.attach(address) as EntryPoint; + } + override connect(signer: Signer): EntryPoint__factory { + return super.connect(signer) as EntryPoint__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): EntryPointInterface { + return new utils.Interface(_abi) as EntryPointInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): EntryPoint { + return new Contract(address, _abi, signerOrProvider) as EntryPoint; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/core/NonceManager__factory.ts b/packages/types/src/contracts/EPv7/factories/core/NonceManager__factory.ts new file mode 100644 index 00000000..5d5469c0 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/core/NonceManager__factory.ts @@ -0,0 +1,87 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + NonceManager, + NonceManagerInterface, +} from "../../core/NonceManager"; + +const _abi = [ + { + 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: "uint192", + name: "key", + type: "uint192", + }, + ], + name: "incrementNonce", + outputs: [], + 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", + }, +] as const; + +export class NonceManager__factory { + static readonly abi = _abi; + static createInterface(): NonceManagerInterface { + return new utils.Interface(_abi) as NonceManagerInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): NonceManager { + return new Contract(address, _abi, signerOrProvider) as NonceManager; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/core/SenderCreator__factory.ts b/packages/types/src/contracts/EPv7/factories/core/SenderCreator__factory.ts new file mode 100644 index 00000000..dc7756f6 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/core/SenderCreator__factory.ts @@ -0,0 +1,82 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + SenderCreator, + SenderCreatorInterface, +} from "../../core/SenderCreator"; + +const _abi = [ + { + inputs: [ + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + ], + name: "createSender", + outputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b50610213806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063570e1a3614610030575b600080fd5b61004361003e3660046100f9565b61006c565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60008061007c601482858761016b565b61008591610195565b60601c90506000610099846014818861016b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525084519495509360209350849250905082850182875af190506000519350806100f057600093505b50505092915050565b6000806020838503121561010c57600080fd5b823567ffffffffffffffff8082111561012457600080fd5b818501915085601f83011261013857600080fd5b81358181111561014757600080fd5b86602082850101111561015957600080fd5b60209290920196919550909350505050565b6000808585111561017b57600080fd5b8386111561018857600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156101d55780818660140360031b1b83161692505b50509291505056fea26469706673582212204d4d792be653535745d2f0897b9fc8feed690aae4dea5ee45c439a5e15a06dc564736f6c63430008170033"; + +type SenderCreatorConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SenderCreatorConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SenderCreator__factory extends ContractFactory { + constructor(...args: SenderCreatorConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): SenderCreator { + return super.attach(address) as SenderCreator; + } + override connect(signer: Signer): SenderCreator__factory { + return super.connect(signer) as SenderCreator__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SenderCreatorInterface { + return new utils.Interface(_abi) as SenderCreatorInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): SenderCreator { + return new Contract(address, _abi, signerOrProvider) as SenderCreator; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/core/StakeManager__factory.ts b/packages/types/src/contracts/EPv7/factories/core/StakeManager__factory.ts new file mode 100644 index 00000000..995a251b --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/core/StakeManager__factory.ts @@ -0,0 +1,311 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + StakeManager, + StakeManagerInterface, +} from "../../core/StakeManager"; + +const _abi = [ + { + 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: "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: "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: [ + { + 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: "uint256", + name: "deposit", + type: "uint256", + }, + { + 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: "uint256", + name: "deposit", + type: "uint256", + }, + { + 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: [], + 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", + }, +] as const; + +export class StakeManager__factory { + static readonly abi = _abi; + static createInterface(): StakeManagerInterface { + return new utils.Interface(_abi) as StakeManagerInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): StakeManager { + return new Contract(address, _abi, signerOrProvider) as StakeManager; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/core/UserOperationLib__factory.ts b/packages/types/src/contracts/EPv7/factories/core/UserOperationLib__factory.ts new file mode 100644 index 00000000..252fde43 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/core/UserOperationLib__factory.ts @@ -0,0 +1,102 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + UserOperationLib, + UserOperationLibInterface, +} from "../../core/UserOperationLib"; + +const _abi = [ + { + inputs: [], + name: "PAYMASTER_DATA_OFFSET", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PAYMASTER_POSTOP_GAS_OFFSET", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PAYMASTER_VALIDATION_GAS_OFFSET", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x60a9610039600b82828239805160001a60731461002c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060475760003560e01c806325093e1b14604c578063b29a8ff4146065578063ede3150214606c575b600080fd5b6053602481565b60405190815260200160405180910390f35b6053601481565b605360348156fea26469706673582212201f7a90647e46dab09f0fa420d36a18b554361fc1351ea9b36329880cdbd465a364736f6c63430008170033"; + +type UserOperationLibConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: UserOperationLibConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class UserOperationLib__factory extends ContractFactory { + constructor(...args: UserOperationLibConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): UserOperationLib { + return super.attach(address) as UserOperationLib; + } + override connect(signer: Signer): UserOperationLib__factory { + return super.connect(signer) as UserOperationLib__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): UserOperationLibInterface { + return new utils.Interface(_abi) as UserOperationLibInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): UserOperationLib { + return new Contract(address, _abi, signerOrProvider) as UserOperationLib; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/core/index.ts b/packages/types/src/contracts/EPv7/factories/core/index.ts new file mode 100644 index 00000000..3439cc50 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/core/index.ts @@ -0,0 +1,11 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { BaseAccount__factory } from "./BaseAccount__factory"; +export { BasePaymaster__factory } from "./BasePaymaster__factory"; +export { EntryPoint__factory } from "./EntryPoint__factory"; +export { EntryPointSimulations__factory } from "./EntryPointSimulations__factory"; +export { NonceManager__factory } from "./NonceManager__factory"; +export { SenderCreator__factory } from "./SenderCreator__factory"; +export { StakeManager__factory } from "./StakeManager__factory"; +export { UserOperationLib__factory } from "./UserOperationLib__factory"; diff --git a/packages/types/src/contracts/EPv7/factories/index.ts b/packages/types/src/contracts/EPv7/factories/index.ts new file mode 100644 index 00000000..80ab1f53 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as core from "./core"; +export * as interfaces from "./interfaces"; +export * as samples from "./samples"; diff --git a/packages/types/src/contracts/EPv7/factories/interfaces/IAccountExecute__factory.ts b/packages/types/src/contracts/EPv7/factories/interfaces/IAccountExecute__factory.ts new file mode 100644 index 00000000..285d1e1f --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IAccountExecute__factory.ts @@ -0,0 +1,91 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IAccountExecute, + IAccountExecuteInterface, +} from "../../interfaces/IAccountExecute"; + +const _abi = [ + { + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + { + internalType: "bytes32", + name: "userOpHash", + type: "bytes32", + }, + ], + name: "executeUserOp", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IAccountExecute__factory { + static readonly abi = _abi; + static createInterface(): IAccountExecuteInterface { + return new utils.Interface(_abi) as IAccountExecuteInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IAccountExecute { + return new Contract(address, _abi, signerOrProvider) as IAccountExecute; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/interfaces/IAccount__factory.ts b/packages/types/src/contracts/EPv7/factories/interfaces/IAccount__factory.ts new file mode 100644 index 00000000..415a2b9e --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IAccount__factory.ts @@ -0,0 +1,102 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IAccount, + IAccountInterface, +} from "../../interfaces/IAccount"; + +const _abi = [ + { + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + { + internalType: "bytes32", + name: "userOpHash", + type: "bytes32", + }, + { + internalType: "uint256", + name: "missingAccountFunds", + type: "uint256", + }, + ], + name: "validateUserOp", + outputs: [ + { + internalType: "uint256", + name: "validationData", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IAccount__factory { + static readonly abi = _abi; + static createInterface(): IAccountInterface { + return new utils.Interface(_abi) as IAccountInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IAccount { + return new Contract(address, _abi, signerOrProvider) as IAccount; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/interfaces/IAggregator__factory.ts b/packages/types/src/contracts/EPv7/factories/interfaces/IAggregator__factory.ts new file mode 100644 index 00000000..72691ca5 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IAggregator__factory.ts @@ -0,0 +1,223 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IAggregator, + IAggregatorInterface, +} from "../../interfaces/IAggregator"; + +const _abi = [ + { + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation[]", + name: "userOps", + type: "tuple[]", + }, + ], + name: "aggregateSignatures", + outputs: [ + { + internalType: "bytes", + name: "aggregatedSignature", + type: "bytes", + }, + ], + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation[]", + name: "userOps", + type: "tuple[]", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + name: "validateSignatures", + outputs: [], + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + ], + name: "validateUserOpSignature", + outputs: [ + { + internalType: "bytes", + name: "sigForUserOp", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class IAggregator__factory { + static readonly abi = _abi; + static createInterface(): IAggregatorInterface { + return new utils.Interface(_abi) as IAggregatorInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IAggregator { + return new Contract(address, _abi, signerOrProvider) as IAggregator; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPointSimulations__factory.ts b/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPointSimulations__factory.ts new file mode 100644 index 00000000..0a28eed9 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPointSimulations__factory.ts @@ -0,0 +1,1113 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IEntryPointSimulations, + IEntryPointSimulationsInterface, +} from "../../interfaces/IEntryPointSimulations"; + +const _abi = [ + { + inputs: [ + { + internalType: "bool", + name: "success", + type: "bool", + }, + { + internalType: "bytes", + name: "ret", + type: "bytes", + }, + ], + name: "DelegateAndRevert", + type: "error", + }, + { + inputs: [ + { + internalType: "uint256", + name: "opIndex", + type: "uint256", + }, + { + internalType: "string", + name: "reason", + type: "string", + }, + ], + name: "FailedOp", + type: "error", + }, + { + inputs: [ + { + internalType: "uint256", + name: "opIndex", + type: "uint256", + }, + { + internalType: "string", + name: "reason", + type: "string", + }, + { + internalType: "bytes", + name: "inner", + type: "bytes", + }, + ], + name: "FailedOpWithRevert", + type: "error", + }, + { + inputs: [ + { + internalType: "bytes", + name: "returnData", + type: "bytes", + }, + ], + name: "PostOpReverted", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "SenderAddressResult", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "aggregator", + type: "address", + }, + ], + name: "SignatureValidationFailed", + 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: "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: "PostOpRevertReason", + 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", + }, + ], + name: "UserOperationPrefundTooLow", + 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: [ + { + 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: "target", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "delegateAndRevert", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "depositTo", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getDepositInfo", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "deposit", + type: "uint256", + }, + { + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation[]", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation[]", + 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: [ + { + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "op", + type: "tuple", + }, + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bytes", + name: "targetCallData", + type: "bytes", + }, + ], + name: "simulateHandleOp", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "preOpGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "paid", + type: "uint256", + }, + { + internalType: "uint256", + name: "accountValidationData", + type: "uint256", + }, + { + internalType: "uint256", + name: "paymasterValidationData", + type: "uint256", + }, + { + internalType: "bool", + name: "targetSuccess", + type: "bool", + }, + { + internalType: "bytes", + name: "targetResult", + type: "bytes", + }, + ], + internalType: "struct IEntryPointSimulations.ExecutionResult", + name: "", + type: "tuple", + }, + ], + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + ], + name: "simulateValidation", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "preOpGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "prefund", + type: "uint256", + }, + { + internalType: "uint256", + name: "accountValidationData", + type: "uint256", + }, + { + internalType: "uint256", + name: "paymasterValidationData", + type: "uint256", + }, + { + 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", + }, + ], + internalType: "struct IEntryPointSimulations.ValidationResult", + name: "", + type: "tuple", + }, + ], + 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", + }, +] as const; + +export class IEntryPointSimulations__factory { + static readonly abi = _abi; + static createInterface(): IEntryPointSimulationsInterface { + return new utils.Interface(_abi) as IEntryPointSimulationsInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IEntryPointSimulations { + return new Contract( + address, + _abi, + signerOrProvider + ) as IEntryPointSimulations; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPoint__factory.ts b/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPoint__factory.ts new file mode 100644 index 00000000..3bf54591 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPoint__factory.ts @@ -0,0 +1,821 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IEntryPoint, + IEntryPointInterface, +} from "../../interfaces/IEntryPoint"; + +const _abi = [ + { + inputs: [ + { + internalType: "bool", + name: "success", + type: "bool", + }, + { + internalType: "bytes", + name: "ret", + type: "bytes", + }, + ], + name: "DelegateAndRevert", + type: "error", + }, + { + inputs: [ + { + internalType: "uint256", + name: "opIndex", + type: "uint256", + }, + { + internalType: "string", + name: "reason", + type: "string", + }, + ], + name: "FailedOp", + type: "error", + }, + { + inputs: [ + { + internalType: "uint256", + name: "opIndex", + type: "uint256", + }, + { + internalType: "string", + name: "reason", + type: "string", + }, + { + internalType: "bytes", + name: "inner", + type: "bytes", + }, + ], + name: "FailedOpWithRevert", + type: "error", + }, + { + inputs: [ + { + internalType: "bytes", + name: "returnData", + type: "bytes", + }, + ], + name: "PostOpReverted", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "SenderAddressResult", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "aggregator", + type: "address", + }, + ], + name: "SignatureValidationFailed", + 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: "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: "PostOpRevertReason", + 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", + }, + ], + name: "UserOperationPrefundTooLow", + 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: [ + { + 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: "target", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "delegateAndRevert", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "depositTo", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getDepositInfo", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "deposit", + type: "uint256", + }, + { + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation[]", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation[]", + 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: [], + 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", + }, +] as const; + +export class IEntryPoint__factory { + static readonly abi = _abi; + static createInterface(): IEntryPointInterface { + return new utils.Interface(_abi) as IEntryPointInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IEntryPoint { + return new Contract(address, _abi, signerOrProvider) as IEntryPoint; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/interfaces/INonceManager__factory.ts b/packages/types/src/contracts/EPv7/factories/interfaces/INonceManager__factory.ts new file mode 100644 index 00000000..4ac75c03 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/interfaces/INonceManager__factory.ts @@ -0,0 +1,63 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + INonceManager, + INonceManagerInterface, +} from "../../interfaces/INonceManager"; + +const _abi = [ + { + 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: "uint192", + name: "key", + type: "uint192", + }, + ], + name: "incrementNonce", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class INonceManager__factory { + static readonly abi = _abi; + static createInterface(): INonceManagerInterface { + return new utils.Interface(_abi) as INonceManagerInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): INonceManager { + return new Contract(address, _abi, signerOrProvider) as INonceManager; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/interfaces/IPaymaster__factory.ts b/packages/types/src/contracts/EPv7/factories/interfaces/IPaymaster__factory.ts new file mode 100644 index 00000000..40cc2036 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IPaymaster__factory.ts @@ -0,0 +1,135 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IPaymaster, + IPaymasterInterface, +} from "../../interfaces/IPaymaster"; + +const _abi = [ + { + inputs: [ + { + internalType: "enum IPaymaster.PostOpMode", + name: "mode", + type: "uint8", + }, + { + internalType: "bytes", + name: "context", + type: "bytes", + }, + { + internalType: "uint256", + name: "actualGasCost", + type: "uint256", + }, + { + internalType: "uint256", + name: "actualUserOpFeePerGas", + type: "uint256", + }, + ], + name: "postOp", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + { + internalType: "bytes32", + name: "userOpHash", + type: "bytes32", + }, + { + internalType: "uint256", + name: "maxCost", + type: "uint256", + }, + ], + name: "validatePaymasterUserOp", + outputs: [ + { + internalType: "bytes", + name: "context", + type: "bytes", + }, + { + internalType: "uint256", + name: "validationData", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IPaymaster__factory { + static readonly abi = _abi; + static createInterface(): IPaymasterInterface { + return new utils.Interface(_abi) as IPaymasterInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IPaymaster { + return new Contract(address, _abi, signerOrProvider) as IPaymaster; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/interfaces/IStakeManager__factory.ts b/packages/types/src/contracts/EPv7/factories/interfaces/IStakeManager__factory.ts new file mode 100644 index 00000000..6725db7d --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IStakeManager__factory.ts @@ -0,0 +1,268 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IStakeManager, + IStakeManagerInterface, +} from "../../interfaces/IStakeManager"; + +const _abi = [ + { + 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: "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: "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: [ + { + 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: "account", + type: "address", + }, + ], + name: "getDepositInfo", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "deposit", + type: "uint256", + }, + { + 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: [], + 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", + }, +] as const; + +export class IStakeManager__factory { + static readonly abi = _abi; + static createInterface(): IStakeManagerInterface { + return new utils.Interface(_abi) as IStakeManagerInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IStakeManager { + return new Contract(address, _abi, signerOrProvider) as IStakeManager; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/interfaces/index.ts b/packages/types/src/contracts/EPv7/factories/interfaces/index.ts new file mode 100644 index 00000000..06f62ea1 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/interfaces/index.ts @@ -0,0 +1,11 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IAccount__factory } from "./IAccount__factory"; +export { IAccountExecute__factory } from "./IAccountExecute__factory"; +export { IAggregator__factory } from "./IAggregator__factory"; +export { IEntryPoint__factory } from "./IEntryPoint__factory"; +export { IEntryPointSimulations__factory } from "./IEntryPointSimulations__factory"; +export { INonceManager__factory } from "./INonceManager__factory"; +export { IPaymaster__factory } from "./IPaymaster__factory"; +export { IStakeManager__factory } from "./IStakeManager__factory"; diff --git a/packages/types/src/contracts/EPv7/factories/samples/IOracle__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/IOracle__factory.ts new file mode 100644 index 00000000..3792cf6d --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/IOracle__factory.ts @@ -0,0 +1,45 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IOracle, + IOracleInterface, +} from "../../samples/IOracle"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "ethOutput", + type: "uint256", + }, + ], + name: "getTokenValueOfEth", + outputs: [ + { + internalType: "uint256", + name: "tokenInput", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class IOracle__factory { + static readonly abi = _abi; + static createInterface(): IOracleInterface { + return new utils.Interface(_abi) as IOracleInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IOracle { + return new Contract(address, _abi, signerOrProvider) as IOracle; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/samples/LegacyTokenPaymaster__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/LegacyTokenPaymaster__factory.ts new file mode 100644 index 00000000..8843b34e --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/LegacyTokenPaymaster__factory.ts @@ -0,0 +1,723 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + LegacyTokenPaymaster, + LegacyTokenPaymasterInterface, +} from "../../samples/LegacyTokenPaymaster"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "accountFactory", + type: "address", + }, + { + internalType: "string", + name: "_symbol", + type: "string", + }, + { + internalType: "contract IEntryPoint", + name: "_entryPoint", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "allowance", + type: "uint256", + }, + { + internalType: "uint256", + name: "needed", + type: "uint256", + }, + ], + name: "ERC20InsufficientAllowance", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + { + internalType: "uint256", + name: "needed", + type: "uint256", + }, + ], + name: "ERC20InsufficientBalance", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "approver", + type: "address", + }, + ], + name: "ERC20InvalidApprover", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "receiver", + type: "address", + }, + ], + name: "ERC20InvalidReceiver", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "ERC20InvalidSender", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "ERC20InvalidSpender", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "OwnableInvalidOwner", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "OwnableUnauthorizedAccount", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [], + name: "COST_OF_POST", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint32", + name: "unstakeDelaySec", + type: "uint32", + }, + ], + name: "addStake", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "deposit", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "entryPoint", + outputs: [ + { + internalType: "contract IEntryPoint", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getDeposit", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "mintTokens", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "enum IPaymaster.PostOpMode", + name: "mode", + type: "uint8", + }, + { + internalType: "bytes", + name: "context", + type: "bytes", + }, + { + internalType: "uint256", + name: "actualGasCost", + type: "uint256", + }, + { + internalType: "uint256", + name: "actualUserOpFeePerGas", + type: "uint256", + }, + ], + name: "postOp", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "theFactory", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "unlockStake", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + { + internalType: "bytes32", + name: "userOpHash", + type: "bytes32", + }, + { + internalType: "uint256", + name: "maxCost", + type: "uint256", + }, + ], + name: "validatePaymasterUserOp", + outputs: [ + { + internalType: "bytes", + name: "context", + type: "bytes", + }, + { + internalType: "uint256", + name: "validationData", + type: "uint256", + }, + ], + 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: "amount", + type: "uint256", + }, + ], + name: "withdrawTo", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x60c06040523480156200001157600080fd5b506040516200216538038062002165833981016040819052620000349162000486565b81808233806200005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200006a81620000d4565b50620000768162000124565b6001600160a01b0316608052600462000090838262000613565b5060056200009f828262000613565b5050506001600160a01b03831660a052620000bc306001620001e7565b620000cb303360001962000225565b50505062000732565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516301ffc9a760e01b815263122a0e9b60e31b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801562000170573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001969190620006df565b620001e45760405162461bcd60e51b815260206004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d617463680000604482015260640162000056565b50565b6001600160a01b038216620002135760405163ec442f0560e01b81526000600482015260240162000056565b620002216000838362000239565b5050565b6200023483838360016200036c565b505050565b6001600160a01b038316620002685780600360008282546200025c91906200070a565b90915550620002dc9050565b6001600160a01b03831660009081526001602052604090205481811015620002bd5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000056565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216620002fa5760038054829003905562000319565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200035f91815260200190565b60405180910390a3505050565b6001600160a01b038416620003985760405163e602df0560e01b81526000600482015260240162000056565b6001600160a01b038316620003c457604051634a1406b160e11b81526000600482015260240162000056565b6001600160a01b03808516600090815260026020908152604080832093871683529290522082905580156200044257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516200043991815260200190565b60405180910390a35b50505050565b6001600160a01b0381168114620001e457600080fd5b634e487b7160e01b600052604160045260246000fd5b8051620004818162000448565b919050565b6000806000606084860312156200049c57600080fd5b8351620004a98162000448565b602085810151919450906001600160401b0380821115620004c957600080fd5b818701915087601f830112620004de57600080fd5b815181811115620004f357620004f36200045e565b604051601f8201601f19908116603f011681019083821181831017156200051e576200051e6200045e565b816040528281528a868487010111156200053757600080fd5b600093505b828410156200055b57848401860151818501870152928501926200053c565b60008684830101528097505050505050506200057a6040850162000474565b90509250925092565b600181811c908216806200059857607f821691505b602082108103620005b957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000234576000816000526020600020601f850160051c81016020861015620005ea5750805b601f850160051c820191505b818110156200060b57828155600101620005f6565b505050505050565b81516001600160401b038111156200062f576200062f6200045e565b620006478162000640845462000583565b84620005bf565b602080601f8311600181146200067f5760008415620006665750858301515b600019600386901b1c1916600185901b1785556200060b565b600085815260208120601f198616915b82811015620006b0578886015182559484019460019091019084016200068f565b5085821015620006cf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620006f257600080fd5b815180151581146200070357600080fd5b9392505050565b808201808211156200072c57634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a0516119d562000790600039600081816103aa01526114360152600081816103fe01528181610541015281816106b70152818161079901528181610866015281816108ef015281816109a20152610c7101526119d56000f3fe60806040526004361061018b5760003560e01c80638da5cb5b116100d6578063c23a5cea1161007f578063dd62ed3e11610059578063dd62ed3e14610472578063f0dda65c146104c5578063f2fde38b146104e557600080fd5b8063c23a5cea14610435578063c399ec8814610455578063d0e30db01461046a57600080fd5b8063a9059cbb116100b0578063a9059cbb146103cc578063b0d691fe146103ec578063bb9fe6bf1461042057600080fd5b80638da5cb5b1461033757806395d89b41146103835780639f5ca2211461039857600080fd5b8063313ce56711610138578063715018a611610112578063715018a6146102ec578063796d4371146103015780637c627b211461031757600080fd5b8063313ce5671461025f57806352b7512c1461027b57806370a08231146102a957600080fd5b806318160ddd1161016957806318160ddd14610200578063205c28781461021f57806323b872dd1461023f57600080fd5b80630396cb601461019057806306fdde03146101a5578063095ea7b3146101d0575b600080fd5b6101a361019e3660046114e4565b610505565b005b3480156101b157600080fd5b506101ba6105b7565b6040516101c79190611575565b60405180910390f35b3480156101dc57600080fd5b506101f06101eb3660046115aa565b610649565b60405190151581526020016101c7565b34801561020c57600080fd5b506003545b6040519081526020016101c7565b34801561022b57600080fd5b506101a361023a3660046115aa565b610663565b34801561024b57600080fd5b506101f061025a3660046115d6565b6106fb565b34801561026b57600080fd5b50604051601281526020016101c7565b34801561028757600080fd5b5061029b610296366004611617565b61071f565b6040516101c792919061166b565b3480156102b557600080fd5b506102116102c436600461168d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b3480156102f857600080fd5b506101a3610742565b34801561030d57600080fd5b50610211613a9881565b34801561032357600080fd5b506101a36103323660046116aa565b610756565b34801561034357600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c7565b34801561038f57600080fd5b506101ba610772565b3480156103a457600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d857600080fd5b506101f06103e73660046115aa565b610781565b3480156103f857600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561042c57600080fd5b506101a361078f565b34801561044157600080fd5b506101a361045036600461168d565b610819565b34801561046157600080fd5b506102116108be565b6101a3610974565b34801561047e57600080fd5b5061021161048d366004611742565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b3480156104d157600080fd5b506101a36104e03660046115aa565b6109fc565b3480156104f157600080fd5b506101a361050036600461168d565b610a12565b61050d610a7b565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b15801561059b57600080fd5b505af11580156105af573d6000803e3d6000fd5b505050505050565b6060600480546105c69061177b565b80601f01602080910402602001604051908101604052809291908181526020018280546105f29061177b565b801561063f5780601f106106145761010080835404028352916020019161063f565b820191906000526020600020905b81548152906001019060200180831161062257829003601f168201915b5050505050905090565b600033610657818585610ad3565b60019150505b92915050565b61066b610a7b565b6040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b15801561059b57600080fd5b600033610709858285610ae5565b610714858585610bae565b506001949350505050565b6060600061072b610c59565b610736858585610cf8565b91509150935093915050565b61074a610a7b565b6107546000610f4b565b565b61075e610c59565b61076b8585858585610fc0565b5050505050565b6060600580546105c69061177b565b600033610657818585610bae565b610797610a7b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b50505050565b610821610a7b565b6040517fc23a5cea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b1580156108aa57600080fd5b505af115801561076b573d6000803e3d6000fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f91906117ce565b905090565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99034906024016000604051808303818588803b1580156108aa57600080fd5b610a04610a7b565b610a0e8282611006565b5050565b610a1a610a7b565b610a4430610a3d60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000610ad3565b610a4d81611062565b610a7830827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ad3565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610754576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b610ae083838360016110c3565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108135781811015610b9f576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610aca565b610813848484840360006110c3565b73ffffffffffffffffffffffffffffffffffffffff8316610bfe576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b73ffffffffffffffffffffffffffffffffffffffff8216610c4e576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b610ae083838361120b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e7400000000000000000000006044820152606401610aca565b6060600080610d06846113b6565b90506000610d13876113c3565b9050613a988111610da6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f546f6b656e5061796d61737465723a2067617320746f6f206c6f7720666f722060448201527f706f73744f7000000000000000000000000000000000000000000000000000006064820152608401610aca565b610db360408801886117e7565b159050610e6757610dc3876113f3565b81610dd46102c460208a018a61168d565b1015610e62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f546f6b656e5061796d61737465723a206e6f2062616c616e636520287072652d60448201527f63726561746529000000000000000000000000000000000000000000000000006064820152608401610aca565b610ee0565b81610e786102c460208a018a61168d565b1015610ee0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f546f6b656e5061796d61737465723a206e6f2062616c616e63650000000000006044820152606401610aca565b610eed602088018861168d565b6040805173ffffffffffffffffffffffffffffffffffffffff909216602083015201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052976000975095505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610fce8486018661168d565b90506000610ff0610fe184613a98611882565b610feb9086611899565b6113b6565b9050610ffd823083610bae565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611056576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b610a0e6000838361120b565b61106a610a7b565b73ffffffffffffffffffffffffffffffffffffffff81166110ba576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b610a7881610f4b565b73ffffffffffffffffffffffffffffffffffffffff8416611113576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b73ffffffffffffffffffffffffffffffffffffffff8316611163576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526002602090815260408083209387168352929052208290558015610813578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516111fd91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83166112435780600360008282546112389190611899565b909155506112f59050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054818110156112c9576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610aca565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661131e5760038054829003905561134a565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113a991815260200190565b60405180910390a3505050565b600061065d6064836118ac565b60006113d260e08301836117e7565b6113e1916034916024916118e7565b6113ea91611911565b60801c92915050565b600061140260408301836117e7565b611411916014916000916118e7565b61141a91611959565b60601c905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168114610a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f546f6b656e5061796d61737465723a2077726f6e67206163636f756e7420666160448201527f63746f72790000000000000000000000000000000000000000000000000000006064820152608401610aca565b6000602082840312156114f657600080fd5b813563ffffffff8116811461150a57600080fd5b9392505050565b6000815180845260005b818110156115375760208185018101518683018201520161151b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061150a6020830184611511565b73ffffffffffffffffffffffffffffffffffffffff81168114610a7857600080fd5b600080604083850312156115bd57600080fd5b82356115c881611588565b946020939093013593505050565b6000806000606084860312156115eb57600080fd5b83356115f681611588565b9250602084013561160681611588565b929592945050506040919091013590565b60008060006060848603121561162c57600080fd5b833567ffffffffffffffff81111561164357600080fd5b8401610120818703121561165657600080fd5b95602085013595506040909401359392505050565b60408152600061167e6040830185611511565b90508260208301529392505050565b60006020828403121561169f57600080fd5b813561150a81611588565b6000806000806000608086880312156116c257600080fd5b8535600381106116d157600080fd5b9450602086013567ffffffffffffffff808211156116ee57600080fd5b818801915088601f83011261170257600080fd5b81358181111561171157600080fd5b89602082850101111561172357600080fd5b9699602092909201985095966040810135965060600135945092505050565b6000806040838503121561175557600080fd5b823561176081611588565b9150602083013561177081611588565b809150509250929050565b600181811c9082168061178f57607f821691505b6020821081036117c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000602082840312156117e057600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261181c57600080fd5b83018035915067ffffffffffffffff82111561183757600080fd5b60200191503681900382131561184c57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761065d5761065d611853565b8082018082111561065d5761065d611853565b6000826118e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600080858511156118f757600080fd5b8386111561190457600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081358181169160108510156119515780818660100360031b1b83161692505b505092915050565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156119515760149490940360031b84901b169092169291505056fea26469706673582212208de33d88cb1bd980e5d6897c9f19409d09f227423577c02f2aa1f966ead223b964736f6c63430008170033"; + +type LegacyTokenPaymasterConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: LegacyTokenPaymasterConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class LegacyTokenPaymaster__factory extends ContractFactory { + constructor(...args: LegacyTokenPaymasterConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + accountFactory: PromiseOrValue, + _symbol: PromiseOrValue, + _entryPoint: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + accountFactory, + _symbol, + _entryPoint, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + accountFactory: PromiseOrValue, + _symbol: PromiseOrValue, + _entryPoint: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + accountFactory, + _symbol, + _entryPoint, + overrides || {} + ); + } + override attach(address: string): LegacyTokenPaymaster { + return super.attach(address) as LegacyTokenPaymaster; + } + override connect(signer: Signer): LegacyTokenPaymaster__factory { + return super.connect(signer) as LegacyTokenPaymaster__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): LegacyTokenPaymasterInterface { + return new utils.Interface(_abi) as LegacyTokenPaymasterInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): LegacyTokenPaymaster { + return new Contract( + address, + _abi, + signerOrProvider + ) as LegacyTokenPaymaster; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/samples/SimpleAccountFactory__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/SimpleAccountFactory__factory.ts new file mode 100644 index 00000000..5d3a5ee5 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/SimpleAccountFactory__factory.ts @@ -0,0 +1,144 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + SimpleAccountFactory, + SimpleAccountFactoryInterface, +} from "../../samples/SimpleAccountFactory"; + +const _abi = [ + { + inputs: [ + { + internalType: "contract IEntryPoint", + name: "_entryPoint", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [], + name: "accountImplementation", + outputs: [ + { + internalType: "contract SimpleAccount", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "uint256", + name: "salt", + type: "uint256", + }, + ], + name: "createAccount", + outputs: [ + { + internalType: "contract SimpleAccount", + name: "ret", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "uint256", + name: "salt", + type: "uint256", + }, + ], + name: "getAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x60a060405234801561001057600080fd5b506040516129e13803806129e183398101604081905261002f91610088565b8060405161003c9061007b565b6001600160a01b039091168152602001604051809103906000f080158015610068573d6000803e3d6000fd5b506001600160a01b0316608052506100b8565b612011806109d083390190565b60006020828403121561009a57600080fd5b81516001600160a01b03811681146100b157600080fd5b9392505050565b6080516108f06100e060003960008181604b01528181610114015261025801526108f06000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806311464fbe146100465780635fbfb9cf146100965780638cb84e18146100a9575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61006d6100a436600461039d565b6100bc565b61006d6100b736600461039d565b6101ee565b6000806100c984846101ee565b905073ffffffffffffffffffffffffffffffffffffffff81163b80156100f1575090506101e8565b60405173ffffffffffffffffffffffffffffffffffffffff8616602482015284907f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052516101b790610390565b6101c2929190610406565b8190604051809103906000f59050801580156101e2573d6000803e3d6000fd5b50925050505b92915050565b60006103578260001b6040518060200161020790610390565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905273ffffffffffffffffffffffffffffffffffffffff871660248201527f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052905161030093929101610406565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261033c9291602001610474565b6040516020818303038152906040528051906020012061035e565b9392505050565b60006103578383306000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b610417806104a483390190565b600080604083850312156103b057600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146103d457600080fd5b946020939093013593505050565b60005b838110156103fd5781810151838201526020016103e5565b50506000910152565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600082518060408401526104418160608501602087016103e2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b600083516104868184602088016103e2565b83519083019061049a8183602088016103e2565b0194935050505056fe608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220d7f23a80daebb5531c9e4a18d87e812fca112e5df7e56433218edcc12bbe415d64736f6c63430008170033a2646970667358221220f5be4d2659f1a124e46d76b875ad5264a1c62d421946ca067d6132fa6cc4309964736f6c6343000817003360c0604052306080523480156200001557600080fd5b50604051620020113803806200201183398101604081905262000038916200010a565b6001600160a01b03811660a0526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051611e70620001a160003960008181610320015281816106f00152818161079e0152818161092601528181610b6301528181610baa01528181610d6a015261121e015260008181610f3301528181610f5c015261117d0152611e706000f3fe6080604052600436106101125760003560e01c80638da5cb5b116100a5578063bc197c8111610074578063c4d66de811610059578063c4d66de8146103c1578063d087d288146103e1578063f23a6e61146103f657600080fd5b8063bc197c8114610364578063c399ec88146103ac57600080fd5b80638da5cb5b14610269578063ad3cb1cc146102bb578063b0d691fe14610311578063b61d27f61461034457600080fd5b80634a58db19116100e15780634a58db19146102195780634d44560d146102215780634f1ef2861461024157806352d1902d1461025457600080fd5b806301ffc9a71461011e578063150b7a021461015357806319822f7c146101c957806347e1da2a146101f757600080fd5b3661011957005b600080fd5b34801561012a57600080fd5b5061013e61013936600461179b565b61043c565b60405190151581526020015b60405180910390f35b34801561015f57600080fd5b5061019861016e366004611848565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161014a565b3480156101d557600080fd5b506101e96101e43660046118bb565b610521565b60405190815260200161014a565b34801561020357600080fd5b50610217610212366004611954565b610547565b005b6102176106ee565b34801561022d57600080fd5b5061021761023c3660046119ee565b610794565b61021761024f366004611a49565b610843565b34801561026057600080fd5b506101e9610862565b34801561027557600080fd5b506000546102969073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014a565b3480156102c757600080fd5b506103046040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161014a9190611b4f565b34801561031d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610296565b34801561035057600080fd5b5061021761035f366004611ba0565b610891565b34801561037057600080fd5b5061019861037f366004611bfc565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103b857600080fd5b506101e96108e0565b3480156103cd57600080fd5b506102176103dc366004611cbb565b610997565b3480156103ed57600080fd5b506101e9610b16565b34801561040257600080fd5b50610198610411366004611cd8565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a020000000000000000000000000000000000000000000000000000000014806104cf57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061051b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061052b610b92565b6105358484610c33565b905061054082610ce7565b9392505050565b61054f610d52565b8481148015610565575082158061056557508281145b6105d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206172726179206c656e677468730000000000000000000000000060448201526064015b60405180910390fd5b600083900361067c5760005b858110156106765761066e8787838181106105f9576105f9611d42565b905060200201602081019061060e9190611cbb565b600085858581811061062257610622611d42565b90506020028101906106349190611d71565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e1392505050565b6001016105dc565b506106e6565b60005b858110156106e4576106dc87878381811061069c5761069c611d42565b90506020020160208101906106b19190611cbb565b8686848181106106c3576106c3611d42565b9050602002013585858581811061062257610622611d42565b60010161067f565b505b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024016000604051808303818588803b15801561077957600080fd5b505af115801561078d573d6000803e3d6000fd5b5050505050565b61079c610e90565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c287890604401600060405180830381600087803b15801561082f57600080fd5b505af11580156106e6573d6000803e3d6000fd5b61084b610f1b565b6108548261101f565b61085e8282611027565b5050565b600061086c611165565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610899610d52565b6108da848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e1392505050565b50505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561096e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109929190611dd6565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e25750825b905060008267ffffffffffffffff1660011480156109ff5750303b155b905081158015610a0d575080155b15610a44576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aa55784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610aae866111d4565b83156106e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610951565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016105c7565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120610cae81610c74610100870187611d71565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061126892505050565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614610cda57600191505061051b565b5060009392505050565b50565b8015610ce45760405160009033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d806000811461078d576040519150601f19603f3d011682016040523d82523d6000602084013e61078d565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610dad575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e7460448201526064016105c7565b6000808473ffffffffffffffffffffffffffffffffffffffff168484604051610e3c9190611def565b60006040518083038185875af1925050503d8060008114610e79576040519150601f19603f3d011682016040523d82523d6000602084013e610e7e565b606091505b50915091508161078d57805160208201fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331480610eb557503330145b610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e65720000000000000000000000000000000000000000000060448201526064016105c7565b3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610fe857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610fcf7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610c31576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ce4610e90565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156110ac575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526110a991810190611dd6565b60015b6110fa576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016105c7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611156576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016105c7565b6111608383611292565b505050565b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c31576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217835560405191927f0000000000000000000000000000000000000000000000000000000000000000909116917f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de9190a350565b60008060008061127886866112f5565b9250925092506112888282611342565b5090949350505050565b61129b82611446565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156112ed576111608282611515565b61085e611598565b6000806000835160410361132f5760208401516040850151606086015160001a611321888285856115d0565b95509550955050505061133b565b50508151600091506002905b9250925092565b600082600381111561135657611356611e0b565b0361135f575050565b600182600381111561137357611373611e0b565b036113aa576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156113be576113be611e0b565b036113f8576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016105c7565b600382600381111561140c5761140c611e0b565b0361085e576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016105c7565b8073ffffffffffffffffffffffffffffffffffffffff163b6000036114af576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016105c7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161153f9190611def565b600060405180830381855af49150503d806000811461157a576040519150601f19603f3d011682016040523d82523d6000602084013e61157f565b606091505b509150915061158f8583836116ca565b95945050505050565b3415610c31576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561160b57506000915060039050826116c0565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561165f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166116b6575060009250600191508290506116c0565b9250600091508190505b9450945094915050565b6060826116df576116da82611759565b610540565b8151158015611703575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611752576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016105c7565b5080610540565b8051156117695780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156117ad57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054057600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610ce457600080fd5b60008083601f84011261181157600080fd5b50813567ffffffffffffffff81111561182957600080fd5b60208301915083602082850101111561184157600080fd5b9250929050565b60008060008060006080868803121561186057600080fd5b853561186b816117dd565b9450602086013561187b816117dd565b935060408601359250606086013567ffffffffffffffff81111561189e57600080fd5b6118aa888289016117ff565b969995985093965092949392505050565b6000806000606084860312156118d057600080fd5b833567ffffffffffffffff8111156118e757600080fd5b840161012081870312156118fa57600080fd5b95602085013595506040909401359392505050565b60008083601f84011261192157600080fd5b50813567ffffffffffffffff81111561193957600080fd5b6020830191508360208260051b850101111561184157600080fd5b6000806000806000806060878903121561196d57600080fd5b863567ffffffffffffffff8082111561198557600080fd5b6119918a838b0161190f565b909850965060208901359150808211156119aa57600080fd5b6119b68a838b0161190f565b909650945060408901359150808211156119cf57600080fd5b506119dc89828a0161190f565b979a9699509497509295939492505050565b60008060408385031215611a0157600080fd5b8235611a0c816117dd565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611a5c57600080fd5b8235611a67816117dd565b9150602083013567ffffffffffffffff80821115611a8457600080fd5b818501915085601f830112611a9857600080fd5b813581811115611aaa57611aaa611a1a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611af057611af0611a1a565b81604052828152886020848701011115611b0957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015611b46578181015183820152602001611b2e565b50506000910152565b6020815260008251806020840152611b6e816040850160208701611b2b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060008060608587031215611bb657600080fd5b8435611bc1816117dd565b935060208501359250604085013567ffffffffffffffff811115611be457600080fd5b611bf0878288016117ff565b95989497509550505050565b60008060008060008060008060a0898b031215611c1857600080fd5b8835611c23816117dd565b97506020890135611c33816117dd565b9650604089013567ffffffffffffffff80821115611c5057600080fd5b611c5c8c838d0161190f565b909850965060608b0135915080821115611c7557600080fd5b611c818c838d0161190f565b909650945060808b0135915080821115611c9a57600080fd5b50611ca78b828c016117ff565b999c989b5096995094979396929594505050565b600060208284031215611ccd57600080fd5b8135610540816117dd565b60008060008060008060a08789031215611cf157600080fd5b8635611cfc816117dd565b95506020870135611d0c816117dd565b94506040870135935060608701359250608087013567ffffffffffffffff811115611d3657600080fd5b6119dc89828a016117ff565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611da657600080fd5b83018035915067ffffffffffffffff821115611dc157600080fd5b60200191503681900382131561184157600080fd5b600060208284031215611de857600080fd5b5051919050565b60008251611e01818460208701611b2b565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220646ccd794d1cd309da39b56bcfe1238dae05a9d8106dddf47fe099a78d7801e864736f6c63430008170033"; + +type SimpleAccountFactoryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SimpleAccountFactoryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SimpleAccountFactory__factory extends ContractFactory { + constructor(...args: SimpleAccountFactoryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + _entryPoint: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _entryPoint, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _entryPoint: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(_entryPoint, overrides || {}); + } + override attach(address: string): SimpleAccountFactory { + return super.attach(address) as SimpleAccountFactory; + } + override connect(signer: Signer): SimpleAccountFactory__factory { + return super.connect(signer) as SimpleAccountFactory__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SimpleAccountFactoryInterface { + return new utils.Interface(_abi) as SimpleAccountFactoryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): SimpleAccountFactory { + return new Contract( + address, + _abi, + signerOrProvider + ) as SimpleAccountFactory; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/samples/SimpleAccount__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/SimpleAccount__factory.ts new file mode 100644 index 00000000..c35e78b9 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/SimpleAccount__factory.ts @@ -0,0 +1,600 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + SimpleAccount, + SimpleAccountInterface, +} from "../../samples/SimpleAccount"; + +const _abi = [ + { + inputs: [ + { + internalType: "contract IEntryPoint", + name: "anEntryPoint", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "address", + name: "target", + type: "address", + }, + ], + name: "AddressEmptyCode", + type: "error", + }, + { + inputs: [], + name: "ECDSAInvalidSignature", + type: "error", + }, + { + inputs: [ + { + internalType: "uint256", + name: "length", + type: "uint256", + }, + ], + name: "ECDSAInvalidSignatureLength", + type: "error", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "ECDSAInvalidSignatureS", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "implementation", + type: "address", + }, + ], + name: "ERC1967InvalidImplementation", + type: "error", + }, + { + inputs: [], + name: "ERC1967NonPayable", + type: "error", + }, + { + inputs: [], + name: "FailedInnerCall", + type: "error", + }, + { + inputs: [], + name: "InvalidInitialization", + type: "error", + }, + { + inputs: [], + name: "NotInitializing", + type: "error", + }, + { + inputs: [], + name: "UUPSUnauthorizedCallContext", + type: "error", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "slot", + type: "bytes32", + }, + ], + name: "UUPSUnsupportedProxiableUUID", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint64", + name: "version", + type: "uint64", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract IEntryPoint", + name: "entryPoint", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "SimpleAccountInitialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "implementation", + type: "address", + }, + ], + name: "Upgraded", + type: "event", + }, + { + inputs: [], + name: "UPGRADE_INTERFACE_VERSION", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "addDeposit", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "entryPoint", + outputs: [ + { + internalType: "contract IEntryPoint", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "dest", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + { + internalType: "bytes", + name: "func", + type: "bytes", + }, + ], + name: "execute", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address[]", + name: "dest", + type: "address[]", + }, + { + internalType: "uint256[]", + name: "value", + type: "uint256[]", + }, + { + internalType: "bytes[]", + name: "func", + type: "bytes[]", + }, + ], + name: "executeBatch", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "getDeposit", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getNonce", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "anOwner", + type: "address", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + name: "onERC1155BatchReceived", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + name: "onERC1155Received", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + name: "onERC721Received", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "proxiableUUID", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newImplementation", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "upgradeToAndCall", + outputs: [], + stateMutability: "payable", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + { + internalType: "bytes32", + name: "userOpHash", + type: "bytes32", + }, + { + internalType: "uint256", + name: "missingAccountFunds", + type: "uint256", + }, + ], + name: "validateUserOp", + outputs: [ + { + internalType: "uint256", + name: "validationData", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address payable", + name: "withdrawAddress", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "withdrawDepositTo", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + stateMutability: "payable", + type: "receive", + }, +] as const; + +const _bytecode = + "0x60c034610142576001600160401b0390601f611bde38819003918201601f1916830191848311848410176101475780849260209460405283398101031261014257516001600160a01b0381168103610142573060805260a0527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166101305780808316036100eb575b604051611a80908161015e82396080518181816108ff0152610afd015260a05181818161036701528181610611015281816106f001528181610ce501528181610ebc015281816111a40152818161149c015261164e0152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610092565b60405163f92ee8a960e01b8152600490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806301ffc9a71461012b578063150b7a021461012657806319822f7c1461012157806347e1da2a1461011c5780634a58db19146101175780634d44560d146101125780634f1ef2861461010d57806352d1902d146101085780638da5cb5b14610103578063ad3cb1cc146100fe578063b0d691fe146100f9578063b61d27f6146100f4578063bc197c81146100ef578063c399ec88146100ea578063c4d66de8146100e5578063d087d288146100e05763f23a6e610361000e57611207565b611125565b610f15565b610e44565b610d7d565b610d09565b610c9a565b610bc9565b610b77565b610ab7565b61087f565b610692565b6105cf565b610484565b6102fd565b61026c565b3461021b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361021b57807f150b7a0200000000000000000000000000000000000000000000000000000000602092149081156101f1575b81156101c7575b506040519015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386101bc565b7f4e2312e000000000000000000000000000000000000000000000000000000000811491506101b5565b600080fd5b73ffffffffffffffffffffffffffffffffffffffff81160361021b57565b9181601f8401121561021b5782359167ffffffffffffffff831161021b576020838186019501011161021b57565b3461021b5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576102a6600435610220565b6102b1602435610220565b60643567ffffffffffffffff811161021b576102d190369060040161023e565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b3461021b577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60608136011261021b576004359067ffffffffffffffff821161021b5761012090823603011261021b5760443573ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036103f5576103a06103b892602435906004016113d5565b90806103bc575b506040519081529081906020820190565b0390f35b600080808093337ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1506103ee611454565b50386103a7565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152fd5b9181601f8401121561021b5782359167ffffffffffffffff831161021b576020808501948460051b01011161021b57565b3461021b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b5767ffffffffffffffff60043581811161021b576104d4903690600401610453565b60249291923582811161021b576104ef903690600401610453565b9260443590811161021b57610508903690600401610453565b939091610513611484565b848414806105be575b61052590611298565b8161057257505060005b82811061053857005b8061056c61055161054c600194878a61132c565b611341565b61056661055f84898861139f565b3691610848565b9061153a565b0161052f565b91909460009493945b85811061058457005b806105b861059861054c6001948a8761132c565b6105a3838b8961132c565b356105b261055f858b8a61139f565b91611562565b0161057b565b5081158061051c575081851461051c565b6000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261068f5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001681813b1561068f57602491604051928380927fb760faf900000000000000000000000000000000000000000000000000000000825230600483015234905af1801561068a5761067e575080f35b61068790610798565b80f35b6113ba565b80fd5b3461021b57600060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261068f576004356106cf81610220565b6106d7611579565b8173ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001692833b15610765576044908360405195869485937f205c287800000000000000000000000000000000000000000000000000000000855216600484015260243560248401525af1801561068a5761067e575080f35b8280fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff81116107ac57604052565b610769565b6040810190811067ffffffffffffffff8211176107ac57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176107ac57604052565b67ffffffffffffffff81116107ac57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926108548261080e565b9161086260405193846107cd565b82948184528183011161021b578281602093846000960137010152565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b5760048035906108b782610220565b60243567ffffffffffffffff811161021b573660238201121561021b576108e79036906024818501359101610848565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016803014908115610a89575b50610a6057906020839261093c611579565b604051938480927f52d1902d00000000000000000000000000000000000000000000000000000000825288165afa60009281610a2f575b506109c75750506040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921690820190815281906020010390fd5b83837f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc84036109fa576100198383611695565b6040517faa1d49a400000000000000000000000000000000000000000000000000000000815290810184815281906020010390fd5b610a5291935060203d602011610a59575b610a4a81836107cd565b8101906113c6565b9138610973565b503d610a40565b826040517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614153861092a565b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b5773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610b4d5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60046040517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576040805190610c06826107b1565b600582526020907f352e302e300000000000000000000000000000000000000000000000000000006020840152604051916020835283519182602085015260005b838110610c8757846040817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f88600085828601015201168101030190f35b8581018301518582018301528201610c47565b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461021b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57600435610d4481610220565b6044359067ffffffffffffffff821161021b57610d73610d6b61001993369060040161023e565b61055f611484565b9060243590611562565b3461021b5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57610db7600435610220565b610dc2602435610220565b67ffffffffffffffff60443581811161021b57610de3903690600401610453565b505060643581811161021b57610dfd903690600401610453565b505060843590811161021b57610e1790369060040161023e565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa801561068a57602091600091610ef8575b50604051908152f35b610f0f9150823d8411610a5957610a4a81836107cd565b38610eef565b3461021b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57600435610f5081610220565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549067ffffffffffffffff60ff8360401c161592168015908161111d575b6001149081611113575b15908161110a575b506110e0576110039082610ffa7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060017fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416179055565b61108457611609565b61100957005b6110557ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff8154169055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b6110db7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff825416179055565b611609565b60046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b90501538610fa1565b303b159150610f99565b839150610f8f565b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482015260208160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa801561068a576103b8916000916111e857506040519081529081906020820190565b611201915060203d602011610a5957610a4a81836107cd565b386103a7565b3461021b5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57611241600435610220565b61124c602435610220565b60843567ffffffffffffffff811161021b5761126c90369060040161023e565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b1561129f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206172726179206c656e67746873000000000000000000000000006044820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919081101561133c5760051b0190565b6112fd565b3561134b81610220565b90565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561021b570180359067ffffffffffffffff821161021b5760200191813603831361021b57565b9082101561133c576113b69160051b81019061134e565b9091565b6040513d6000823e3d90fd5b9081602091031261021b575190565b907f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c60002061144461143b73ffffffffffffffffffffffffffffffffffffffff9261143561055f85600054169661010081019061134e565b906117af565b90929192611824565b160361144f57600090565b600190565b3d1561147f573d906114658261080e565b9161147360405193846107cd565b82523d6000602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016331490811561152c575b50156114ce57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e746044820152fd5b9050600054163314386114c6565b600091829182602083519301915af1611551611454565b901561155a5750565b602081519101fd5b916000928392602083519301915af1611551611454565b73ffffffffffffffffffffffffffffffffffffffff6000541633148015611600575b156115a257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152fd5b5030331461159b565b73ffffffffffffffffffffffffffffffffffffffff80911690817fffffffffffffffffffffffff000000000000000000000000000000000000000060005416176000557f0000000000000000000000000000000000000000000000000000000000000000167f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de600080a3565b90813b156117685773ffffffffffffffffffffffffffffffffffffffff82167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc817fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a280511561173557611732916118fb565b50565b50503461173e57565b60046040517fb398979f000000000000000000000000000000000000000000000000000000008152fd5b60248273ffffffffffffffffffffffffffffffffffffffff604051917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352166004820152fd5b81519190604183036117e0576117d992506020820151906060604084015193015160001a90611919565b9192909190565b505060009160029190565b600411156117f557565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b61182d816117eb565b80611836575050565b61183f816117eb565b600181036118715760046040517ff645eedf000000000000000000000000000000000000000000000000000000008152fd5b61187a816117eb565b600281036118b4576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101839052602490fd5b806118c06003926117eb565b146118c85750565b6040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810191909152602490fd5b60008061134b93602081519101845af4611913611454565b916119aa565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161199e57926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa1561068a57805173ffffffffffffffffffffffffffffffffffffffff81161561199557918190565b50809160019190565b50505060009160039190565b906119e957508051156119bf57805190602001fd5b60046040517f1425ea42000000000000000000000000000000000000000000000000000000008152fd5b81511580611a41575b6119fa575090565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b156119f256fea26469706673582212200c94f16b641cdcc32c825e4e90e4b3441beb2b0699e01a402c30fe8e3a6d712564736f6c63430008170033"; + +type SimpleAccountConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SimpleAccountConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SimpleAccount__factory extends ContractFactory { + constructor(...args: SimpleAccountConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + anEntryPoint: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + anEntryPoint, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + anEntryPoint: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(anEntryPoint, overrides || {}); + } + override attach(address: string): SimpleAccount { + return super.attach(address) as SimpleAccount; + } + override connect(signer: Signer): SimpleAccount__factory { + return super.connect(signer) as SimpleAccount__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SimpleAccountInterface { + return new utils.Interface(_abi) as SimpleAccountInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): SimpleAccount { + return new Contract(address, _abi, signerOrProvider) as SimpleAccount; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/samples/TokenPaymaster__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/TokenPaymaster__factory.ts new file mode 100644 index 00000000..e9072333 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/TokenPaymaster__factory.ts @@ -0,0 +1,939 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + TokenPaymaster, + TokenPaymasterInterface, + OracleHelper, + UniswapHelper, +} from "../../samples/TokenPaymaster"; + +const _abi = [ + { + inputs: [ + { + internalType: "contract IERC20Metadata", + name: "_token", + type: "address", + }, + { + internalType: "contract IEntryPoint", + name: "_entryPoint", + type: "address", + }, + { + internalType: "contract IERC20", + name: "_wrappedNative", + type: "address", + }, + { + internalType: "contract ISwapRouter", + name: "_uniswap", + type: "address", + }, + { + components: [ + { + internalType: "uint256", + name: "priceMarkup", + type: "uint256", + }, + { + internalType: "uint128", + name: "minEntryPointBalance", + type: "uint128", + }, + { + internalType: "uint48", + name: "refundPostopCost", + type: "uint48", + }, + { + internalType: "uint48", + name: "priceMaxAge", + type: "uint48", + }, + ], + internalType: "struct TokenPaymaster.TokenPaymasterConfig", + name: "_tokenPaymasterConfig", + type: "tuple", + }, + { + components: [ + { + internalType: "uint48", + name: "cacheTimeToLive", + type: "uint48", + }, + { + internalType: "uint48", + name: "maxOracleRoundAge", + type: "uint48", + }, + { + internalType: "contract IOracle", + name: "tokenOracle", + type: "address", + }, + { + internalType: "contract IOracle", + name: "nativeOracle", + type: "address", + }, + { + internalType: "bool", + name: "tokenToNativeOracle", + type: "bool", + }, + { + internalType: "bool", + name: "tokenOracleReverse", + type: "bool", + }, + { + internalType: "bool", + name: "nativeOracleReverse", + type: "bool", + }, + { + internalType: "uint256", + name: "priceUpdateThreshold", + type: "uint256", + }, + ], + internalType: "struct OracleHelper.OracleHelperConfig", + name: "_oracleHelperConfig", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "minSwapAmount", + type: "uint256", + }, + { + internalType: "uint24", + name: "uniswapPoolFee", + type: "uint24", + }, + { + internalType: "uint8", + name: "slippage", + type: "uint8", + }, + ], + internalType: "struct UniswapHelper.UniswapHelperConfig", + name: "_uniswapHelperConfig", + type: "tuple", + }, + { + internalType: "address", + name: "_owner", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "address", + name: "target", + type: "address", + }, + ], + name: "AddressEmptyCode", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "AddressInsufficientBalance", + type: "error", + }, + { + inputs: [], + name: "FailedInnerCall", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "OwnableInvalidOwner", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "OwnableUnauthorizedAccount", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "token", + type: "address", + }, + ], + name: "SafeERC20FailedOperation", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + components: [ + { + internalType: "uint256", + name: "priceMarkup", + type: "uint256", + }, + { + internalType: "uint128", + name: "minEntryPointBalance", + type: "uint128", + }, + { + internalType: "uint48", + name: "refundPostopCost", + type: "uint48", + }, + { + internalType: "uint48", + name: "priceMaxAge", + type: "uint48", + }, + ], + indexed: false, + internalType: "struct TokenPaymaster.TokenPaymasterConfig", + name: "tokenPaymasterConfig", + type: "tuple", + }, + ], + name: "ConfigUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Received", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "currentPrice", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "previousPrice", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "cachedPriceTimestamp", + type: "uint256", + }, + ], + name: "TokenPriceUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "tokenIn", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "tokenOut", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amountIn", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amountOutMin", + type: "uint256", + }, + ], + name: "UniswapReverted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "user", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "actualTokenCharge", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "actualGasCost", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "actualTokenPriceWithMarkup", + type: "uint256", + }, + ], + name: "UserOperationSponsored", + type: "event", + }, + { + inputs: [ + { + internalType: "uint32", + name: "unstakeDelaySec", + type: "uint32", + }, + ], + name: "addStake", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "cachedPrice", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "cachedPriceTimestamp", + outputs: [ + { + internalType: "uint48", + name: "", + type: "uint48", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "deposit", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "entryPoint", + outputs: [ + { + internalType: "contract IEntryPoint", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getDeposit", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "enum IPaymaster.PostOpMode", + name: "mode", + type: "uint8", + }, + { + internalType: "bytes", + name: "context", + type: "bytes", + }, + { + internalType: "uint256", + name: "actualGasCost", + type: "uint256", + }, + { + internalType: "uint256", + name: "actualUserOpFeePerGas", + type: "uint256", + }, + ], + name: "postOp", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "uint256", + name: "priceMarkup", + type: "uint256", + }, + { + internalType: "uint128", + name: "minEntryPointBalance", + type: "uint128", + }, + { + internalType: "uint48", + name: "refundPostopCost", + type: "uint48", + }, + { + internalType: "uint48", + name: "priceMaxAge", + type: "uint48", + }, + ], + internalType: "struct TokenPaymaster.TokenPaymasterConfig", + name: "_tokenPaymasterConfig", + type: "tuple", + }, + ], + name: "setTokenPaymasterConfig", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "uint256", + name: "minSwapAmount", + type: "uint256", + }, + { + internalType: "uint24", + name: "uniswapPoolFee", + type: "uint24", + }, + { + internalType: "uint8", + name: "slippage", + type: "uint8", + }, + ], + internalType: "struct UniswapHelper.UniswapHelperConfig", + name: "_uniswapHelperConfig", + type: "tuple", + }, + ], + name: "setUniswapConfiguration", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "token", + outputs: [ + { + internalType: "contract IERC20", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "tokenPaymasterConfig", + outputs: [ + { + internalType: "uint256", + name: "priceMarkup", + type: "uint256", + }, + { + internalType: "uint128", + name: "minEntryPointBalance", + type: "uint128", + }, + { + internalType: "uint48", + name: "refundPostopCost", + type: "uint48", + }, + { + internalType: "uint48", + name: "priceMaxAge", + type: "uint48", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "uint256", + name: "price", + type: "uint256", + }, + ], + name: "tokenToWei", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "uniswap", + outputs: [ + { + internalType: "contract ISwapRouter", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "unlockStake", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bool", + name: "force", + type: "bool", + }, + ], + name: "updateCachedPrice", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + { + internalType: "bytes32", + name: "userOpHash", + type: "bytes32", + }, + { + internalType: "uint256", + name: "maxCost", + type: "uint256", + }, + ], + name: "validatePaymasterUserOp", + outputs: [ + { + internalType: "bytes", + name: "context", + type: "bytes", + }, + { + internalType: "uint256", + name: "validationData", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "uint256", + name: "price", + type: "uint256", + }, + ], + name: "weiToToken", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "address payable", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "withdrawEth", + 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: "amount", + type: "uint256", + }, + ], + name: "withdrawTo", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "withdrawToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "wrappedNative", + outputs: [ + { + internalType: "contract IERC20", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + stateMutability: "payable", + type: "receive", + }, +] as const; + +const _bytecode = + "0x6101006040523480156200001257600080fd5b50604051620034fe380380620034fe83398101604081905262000035916200099d565b82888787858b33806200006357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200006e816200018b565b506200007a81620001db565b6001600160a01b0390811660805260405163095ea7b360e01b8152838216600482015260001960248201529085169063095ea7b3906044016020604051808303816000875af1158015620000d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f8919062000ab3565b506001600160a01b0380851660c05283811660e052821660a0526200015081805160015560208101516002805460409093015160ff1663010000000263ffffffff1990931662ffffff90921691909117919091179055565b505060001960035550620001669050816200029e565b5062000172846200059c565b6200017d8162000729565b505050505050505062000c36565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516301ffc9a760e01b815263122a0e9b60e31b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d919062000ab3565b6200029b5760405162461bcd60e51b815260206004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d61746368000060448201526064016200005a565b50565b805160058054602084015160408501516001600160a01b039081166c01000000000000000000000000026001600160601b0365ffffffffffff9384166601000000000000026001600160601b031990951693909616929092179290921793909316929092179055606082015160068054608085015160a086015160c08701511515600160b01b0260ff60b01b19911515600160a81b029190911661ffff60a81b19921515600160a01b026001600160a81b0319909416959096169490941791909117169290921717905560e081015160078190556a52b7d2dcc80cd2e40000001015620003ce5760405162461bcd60e51b815260206004820152601e60248201527f54504d3a20757064617465207468726573686f6c6420746f6f2068696768000060448201526064016200005a565b6005600001600c9054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044b919062000ad8565b6200045890600a62000c0b565b600880546001600160801b0319166001600160801b0392909216919091179055600654600160a01b900460ff1615620004fe576006546001600160a01b031615620004e65760405162461bcd60e51b815260206004820152601f60248201527f54504d3a206e6174697665206f7261636c65206d757374206265207a65726f0060448201526064016200005a565b600880546001600160801b0316600160801b17905550565b6006546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa15801562000549573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200056f919062000ad8565b6200057c90600a62000c0b565b600880546001600160801b03928316600160801b02921691909117905550565b620005a66200076a565b620005be6a52b7d2dcc80cd2e4000000600262000c1c565b81511115620006105760405162461bcd60e51b815260206004820152601a60248201527f54504d3a207072696365206d61726b757020746f6f206869676800000000000060448201526064016200005a565b80516a52b7d2dcc80cd2e400000011156200066e5760405162461bcd60e51b815260206004820152601960248201527f54504d3a207072696365206d61726b757020746f6f206c6f770000000000000060448201526064016200005a565b8051600981905560208083018051600a8054604080880180516060808b01805165ffffffffffff908116600160b01b0265ffffffffffff60b01b19948216600160801b026001600160b01b03199098166001600160801b039a8b161797909717939093169590951790955582519889529551909416958701959095529151831685850152905190911690830152517fcd938817f1c47094d43be3d07e8c67e11766db2e11a2b4376e7ee937b15793a29181900360800190a150565b620007336200076a565b6001600160a01b0381166200075f57604051631e4fbdf760e01b8152600060048201526024016200005a565b6200029b816200018b565b6000546001600160a01b03163314620007995760405163118cdaa760e01b81523360048201526024016200005a565b565b6001600160a01b03811681146200029b57600080fd5b604051608081016001600160401b0381118282101715620007e257634e487b7160e01b600052604160045260246000fd5b60405290565b805165ffffffffffff81168114620007ff57600080fd5b919050565b8051620007ff816200079b565b80518015158114620007ff57600080fd5b60006101008083850312156200083757600080fd5b604051908101906001600160401b03821181831017156200086857634e487b7160e01b600052604160045260246000fd5b816040528092506200087a84620007e8565b81526200088a60208501620007e8565b602082015260408401519150620008a1826200079b565b816040820152620008b56060850162000804565b6060820152620008c86080850162000811565b6080820152620008db60a0850162000811565b60a0820152620008ee60c0850162000811565b60c082015260e084015160e0820152505092915050565b805160ff81168114620007ff57600080fd5b6000606082840312156200092a57600080fd5b604051606081016001600160401b03811182821017156200095b57634e487b7160e01b600052604160045260246000fd5b806040525080915082518152602083015162ffffff811681146200097e57600080fd5b6020820152620009916040840162000905565b60408201525092915050565b600080600080600080600080888a03610280811215620009bc57600080fd5b8951620009c9816200079b565b60208b0151909950620009dc816200079b565b60408b0151909850620009ef816200079b565b60608b015190975062000a02816200079b565b95506080607f198201121562000a1757600080fd5b5062000a22620007b1565b60808a0151815260a08a01516001600160801b038116811462000a4457600080fd5b602082015262000a5760c08b01620007e8565b604082015262000a6a60e08b01620007e8565b6060820152935062000a818a6101008b0162000822565b925062000a938a6102008b0162000917565b915062000aa46102608a0162000804565b90509295985092959890939650565b60006020828403121562000ac657600080fd5b62000ad18262000811565b9392505050565b60006020828403121562000aeb57600080fd5b62000ad18262000905565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000b4d57816000190482111562000b315762000b3162000af6565b8085161562000b3f57918102915b93841c939080029062000b11565b509250929050565b60008262000b665750600162000c05565b8162000b755750600062000c05565b816001811462000b8e576002811462000b995762000bb9565b600191505062000c05565b60ff84111562000bad5762000bad62000af6565b50506001821b62000c05565b5060208310610133831016604e8410600b841016171562000bde575081810a62000c05565b62000bea838362000b0c565b806000190482111562000c015762000c0162000af6565b0290505b92915050565b600062000ad160ff84168362000b55565b808202811582820484141762000c055762000c0562000af6565b60805160a05160c05160e05161281762000ce76000396000818161053f0152611cf50152600081816105c901528181610aaa015281816115d0015281816117b7015281816117f10152611ab001526000818161024201528181611d610152611e110152600081816103bc01528181610627015281816107cd01528181610b4101528181610c0e01528181610c9801528181610d4b0152818161139a01528181611a0a0152611b0e01526128176000f3fe60806040526004361061019a5760003560e01c8063b0d691fe116100e1578063d7a23b3c1161008a578063f14d64ed11610064578063f14d64ed14610561578063f2fde38b14610581578063f60fdcb3146105a1578063fc0c546a146105b757600080fd5b8063d7a23b3c146104d7578063e1d8153c146104f7578063eb6d3a111461052d57600080fd5b8063c399ec88116100bb578063c399ec8814610413578063cb721cfd14610428578063d0e30db0146104cf57600080fd5b8063b0d691fe146103aa578063bb9fe6bf146103de578063c23a5cea146103f357600080fd5b8063715018a6116101435780638da5cb5b1161011d5780638da5cb5b1461033f5780639e281a981461036a578063a0840fa71461038a57600080fd5b8063715018a6146102ea5780637c627b21146102ff5780637c986aac1461031f57600080fd5b80632681f7e4116101745780632681f7e4146102305780633ba9290f1461028e57806352b7512c146102bc57600080fd5b80630396cb60146101db5780631b9a91a4146101f0578063205c28781461021057600080fd5b366101d65760405134815233907f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258749060200160405180910390a2005b600080fd5b6101ee6101e936600461212f565b6105eb565b005b3480156101fc57600080fd5b506101ee61020b366004612177565b61069d565b34801561021c57600080fd5b506101ee61022b366004612177565b610779565b34801561023c57600080fd5b506102647f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561029a57600080fd5b506102ae6102a93660046121b1565b610811565b604051908152602001610285565b3480156102c857600080fd5b506102dc6102d73660046121ce565b610a1f565b604051610285929190612246565b3480156102f657600080fd5b506101ee610a42565b34801561030b57600080fd5b506101ee61031a36600461229f565b610a56565b34801561032b57600080fd5b506102ae61033a366004612337565b610a72565b34801561034b57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610264565b34801561037657600080fd5b506101ee610385366004612177565b610a9d565b34801561039657600080fd5b506101ee6103a5366004612359565b610ad4565b3480156103b657600080fd5b506102647f000000000000000000000000000000000000000000000000000000000000000081565b3480156103ea57600080fd5b506101ee610b37565b3480156103ff57600080fd5b506101ee61040e3660046123f7565b610bc1565b34801561041f57600080fd5b506102ae610c67565b34801561043457600080fd5b50600954600a5461049091906fffffffffffffffffffffffffffffffff81169065ffffffffffff700100000000000000000000000000000000820481169176010000000000000000000000000000000000000000000090041684565b604080519485526fffffffffffffffffffffffffffffffff909316602085015265ffffffffffff91821692840192909252166060820152608001610285565b6101ee610d1d565b3480156104e357600080fd5b506102ae6104f2366004612337565b610da5565b34801561050357600080fd5b506004546105169065ffffffffffff1681565b60405165ffffffffffff9091168152602001610285565b34801561053957600080fd5b506102647f000000000000000000000000000000000000000000000000000000000000000081565b34801561056d57600080fd5b506101ee61057c36600461242f565b610dbd565b34801561058d57600080fd5b506101ee61059c3660046123f7565b610fcd565b3480156105ad57600080fd5b506102ae60035481565b3480156105c357600080fd5b506102647f000000000000000000000000000000000000000000000000000000000000000081565b6105f361102e565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b15801561068157600080fd5b505af1158015610695573d6000803e3d6000fd5b505050505050565b6106a561102e565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146106ff576040519150601f19603f3d011682016040523d82523d6000602084013e610704565b606091505b5050905080610774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f7769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b505050565b61078161102e565b6040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b15801561068157600080fd5b60055460045460009165ffffffffffff908116918391610832911642612512565b9050831580156108425750818111155b1561085257505060035492915050565b6007546005546006546003546c0100000000000000000000000090920473ffffffffffffffffffffffffffffffffffffffff90811692911690600061089684611081565b60065490915060019074010000000000000000000000000000000000000000900460ff166108ca576108c784611081565b90505b600654600090610916908490849060ff7501000000000000000000000000000000000000000000820481169176010000000000000000000000000000000000000000000090041661127f565b9050600084610930836a52b7d2dcc80cd2e4000000612525565b61093a919061256b565b905060008c8061095d575061095a896a52b7d2dcc80cd2e40000006125a6565b82115b8061097b5750610978896a52b7d2dcc80cd2e4000000612512565b82105b9050806109935750939b9a5050505050505050505050565b6003839055600480547fffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000164265ffffffffffff169081179091556040805185815260208101899052908101919091527ed4fe314618b73a96886b87817a53a5ed51433b0234c85a5e9dafe2cb7b88429060600160405180910390a150909b9a5050505050505050505050565b60606000610a2b611382565b610a36858585611421565b91509150935093915050565b610a4a61102e565b610a5460006116bd565b565b610a5e611382565b610a6b8585858585611732565b5050505050565b600081610a8a6a52b7d2dcc80cd2e400000085612525565b610a94919061256b565b90505b92915050565b610aa561102e565b610ad07f0000000000000000000000000000000000000000000000000000000000000000838361188a565b5050565b610adc61102e565b610b3481805160015560208101516002805460409093015160ff166301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090931662ffffff90921691909117919091179055565b50565b610b3f61102e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ba757600080fd5b505af1158015610bbb573d6000803e3d6000fd5b50505050565b610bc961102e565b6040517fc23a5cea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea906024015b600060405180830381600087803b158015610c5357600080fd5b505af1158015610a6b573d6000803e3d6000fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1891906125b9565b905090565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99034906024016000604051808303818588803b158015610c5357600080fd5b60006a52b7d2dcc80cd2e4000000610a8a8385612525565b610dc561102e565b610ddb6a52b7d2dcc80cd2e40000006002612525565b81511115610e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f54504d3a207072696365206d61726b757020746f6f2068696768000000000000604482015260640161076b565b80516a52b7d2dcc80cd2e40000001115610ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54504d3a207072696365206d61726b757020746f6f206c6f7700000000000000604482015260640161076b565b8051600981905560208083018051600a8054604080880180516060808b01805165ffffffffffff908116760100000000000000000000000000000000000000000000027fffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff948216700100000000000000000000000000000000027fffffffffffffffffffff000000000000000000000000000000000000000000009098166fffffffffffffffffffffffffffffffff9a8b161797909717939093169590951790955582519889529551909416958701959095529151831685850152905190911690830152517fcd938817f1c47094d43be3d07e8c67e11766db2e11a2b4376e7ee937b15793a29181900360800190a150565b610fd561102e565b73ffffffffffffffffffffffffffffffffffffffff8116611025576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161076b565b610b34816116bd565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a54576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161076b565b60008060008060008573ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156110d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f891906125ec565b9450945050935093506000831361116b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54504d3a20436861696e6c696e6b207072696365203c3d203000000000000000604482015260640161076b565b60055461118a906601000000000000900465ffffffffffff1642612512565b8210156111f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f54504d3a20496e636f6d706c65746520726f756e640000000000000000000000604482015260640161076b565b8369ffffffffffffffffffff168169ffffffffffffffffffff161015611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f54504d3a205374616c6520707269636500000000000000000000000000000000604482015260640161076b565b5090949350505050565b600082156112c45760085485906112b3906fffffffffffffffffffffffffffffffff166a52b7d2dcc80cd2e4000000612525565b6112bd919061256b565b94506112fb565b6008546fffffffffffffffffffffffffffffffff166112ee866a52b7d2dcc80cd2e4000000612525565b6112f8919061256b565b94505b81156113455760085470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166113348686612525565b61133e919061256b565b905061137a565b60085484906113349070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1687612525565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e740000000000000000000000604482015260640161076b565b60095460609060009081603461143a60e089018961263c565b9050039050806000148061144e5750806020145b6114b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f54504d3a20696e76616c69642064617461206c656e6774680000000000000000604482015260640161076b565b60006114bf8861190b565b600a54909150700100000000000000000000000000000000900465ffffffffffff166114ea89611929565b8110611552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f54504d3a20706f73744f704761734c696d697420746f6f206c6f770000000000604482015260640161076b565b6000828202880190506000856a52b7d2dcc80cd2e4000000600354028161157b5761157b61253c565b049050846020036115bd57600061159560e08d018d61263c565b6115a4916054916034916126a8565b6115ad916126d2565b9050818110156115bb578091505b505b60006115c98383610a72565b90506116037f00000000000000000000000000000000000000000000000000000000000000006115fc60208f018f6123f7565b3084611959565b8061161160208e018e6123f7565b60405160200161164192919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152919052600a54600454919a506116ac91600091760100000000000000000000000000000000000000000000900465ffffffffffff9081169116018161199f565b975050505050505050935093915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009546000806117448688018861270e565b9150915060006117546000610811565b90506000846a52b7d2dcc80cd2e40000008302816117745761177461253c565b600a549190049150700100000000000000000000000000000000900465ffffffffffff168602870160006117a88284610a72565b9050808611156117e4576117df7f00000000000000000000000000000000000000000000000000000000000000008683890361188a565b61181a565b8086101561181a5761181a7f00000000000000000000000000000000000000000000000000000000000000008630898503611959565b60408051828152602081018b905290810184905273ffffffffffffffffffffffffffffffffffffffff8616907f46caa0511cf037f06f57a0bf273a2ff04229f5b12fb04675234a6cbe2e7f1a899060600160405180910390a261187c846119d9565b505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261077491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611b86565b60006fffffffffffffffffffffffffffffffff60c083013516610a97565b600061193860e083018361263c565b611947916034916024916126a8565b6119509161273e565b60801c92915050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610bbb9186918216906323b872dd906084016118c4565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b856119c75760006119ca565b60015b60ff16171790505b9392505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8a91906125b9565b600a549091506fffffffffffffffffffffffffffffffff16811015610ad0576000611ad57f000000000000000000000000000000000000000000000000000000000000000084611c1c565b9050611ae081611d2c565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99047906024016000604051808303818588803b158015611b6857600080fd5b505af1158015611b7c573d6000803e3d6000fd5b5050505050505050565b6000611ba873ffffffffffffffffffffffffffffffffffffffff841683611da5565b90508051600014158015611bcd575080806020019051810190611bcb9190612786565b155b15610774576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260240161076b565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015611c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611caf91906125b9565b90506000611cd2611cc08386610da5565b6002546301000000900460ff16611db3565b600154909150811015611cea57600092505050610a97565b600254611d239086907f0000000000000000000000000000000000000000000000000000000000000000908590859062ffffff16611dd3565b95945050505050565b6040517f49404b7c000000000000000000000000000000000000000000000000000000008152600481018290523060248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906349404b7c90604401610c39565b6060610a9483836000611f9b565b60006103e8611dc560ff8416826127a3565b610a8a9061ffff1685612525565b604080516101008101825273ffffffffffffffffffffffffffffffffffffffff87811682528681166020830190815262ffffff8581168486019081527f0000000000000000000000000000000000000000000000000000000000000000841660608601818152426080880190815260a088018c815260c089018c8152600060e08b018181529b517f414bf3890000000000000000000000000000000000000000000000000000000081528b518b16600482015298518a1660248a0152955190961660448801529151871660648701525160848601525160a4850152915160c4840152945190921660e482015263414bf38990610104016020604051808303816000875af1925050508015611f22575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611f1f918101906125b9565b60015b611f8e576040805173ffffffffffffffffffffffffffffffffffffffff808a16825288166020820152908101869052606081018590527ff7edd4c6ec425decf715a8b8eaa3b65d3d86e31ad0ff750aa60fa834190f515f9060800160405180910390a160009150611f91565b91505b5095945050505050565b606081471015611fd9576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161076b565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161200291906127c5565b60006040518083038185875af1925050503d806000811461203f576040519150601f19603f3d011682016040523d82523d6000602084013e612044565b606091505b509150915061205486838361205e565b9695505050505050565b6060826120735761206e826120ed565b6119d2565b8151158015612097575073ffffffffffffffffffffffffffffffffffffffff84163b155b156120e6576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161076b565b50806119d2565b8051156120fd5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561214157600080fd5b813563ffffffff811681146119d257600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610b3457600080fd5b6000806040838503121561218a57600080fd5b823561219581612155565b946020939093013593505050565b8015158114610b3457600080fd5b6000602082840312156121c357600080fd5b81356119d2816121a3565b6000806000606084860312156121e357600080fd5b833567ffffffffffffffff8111156121fa57600080fd5b8401610120818703121561220d57600080fd5b95602085013595506040909401359392505050565b60005b8381101561223d578181015183820152602001612225565b50506000910152565b6040815260008351806040840152612265816060850160208801612222565b602083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b6000806000806000608086880312156122b757600080fd5b8535600381106122c657600080fd5b9450602086013567ffffffffffffffff808211156122e357600080fd5b818801915088601f8301126122f757600080fd5b81358181111561230657600080fd5b89602082850101111561231857600080fd5b9699602092909201985095966040810135965060600135945092505050565b6000806040838503121561234a57600080fd5b50508035926020909101359150565b60006060828403121561236b57600080fd5b6040516060810181811067ffffffffffffffff821117156123b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282358152602083013562ffffff811681146123d257600080fd5b6020820152604083013560ff811681146123eb57600080fd5b60408201529392505050565b60006020828403121561240957600080fd5b81356119d281612155565b803565ffffffffffff8116811461242a57600080fd5b919050565b60006080828403121561244157600080fd5b6040516080810181811067ffffffffffffffff8211171561248b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235815260208301356fffffffffffffffffffffffffffffffff811681146124b557600080fd5b60208201526124c660408401612414565b60408201526124d760608401612414565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610a9757610a976124e3565b8082028115828204841417610a9757610a976124e3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826125a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820180821115610a9757610a976124e3565b6000602082840312156125cb57600080fd5b5051919050565b805169ffffffffffffffffffff8116811461242a57600080fd5b600080600080600060a0868803121561260457600080fd5b61260d866125d2565b9450602086015193506040860151925060608601519150612630608087016125d2565b90509295509295909350565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261267157600080fd5b83018035915067ffffffffffffffff82111561268c57600080fd5b6020019150368190038213156126a157600080fd5b9250929050565b600080858511156126b857600080fd5b838611156126c557600080fd5b5050820193919092039150565b80356020831015610a97577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b6000806040838503121561272157600080fd5b82359150602083013561273381612155565b809150509250929050565b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000813581811691601085101561277e5780818660100360031b1b83161692505b505092915050565b60006020828403121561279857600080fd5b81516119d2816121a3565b61ffff8281168282160390808211156127be576127be6124e3565b5092915050565b600082516127d7818460208701612222565b919091019291505056fea2646970667358221220351b923721ca4c60e0d0fffdd716ec27ddf462538c77ecc2219ed2f0122bd17164736f6c63430008170033"; + +type TokenPaymasterConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: TokenPaymasterConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class TokenPaymaster__factory extends ContractFactory { + constructor(...args: TokenPaymasterConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + _token: PromiseOrValue, + _entryPoint: PromiseOrValue, + _wrappedNative: PromiseOrValue, + _uniswap: PromiseOrValue, + _tokenPaymasterConfig: TokenPaymaster.TokenPaymasterConfigStruct, + _oracleHelperConfig: OracleHelper.OracleHelperConfigStruct, + _uniswapHelperConfig: UniswapHelper.UniswapHelperConfigStruct, + _owner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _token, + _entryPoint, + _wrappedNative, + _uniswap, + _tokenPaymasterConfig, + _oracleHelperConfig, + _uniswapHelperConfig, + _owner, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _token: PromiseOrValue, + _entryPoint: PromiseOrValue, + _wrappedNative: PromiseOrValue, + _uniswap: PromiseOrValue, + _tokenPaymasterConfig: TokenPaymaster.TokenPaymasterConfigStruct, + _oracleHelperConfig: OracleHelper.OracleHelperConfigStruct, + _uniswapHelperConfig: UniswapHelper.UniswapHelperConfigStruct, + _owner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + _token, + _entryPoint, + _wrappedNative, + _uniswap, + _tokenPaymasterConfig, + _oracleHelperConfig, + _uniswapHelperConfig, + _owner, + overrides || {} + ); + } + override attach(address: string): TokenPaymaster { + return super.attach(address) as TokenPaymaster; + } + override connect(signer: Signer): TokenPaymaster__factory { + return super.connect(signer) as TokenPaymaster__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): TokenPaymasterInterface { + return new utils.Interface(_abi) as TokenPaymasterInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): TokenPaymaster { + return new Contract(address, _abi, signerOrProvider) as TokenPaymaster; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/samples/VerifyingPaymaster__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/VerifyingPaymaster__factory.ts new file mode 100644 index 00000000..9aefafb7 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/VerifyingPaymaster__factory.ts @@ -0,0 +1,503 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + VerifyingPaymaster, + VerifyingPaymasterInterface, +} from "../../samples/VerifyingPaymaster"; + +const _abi = [ + { + inputs: [ + { + internalType: "contract IEntryPoint", + name: "_entryPoint", + type: "address", + }, + { + internalType: "address", + name: "_verifyingSigner", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [], + name: "ECDSAInvalidSignature", + type: "error", + }, + { + inputs: [ + { + internalType: "uint256", + name: "length", + type: "uint256", + }, + ], + name: "ECDSAInvalidSignatureLength", + type: "error", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "ECDSAInvalidSignatureS", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "OwnableInvalidOwner", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "OwnableUnauthorizedAccount", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [ + { + internalType: "uint32", + name: "unstakeDelaySec", + type: "uint32", + }, + ], + name: "addStake", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "deposit", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "entryPoint", + outputs: [ + { + internalType: "contract IEntryPoint", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getDeposit", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + { + internalType: "uint48", + name: "validUntil", + type: "uint48", + }, + { + internalType: "uint48", + name: "validAfter", + type: "uint48", + }, + ], + name: "getHash", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + ], + name: "parsePaymasterAndData", + outputs: [ + { + internalType: "uint48", + name: "validUntil", + type: "uint48", + }, + { + internalType: "uint48", + name: "validAfter", + type: "uint48", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "enum IPaymaster.PostOpMode", + name: "mode", + type: "uint8", + }, + { + internalType: "bytes", + name: "context", + type: "bytes", + }, + { + internalType: "uint256", + name: "actualGasCost", + type: "uint256", + }, + { + internalType: "uint256", + name: "actualUserOpFeePerGas", + type: "uint256", + }, + ], + name: "postOp", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "unlockStake", + 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: "bytes32", + name: "accountGasLimits", + type: "bytes32", + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256", + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + { + internalType: "bytes32", + name: "userOpHash", + type: "bytes32", + }, + { + internalType: "uint256", + name: "maxCost", + type: "uint256", + }, + ], + name: "validatePaymasterUserOp", + outputs: [ + { + internalType: "bytes", + name: "context", + type: "bytes", + }, + { + internalType: "uint256", + name: "validationData", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "verifyingSigner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + 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: "amount", + type: "uint256", + }, + ], + name: "withdrawTo", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x60c06040523480156200001157600080fd5b50604051620016e2380380620016e28339810160408190526200003491620001b6565b8133806200005d57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b62000068816200008d565b506200007481620000dd565b6001600160a01b039081166080521660a0525062000220565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516301ffc9a760e01b815263122a0e9b60e31b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801562000129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014f9190620001f5565b6200019d5760405162461bcd60e51b815260206004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d617463680000604482015260640162000054565b50565b6001600160a01b03811681146200019d57600080fd5b60008060408385031215620001ca57600080fd5b8251620001d781620001a0565b6020840151909250620001ea81620001a0565b809150509250929050565b6000602082840312156200020857600080fd5b815180151581146200021957600080fd5b9392505050565b60805160a0516114646200027e600039600081816101340152610b3901526000818161027e0152818161034e015281816104180152818161061f015281816106ec0152818161077501528181610828015261095601526114646000f3fe6080604052600436106100e85760003560e01c80638da5cb5b1161008a578063c23a5cea11610059578063c23a5cea146102b5578063c399ec88146102d5578063d0e30db0146102ea578063f2fde38b146102f257600080fd5b80638da5cb5b1461021157806394d4ad601461023c578063b0d691fe1461026c578063bb9fe6bf146102a057600080fd5b806352b7512c116100c657806352b7512c146101805780635829c5f5146101ae578063715018a6146101dc5780637c627b21146101f157600080fd5b80630396cb60146100ed578063205c28781461010257806323d9ac9b14610122575b600080fd5b6101006100fb366004610f53565b610312565b005b34801561010e57600080fd5b5061010061011d366004610fa2565b6103c4565b34801561012e57600080fd5b506101567f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018c57600080fd5b506101a061019b366004610fe7565b61045c565b604051610177929190611035565b3480156101ba57600080fd5b506101ce6101c93660046110c3565b610480565b604051908152602001610177565b3480156101e857600080fd5b5061010061059d565b3480156101fd57600080fd5b5061010061020c36600461116a565b6105b1565b34801561021d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610156565b34801561024857600080fd5b5061025c6102573660046111d5565b6105cd565b6040516101779493929190611217565b34801561027857600080fd5b506101567f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ac57600080fd5b50610100610615565b3480156102c157600080fd5b506101006102d0366004611281565b61069f565b3480156102e157600080fd5b506101ce610744565b6101006107fa565b3480156102fe57600080fd5b5061010061030d366004611281565b610882565b61031a6108eb565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b1580156103a857600080fd5b505af11580156103bc573d6000803e3d6000fd5b505050505050565b6103cc6108eb565b6040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b1580156103a857600080fd5b6060600061046861093e565b6104738585856109dd565b915091505b935093915050565b60008335806020860135610497604088018861129e565b6040516104a5929190611303565b6040519081900390206104bb606089018961129e565b6040516104c9929190611303565b60405190819003902060808901356104e460e08b018b61129e565b6104f391603491601491611313565b6104fc9161133d565b6040805173ffffffffffffffffffffffffffffffffffffffff90971660208801528601949094526060850192909252608084015260a08084019190915260c08084019290925287013560e0830152860135610100820152466101208201523061014082015265ffffffffffff80861661016083015284166101808201526101a001604051602081830303815290604052805190602001209150509392505050565b6105a56108eb565b6105af6000610bc9565b565b6105b961093e565b6105c68585858585610c3e565b5050505050565b60008036816105df8560348189611313565b8101906105ec9190611379565b909450925085856105ff603460406113ac565b61060a928290611313565b949793965094505050565b61061d6108eb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b50505050565b6106a76108eb565b6040517fc23a5cea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b15801561073057600080fd5b505af11580156105c6573d6000803e3d6000fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f591906113e6565b905090565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99034906024016000604051808303818588803b15801561073057600080fd5b61088a6108eb565b73ffffffffffffffffffffffffffffffffffffffff81166108df576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108e881610bc9565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105af576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016108d6565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e74000000000000000000000060448201526064016108d6565b60606000808036816109f561025760e08b018b61129e565b929650909450925090506040811480610a0e5750604181145b610a9c57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f566572696679696e675061796d61737465723a20696e76616c6964207369676e60448201527f6174757265206c656e67746820696e207061796d6173746572416e644461746160648201526084016108d6565b6000610adf610aac8b8787610480565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b9050610b218184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ca092505050565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610b9e57610b7f60018686610ccc565b6040518060200160405280600081525090965096505050505050610478565b610baa60008686610ccc565b6040805160208101909152600081529b909a5098505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6d757374206f766572726964650000000000000000000000000000000000000060448201526064016108d6565b600080600080610cb08686610d04565b925092509250610cc08282610d51565b50909150505b92915050565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b85610cf4576000610cf7565b60015b60ff161717949350505050565b60008060008351604103610d3e5760208401516040850151606086015160001a610d3088828585610e59565b955095509550505050610d4a565b50508151600091506002905b9250925092565b6000826003811115610d6557610d656113ff565b03610d6e575050565b6001826003811115610d8257610d826113ff565b03610db9576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115610dcd57610dcd6113ff565b03610e07576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016108d6565b6003826003811115610e1b57610e1b6113ff565b03610e55576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016108d6565b5050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610e945750600091506003905082610f49565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610ee8573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610f3f57506000925060019150829050610f49565b9250600091508190505b9450945094915050565b600060208284031215610f6557600080fd5b813563ffffffff81168114610f7957600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108e857600080fd5b60008060408385031215610fb557600080fd5b8235610fc081610f80565b946020939093013593505050565b60006101208284031215610fe157600080fd5b50919050565b600080600060608486031215610ffc57600080fd5b833567ffffffffffffffff81111561101357600080fd5b61101f86828701610fce565b9660208601359650604090950135949350505050565b604081526000835180604084015260005b818110156110635760208187018101516060868401015201611046565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150508260208301529392505050565b803565ffffffffffff811681146110be57600080fd5b919050565b6000806000606084860312156110d857600080fd5b833567ffffffffffffffff8111156110ef57600080fd5b6110fb86828701610fce565b93505061110a602085016110a8565b9150611118604085016110a8565b90509250925092565b60008083601f84011261113357600080fd5b50813567ffffffffffffffff81111561114b57600080fd5b60208301915083602082850101111561116357600080fd5b9250929050565b60008060008060006080868803121561118257600080fd5b85356003811061119157600080fd5b9450602086013567ffffffffffffffff8111156111ad57600080fd5b6111b988828901611121565b9699909850959660408101359660609091013595509350505050565b600080602083850312156111e857600080fd5b823567ffffffffffffffff8111156111ff57600080fd5b61120b85828601611121565b90969095509350505050565b600065ffffffffffff8087168352808616602084015250606060408301528260608301528284608084013760006080848401015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905095945050505050565b60006020828403121561129357600080fd5b8135610f7981610f80565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126112d357600080fd5b83018035915067ffffffffffffffff8211156112ee57600080fd5b60200191503681900382131561116357600080fd5b8183823760009101908152919050565b6000808585111561132357600080fd5b8386111561133057600080fd5b5050820193919092039150565b80356020831015610cc6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b6000806040838503121561138c57600080fd5b611395836110a8565b91506113a3602084016110a8565b90509250929050565b80820180821115610cc6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000602082840312156113f857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220d6f6497a88dfd10921048d390e9c2ab77fd19a8306cd00ae0214be10b509e36064736f6c63430008170033"; + +type VerifyingPaymasterConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: VerifyingPaymasterConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class VerifyingPaymaster__factory extends ContractFactory { + constructor(...args: VerifyingPaymasterConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + _entryPoint: PromiseOrValue, + _verifyingSigner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _entryPoint, + _verifyingSigner, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _entryPoint: PromiseOrValue, + _verifyingSigner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + _entryPoint, + _verifyingSigner, + overrides || {} + ); + } + override attach(address: string): VerifyingPaymaster { + return super.attach(address) as VerifyingPaymaster; + } + override connect(signer: Signer): VerifyingPaymaster__factory { + return super.connect(signer) as VerifyingPaymaster__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): VerifyingPaymasterInterface { + return new utils.Interface(_abi) as VerifyingPaymasterInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): VerifyingPaymaster { + return new Contract(address, _abi, signerOrProvider) as VerifyingPaymaster; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/samples/callback/TokenCallbackHandler__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/callback/TokenCallbackHandler__factory.ts new file mode 100644 index 00000000..45c87df7 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/callback/TokenCallbackHandler__factory.ts @@ -0,0 +1,161 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + TokenCallbackHandler, + TokenCallbackHandlerInterface, +} from "../../../samples/callback/TokenCallbackHandler"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + name: "onERC1155BatchReceived", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + name: "onERC1155Received", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + name: "onERC721Received", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class TokenCallbackHandler__factory { + static readonly abi = _abi; + static createInterface(): TokenCallbackHandlerInterface { + return new utils.Interface(_abi) as TokenCallbackHandlerInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): TokenCallbackHandler { + return new Contract( + address, + _abi, + signerOrProvider + ) as TokenCallbackHandler; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/samples/callback/index.ts b/packages/types/src/contracts/EPv7/factories/samples/callback/index.ts new file mode 100644 index 00000000..75032bf1 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/callback/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { TokenCallbackHandler__factory } from "./TokenCallbackHandler__factory"; diff --git a/packages/types/src/contracts/EPv7/factories/samples/index.ts b/packages/types/src/contracts/EPv7/factories/samples/index.ts new file mode 100644 index 00000000..f8e72e31 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/index.ts @@ -0,0 +1,11 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as callback from "./callback"; +export * as utils from "./utils"; +export { IOracle__factory } from "./IOracle__factory"; +export { LegacyTokenPaymaster__factory } from "./LegacyTokenPaymaster__factory"; +export { SimpleAccount__factory } from "./SimpleAccount__factory"; +export { SimpleAccountFactory__factory } from "./SimpleAccountFactory__factory"; +export { TokenPaymaster__factory } from "./TokenPaymaster__factory"; +export { VerifyingPaymaster__factory } from "./VerifyingPaymaster__factory"; diff --git a/packages/types/src/contracts/EPv7/factories/samples/utils/IOracle__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/utils/IOracle__factory.ts new file mode 100644 index 00000000..08dfbca5 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/utils/IOracle__factory.ts @@ -0,0 +1,72 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IOracle, + IOracleInterface, +} from "../../../samples/utils/IOracle"; + +const _abi = [ + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "latestRoundData", + outputs: [ + { + internalType: "uint80", + name: "roundId", + type: "uint80", + }, + { + internalType: "int256", + name: "answer", + type: "int256", + }, + { + internalType: "uint256", + name: "startedAt", + type: "uint256", + }, + { + internalType: "uint256", + name: "updatedAt", + type: "uint256", + }, + { + internalType: "uint80", + name: "answeredInRound", + type: "uint80", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class IOracle__factory { + static readonly abi = _abi; + static createInterface(): IOracleInterface { + return new utils.Interface(_abi) as IOracleInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IOracle { + return new Contract(address, _abi, signerOrProvider) as IOracle; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/samples/utils/OracleHelper__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/utils/OracleHelper__factory.ts new file mode 100644 index 00000000..4a8b98ba --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/utils/OracleHelper__factory.ts @@ -0,0 +1,96 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + OracleHelper, + OracleHelperInterface, +} from "../../../samples/utils/OracleHelper"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "currentPrice", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "previousPrice", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "cachedPriceTimestamp", + type: "uint256", + }, + ], + name: "TokenPriceUpdated", + type: "event", + }, + { + inputs: [], + name: "cachedPrice", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "cachedPriceTimestamp", + outputs: [ + { + internalType: "uint48", + name: "", + type: "uint48", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bool", + name: "force", + type: "bool", + }, + ], + name: "updateCachedPrice", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class OracleHelper__factory { + static readonly abi = _abi; + static createInterface(): OracleHelperInterface { + return new utils.Interface(_abi) as OracleHelperInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): OracleHelper { + return new Contract(address, _abi, signerOrProvider) as OracleHelper; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/samples/utils/UniswapHelper__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/utils/UniswapHelper__factory.ts new file mode 100644 index 00000000..1f2bd718 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/utils/UniswapHelper__factory.ts @@ -0,0 +1,144 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + UniswapHelper, + UniswapHelperInterface, +} from "../../../samples/utils/UniswapHelper"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "tokenIn", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "tokenOut", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amountIn", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amountOutMin", + type: "uint256", + }, + ], + name: "UniswapReverted", + type: "event", + }, + { + inputs: [], + name: "token", + outputs: [ + { + internalType: "contract IERC20", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "uint256", + name: "price", + type: "uint256", + }, + ], + name: "tokenToWei", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "uniswap", + outputs: [ + { + internalType: "contract ISwapRouter", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "uint256", + name: "price", + type: "uint256", + }, + ], + name: "weiToToken", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "wrappedNative", + outputs: [ + { + internalType: "contract IERC20", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class UniswapHelper__factory { + static readonly abi = _abi; + static createInterface(): UniswapHelperInterface { + return new utils.Interface(_abi) as UniswapHelperInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): UniswapHelper { + return new Contract(address, _abi, signerOrProvider) as UniswapHelper; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/samples/utils/index.ts b/packages/types/src/contracts/EPv7/factories/samples/utils/index.ts new file mode 100644 index 00000000..ff767007 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/utils/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IOracle__factory } from "./IOracle__factory"; +export { OracleHelper__factory } from "./OracleHelper__factory"; +export { UniswapHelper__factory } from "./UniswapHelper__factory"; diff --git a/packages/types/src/contracts/EPv7/index.ts b/packages/types/src/contracts/EPv7/index.ts new file mode 100644 index 00000000..e56886b8 --- /dev/null +++ b/packages/types/src/contracts/EPv7/index.ts @@ -0,0 +1,9 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as core from "./core"; +export type { core }; +import type * as interfaces from "./interfaces"; +export type { interfaces }; +import type * as samples from "./samples"; +export type { samples }; diff --git a/packages/types/src/contracts/EPv7/interfaces/IAccount.ts b/packages/types/src/contracts/EPv7/interfaces/IAccount.ts new file mode 100644 index 00000000..0a0a8429 --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/IAccount.ts @@ -0,0 +1,154 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export type PackedUserOperationStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + initCode: PromiseOrValue; + callData: PromiseOrValue; + accountGasLimits: PromiseOrValue; + preVerificationGas: PromiseOrValue; + gasFees: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + string, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + gasFees: string; + paymasterAndData: string; + signature: string; +}; + +export interface IAccountInterface extends utils.Interface { + functions: { + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "validateUserOp"): FunctionFragment; + + encodeFunctionData( + functionFragment: "validateUserOp", + values: [ + PackedUserOperationStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult( + functionFragment: "validateUserOp", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IAccount extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IAccountInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/interfaces/IAccountExecute.ts b/packages/types/src/contracts/EPv7/interfaces/IAccountExecute.ts new file mode 100644 index 00000000..2d136e9d --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/IAccountExecute.ts @@ -0,0 +1,145 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export type PackedUserOperationStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + initCode: PromiseOrValue; + callData: PromiseOrValue; + accountGasLimits: PromiseOrValue; + preVerificationGas: PromiseOrValue; + gasFees: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + string, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + gasFees: string; + paymasterAndData: string; + signature: string; +}; + +export interface IAccountExecuteInterface extends utils.Interface { + functions: { + "executeUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "executeUserOp"): FunctionFragment; + + encodeFunctionData( + functionFragment: "executeUserOp", + values: [PackedUserOperationStruct, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "executeUserOp", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IAccountExecute extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IAccountExecuteInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + executeUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + executeUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + executeUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + executeUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + executeUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/interfaces/IAggregator.ts b/packages/types/src/contracts/EPv7/interfaces/IAggregator.ts new file mode 100644 index 00000000..f4ee5301 --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/IAggregator.ts @@ -0,0 +1,216 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export type PackedUserOperationStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + initCode: PromiseOrValue; + callData: PromiseOrValue; + accountGasLimits: PromiseOrValue; + preVerificationGas: PromiseOrValue; + gasFees: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + string, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + gasFees: string; + paymasterAndData: string; + signature: string; +}; + +export interface IAggregatorInterface extends utils.Interface { + functions: { + "aggregateSignatures((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes)[])": FunctionFragment; + "validateSignatures((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes)[],bytes)": FunctionFragment; + "validateUserOpSignature((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "aggregateSignatures" + | "validateSignatures" + | "validateUserOpSignature" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "aggregateSignatures", + values: [PackedUserOperationStruct[]] + ): string; + encodeFunctionData( + functionFragment: "validateSignatures", + values: [PackedUserOperationStruct[], PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "validateUserOpSignature", + values: [PackedUserOperationStruct] + ): string; + + decodeFunctionResult( + functionFragment: "aggregateSignatures", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "validateSignatures", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "validateUserOpSignature", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IAggregator extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IAggregatorInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + aggregateSignatures( + userOps: PackedUserOperationStruct[], + overrides?: CallOverrides + ): Promise<[string] & { aggregatedSignature: string }>; + + validateSignatures( + userOps: PackedUserOperationStruct[], + signature: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[void]>; + + validateUserOpSignature( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise<[string] & { sigForUserOp: string }>; + }; + + aggregateSignatures( + userOps: PackedUserOperationStruct[], + overrides?: CallOverrides + ): Promise; + + validateSignatures( + userOps: PackedUserOperationStruct[], + signature: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + validateUserOpSignature( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + callStatic: { + aggregateSignatures( + userOps: PackedUserOperationStruct[], + overrides?: CallOverrides + ): Promise; + + validateSignatures( + userOps: PackedUserOperationStruct[], + signature: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + validateUserOpSignature( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + aggregateSignatures( + userOps: PackedUserOperationStruct[], + overrides?: CallOverrides + ): Promise; + + validateSignatures( + userOps: PackedUserOperationStruct[], + signature: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + validateUserOpSignature( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + aggregateSignatures( + userOps: PackedUserOperationStruct[], + overrides?: CallOverrides + ): Promise; + + validateSignatures( + userOps: PackedUserOperationStruct[], + signature: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + validateUserOpSignature( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/interfaces/IEntryPoint.ts b/packages/types/src/contracts/EPv7/interfaces/IEntryPoint.ts new file mode 100644 index 00000000..30dbdb91 --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/IEntryPoint.ts @@ -0,0 +1,950 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export type PackedUserOperationStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + initCode: PromiseOrValue; + callData: PromiseOrValue; + accountGasLimits: PromiseOrValue; + preVerificationGas: PromiseOrValue; + gasFees: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + string, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + gasFees: string; + paymasterAndData: string; + signature: string; +}; + +export declare namespace IStakeManager { + export type DepositInfoStruct = { + deposit: PromiseOrValue; + staked: PromiseOrValue; + stake: PromiseOrValue; + unstakeDelaySec: PromiseOrValue; + withdrawTime: PromiseOrValue; + }; + + export type DepositInfoStructOutput = [ + BigNumber, + boolean, + BigNumber, + number, + number + ] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + }; +} + +export declare namespace IEntryPoint { + export type UserOpsPerAggregatorStruct = { + userOps: PackedUserOperationStruct[]; + aggregator: PromiseOrValue; + signature: PromiseOrValue; + }; + + export type UserOpsPerAggregatorStructOutput = [ + PackedUserOperationStructOutput[], + string, + string + ] & { + userOps: PackedUserOperationStructOutput[]; + aggregator: string; + signature: string; + }; +} + +export interface IEntryPointInterface extends utils.Interface { + functions: { + "addStake(uint32)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "delegateAndRevert(address,bytes)": FunctionFragment; + "depositTo(address)": FunctionFragment; + "getDepositInfo(address)": FunctionFragment; + "getNonce(address,uint192)": FunctionFragment; + "getSenderAddress(bytes)": FunctionFragment; + "getUserOpHash((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))": FunctionFragment; + "handleAggregatedOps(((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes)[],address,bytes)[],address)": FunctionFragment; + "handleOps((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes)[],address)": FunctionFragment; + "incrementNonce(uint192)": FunctionFragment; + "unlockStake()": FunctionFragment; + "withdrawStake(address)": FunctionFragment; + "withdrawTo(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addStake" + | "balanceOf" + | "delegateAndRevert" + | "depositTo" + | "getDepositInfo" + | "getNonce" + | "getSenderAddress" + | "getUserOpHash" + | "handleAggregatedOps" + | "handleOps" + | "incrementNonce" + | "unlockStake" + | "withdrawStake" + | "withdrawTo" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "delegateAndRevert", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "depositTo", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getDepositInfo", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getNonce", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSenderAddress", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getUserOpHash", + values: [PackedUserOperationStruct] + ): string; + encodeFunctionData( + functionFragment: "handleAggregatedOps", + values: [IEntryPoint.UserOpsPerAggregatorStruct[], PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "handleOps", + values: [PackedUserOperationStruct[], PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "incrementNonce", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "unlockStake", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdrawStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawTo", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "addStake", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "delegateAndRevert", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "depositTo", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getDepositInfo", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getNonce", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getSenderAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getUserOpHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "handleAggregatedOps", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "handleOps", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "incrementNonce", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "unlockStake", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawStake", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdrawTo", data: BytesLike): Result; + + events: { + "AccountDeployed(bytes32,address,address,address)": EventFragment; + "BeforeExecution()": EventFragment; + "Deposited(address,uint256)": EventFragment; + "PostOpRevertReason(bytes32,address,uint256,bytes)": EventFragment; + "SignatureAggregatorChanged(address)": EventFragment; + "StakeLocked(address,uint256,uint256)": EventFragment; + "StakeUnlocked(address,uint256)": EventFragment; + "StakeWithdrawn(address,address,uint256)": EventFragment; + "UserOperationEvent(bytes32,address,address,uint256,bool,uint256,uint256)": EventFragment; + "UserOperationPrefundTooLow(bytes32,address,uint256)": EventFragment; + "UserOperationRevertReason(bytes32,address,uint256,bytes)": EventFragment; + "Withdrawn(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "AccountDeployed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "BeforeExecution"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Deposited"): EventFragment; + getEvent(nameOrSignatureOrTopic: "PostOpRevertReason"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SignatureAggregatorChanged"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeLocked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeUnlocked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeWithdrawn"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationEvent"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationPrefundTooLow"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationRevertReason"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Withdrawn"): EventFragment; +} + +export interface AccountDeployedEventObject { + userOpHash: string; + sender: string; + factory: string; + paymaster: string; +} +export type AccountDeployedEvent = TypedEvent< + [string, string, string, string], + AccountDeployedEventObject +>; + +export type AccountDeployedEventFilter = TypedEventFilter; + +export interface BeforeExecutionEventObject {} +export type BeforeExecutionEvent = TypedEvent<[], BeforeExecutionEventObject>; + +export type BeforeExecutionEventFilter = TypedEventFilter; + +export interface DepositedEventObject { + account: string; + totalDeposit: BigNumber; +} +export type DepositedEvent = TypedEvent< + [string, BigNumber], + DepositedEventObject +>; + +export type DepositedEventFilter = TypedEventFilter; + +export interface PostOpRevertReasonEventObject { + userOpHash: string; + sender: string; + nonce: BigNumber; + revertReason: string; +} +export type PostOpRevertReasonEvent = TypedEvent< + [string, string, BigNumber, string], + PostOpRevertReasonEventObject +>; + +export type PostOpRevertReasonEventFilter = + TypedEventFilter; + +export interface SignatureAggregatorChangedEventObject { + aggregator: string; +} +export type SignatureAggregatorChangedEvent = TypedEvent< + [string], + SignatureAggregatorChangedEventObject +>; + +export type SignatureAggregatorChangedEventFilter = + TypedEventFilter; + +export interface StakeLockedEventObject { + account: string; + totalStaked: BigNumber; + unstakeDelaySec: BigNumber; +} +export type StakeLockedEvent = TypedEvent< + [string, BigNumber, BigNumber], + StakeLockedEventObject +>; + +export type StakeLockedEventFilter = TypedEventFilter; + +export interface StakeUnlockedEventObject { + account: string; + withdrawTime: BigNumber; +} +export type StakeUnlockedEvent = TypedEvent< + [string, BigNumber], + StakeUnlockedEventObject +>; + +export type StakeUnlockedEventFilter = TypedEventFilter; + +export interface StakeWithdrawnEventObject { + account: string; + withdrawAddress: string; + amount: BigNumber; +} +export type StakeWithdrawnEvent = TypedEvent< + [string, string, BigNumber], + StakeWithdrawnEventObject +>; + +export type StakeWithdrawnEventFilter = TypedEventFilter; + +export interface UserOperationEventEventObject { + userOpHash: string; + sender: string; + paymaster: string; + nonce: BigNumber; + success: boolean; + actualGasCost: BigNumber; + actualGasUsed: BigNumber; +} +export type UserOperationEventEvent = TypedEvent< + [string, string, string, BigNumber, boolean, BigNumber, BigNumber], + UserOperationEventEventObject +>; + +export type UserOperationEventEventFilter = + TypedEventFilter; + +export interface UserOperationPrefundTooLowEventObject { + userOpHash: string; + sender: string; + nonce: BigNumber; +} +export type UserOperationPrefundTooLowEvent = TypedEvent< + [string, string, BigNumber], + UserOperationPrefundTooLowEventObject +>; + +export type UserOperationPrefundTooLowEventFilter = + TypedEventFilter; + +export interface UserOperationRevertReasonEventObject { + userOpHash: string; + sender: string; + nonce: BigNumber; + revertReason: string; +} +export type UserOperationRevertReasonEvent = TypedEvent< + [string, string, BigNumber, string], + UserOperationRevertReasonEventObject +>; + +export type UserOperationRevertReasonEventFilter = + TypedEventFilter; + +export interface WithdrawnEventObject { + account: string; + withdrawAddress: string; + amount: BigNumber; +} +export type WithdrawnEvent = TypedEvent< + [string, string, BigNumber], + WithdrawnEventObject +>; + +export type WithdrawnEventFilter = TypedEventFilter; + +export interface IEntryPoint extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IEntryPointInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [IStakeManager.DepositInfoStructOutput] & { + info: IStakeManager.DepositInfoStructOutput; + } + >; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { nonce: BigNumber }>; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise<[string]>; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake(overrides?: CallOverrides): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "AccountDeployed(bytes32,address,address,address)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + factory?: null, + paymaster?: null + ): AccountDeployedEventFilter; + AccountDeployed( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + factory?: null, + paymaster?: null + ): AccountDeployedEventFilter; + + "BeforeExecution()"(): BeforeExecutionEventFilter; + BeforeExecution(): BeforeExecutionEventFilter; + + "Deposited(address,uint256)"( + account?: PromiseOrValue | null, + totalDeposit?: null + ): DepositedEventFilter; + Deposited( + account?: PromiseOrValue | null, + totalDeposit?: null + ): DepositedEventFilter; + + "PostOpRevertReason(bytes32,address,uint256,bytes)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): PostOpRevertReasonEventFilter; + PostOpRevertReason( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): PostOpRevertReasonEventFilter; + + "SignatureAggregatorChanged(address)"( + aggregator?: PromiseOrValue | null + ): SignatureAggregatorChangedEventFilter; + SignatureAggregatorChanged( + aggregator?: PromiseOrValue | null + ): SignatureAggregatorChangedEventFilter; + + "StakeLocked(address,uint256,uint256)"( + account?: PromiseOrValue | null, + totalStaked?: null, + unstakeDelaySec?: null + ): StakeLockedEventFilter; + StakeLocked( + account?: PromiseOrValue | null, + totalStaked?: null, + unstakeDelaySec?: null + ): StakeLockedEventFilter; + + "StakeUnlocked(address,uint256)"( + account?: PromiseOrValue | null, + withdrawTime?: null + ): StakeUnlockedEventFilter; + StakeUnlocked( + account?: PromiseOrValue | null, + withdrawTime?: null + ): StakeUnlockedEventFilter; + + "StakeWithdrawn(address,address,uint256)"( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): StakeWithdrawnEventFilter; + StakeWithdrawn( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): StakeWithdrawnEventFilter; + + "UserOperationEvent(bytes32,address,address,uint256,bool,uint256,uint256)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + paymaster?: PromiseOrValue | null, + nonce?: null, + success?: null, + actualGasCost?: null, + actualGasUsed?: null + ): UserOperationEventEventFilter; + UserOperationEvent( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + paymaster?: PromiseOrValue | null, + nonce?: null, + success?: null, + actualGasCost?: null, + actualGasUsed?: null + ): UserOperationEventEventFilter; + + "UserOperationPrefundTooLow(bytes32,address,uint256)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null + ): UserOperationPrefundTooLowEventFilter; + UserOperationPrefundTooLow( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null + ): UserOperationPrefundTooLowEventFilter; + + "UserOperationRevertReason(bytes32,address,uint256,bytes)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): UserOperationRevertReasonEventFilter; + UserOperationRevertReason( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): UserOperationRevertReasonEventFilter; + + "Withdrawn(address,address,uint256)"( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): WithdrawnEventFilter; + Withdrawn( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): WithdrawnEventFilter; + }; + + estimateGas: { + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/interfaces/IEntryPointSimulations.ts b/packages/types/src/contracts/EPv7/interfaces/IEntryPointSimulations.ts new file mode 100644 index 00000000..75dade4c --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/IEntryPointSimulations.ts @@ -0,0 +1,1125 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export type PackedUserOperationStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + initCode: PromiseOrValue; + callData: PromiseOrValue; + accountGasLimits: PromiseOrValue; + preVerificationGas: PromiseOrValue; + gasFees: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + string, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + gasFees: string; + paymasterAndData: string; + signature: string; +}; + +export declare namespace IStakeManager { + export type DepositInfoStruct = { + deposit: PromiseOrValue; + staked: PromiseOrValue; + stake: PromiseOrValue; + unstakeDelaySec: PromiseOrValue; + withdrawTime: PromiseOrValue; + }; + + export type DepositInfoStructOutput = [ + BigNumber, + boolean, + BigNumber, + number, + number + ] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + }; + + export type StakeInfoStruct = { + stake: PromiseOrValue; + unstakeDelaySec: PromiseOrValue; + }; + + export type StakeInfoStructOutput = [BigNumber, BigNumber] & { + stake: BigNumber; + unstakeDelaySec: BigNumber; + }; +} + +export declare namespace IEntryPoint { + export type UserOpsPerAggregatorStruct = { + userOps: PackedUserOperationStruct[]; + aggregator: PromiseOrValue; + signature: PromiseOrValue; + }; + + export type UserOpsPerAggregatorStructOutput = [ + PackedUserOperationStructOutput[], + string, + string + ] & { + userOps: PackedUserOperationStructOutput[]; + aggregator: string; + signature: string; + }; + + export type ReturnInfoStruct = { + preOpGas: PromiseOrValue; + prefund: PromiseOrValue; + accountValidationData: PromiseOrValue; + paymasterValidationData: PromiseOrValue; + paymasterContext: PromiseOrValue; + }; + + export type ReturnInfoStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + string + ] & { + preOpGas: BigNumber; + prefund: BigNumber; + accountValidationData: BigNumber; + paymasterValidationData: BigNumber; + paymasterContext: string; + }; + + export type AggregatorStakeInfoStruct = { + aggregator: PromiseOrValue; + stakeInfo: IStakeManager.StakeInfoStruct; + }; + + export type AggregatorStakeInfoStructOutput = [ + string, + IStakeManager.StakeInfoStructOutput + ] & { aggregator: string; stakeInfo: IStakeManager.StakeInfoStructOutput }; +} + +export declare namespace IEntryPointSimulations { + export type ExecutionResultStruct = { + preOpGas: PromiseOrValue; + paid: PromiseOrValue; + accountValidationData: PromiseOrValue; + paymasterValidationData: PromiseOrValue; + targetSuccess: PromiseOrValue; + targetResult: PromiseOrValue; + }; + + export type ExecutionResultStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + boolean, + string + ] & { + preOpGas: BigNumber; + paid: BigNumber; + accountValidationData: BigNumber; + paymasterValidationData: BigNumber; + targetSuccess: boolean; + targetResult: string; + }; + + export type ValidationResultStruct = { + returnInfo: IEntryPoint.ReturnInfoStruct; + senderInfo: IStakeManager.StakeInfoStruct; + factoryInfo: IStakeManager.StakeInfoStruct; + paymasterInfo: IStakeManager.StakeInfoStruct; + aggregatorInfo: IEntryPoint.AggregatorStakeInfoStruct; + }; + + export type ValidationResultStructOutput = [ + IEntryPoint.ReturnInfoStructOutput, + IStakeManager.StakeInfoStructOutput, + IStakeManager.StakeInfoStructOutput, + IStakeManager.StakeInfoStructOutput, + IEntryPoint.AggregatorStakeInfoStructOutput + ] & { + returnInfo: IEntryPoint.ReturnInfoStructOutput; + senderInfo: IStakeManager.StakeInfoStructOutput; + factoryInfo: IStakeManager.StakeInfoStructOutput; + paymasterInfo: IStakeManager.StakeInfoStructOutput; + aggregatorInfo: IEntryPoint.AggregatorStakeInfoStructOutput; + }; +} + +export interface IEntryPointSimulationsInterface extends utils.Interface { + functions: { + "addStake(uint32)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "delegateAndRevert(address,bytes)": FunctionFragment; + "depositTo(address)": FunctionFragment; + "getDepositInfo(address)": FunctionFragment; + "getNonce(address,uint192)": FunctionFragment; + "getSenderAddress(bytes)": FunctionFragment; + "getUserOpHash((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))": FunctionFragment; + "handleAggregatedOps(((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes)[],address,bytes)[],address)": FunctionFragment; + "handleOps((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes)[],address)": FunctionFragment; + "incrementNonce(uint192)": FunctionFragment; + "simulateHandleOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),address,bytes)": FunctionFragment; + "simulateValidation((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))": FunctionFragment; + "unlockStake()": FunctionFragment; + "withdrawStake(address)": FunctionFragment; + "withdrawTo(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addStake" + | "balanceOf" + | "delegateAndRevert" + | "depositTo" + | "getDepositInfo" + | "getNonce" + | "getSenderAddress" + | "getUserOpHash" + | "handleAggregatedOps" + | "handleOps" + | "incrementNonce" + | "simulateHandleOp" + | "simulateValidation" + | "unlockStake" + | "withdrawStake" + | "withdrawTo" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "delegateAndRevert", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "depositTo", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getDepositInfo", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getNonce", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSenderAddress", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getUserOpHash", + values: [PackedUserOperationStruct] + ): string; + encodeFunctionData( + functionFragment: "handleAggregatedOps", + values: [IEntryPoint.UserOpsPerAggregatorStruct[], PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "handleOps", + values: [PackedUserOperationStruct[], PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "incrementNonce", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "simulateHandleOp", + values: [ + PackedUserOperationStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "simulateValidation", + values: [PackedUserOperationStruct] + ): string; + encodeFunctionData( + functionFragment: "unlockStake", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdrawStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawTo", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "addStake", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "delegateAndRevert", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "depositTo", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getDepositInfo", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getNonce", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getSenderAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getUserOpHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "handleAggregatedOps", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "handleOps", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "incrementNonce", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "simulateHandleOp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "simulateValidation", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "unlockStake", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawStake", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdrawTo", data: BytesLike): Result; + + events: { + "AccountDeployed(bytes32,address,address,address)": EventFragment; + "BeforeExecution()": EventFragment; + "Deposited(address,uint256)": EventFragment; + "PostOpRevertReason(bytes32,address,uint256,bytes)": EventFragment; + "SignatureAggregatorChanged(address)": EventFragment; + "StakeLocked(address,uint256,uint256)": EventFragment; + "StakeUnlocked(address,uint256)": EventFragment; + "StakeWithdrawn(address,address,uint256)": EventFragment; + "UserOperationEvent(bytes32,address,address,uint256,bool,uint256,uint256)": EventFragment; + "UserOperationPrefundTooLow(bytes32,address,uint256)": EventFragment; + "UserOperationRevertReason(bytes32,address,uint256,bytes)": EventFragment; + "Withdrawn(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "AccountDeployed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "BeforeExecution"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Deposited"): EventFragment; + getEvent(nameOrSignatureOrTopic: "PostOpRevertReason"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SignatureAggregatorChanged"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeLocked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeUnlocked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeWithdrawn"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationEvent"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationPrefundTooLow"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationRevertReason"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Withdrawn"): EventFragment; +} + +export interface AccountDeployedEventObject { + userOpHash: string; + sender: string; + factory: string; + paymaster: string; +} +export type AccountDeployedEvent = TypedEvent< + [string, string, string, string], + AccountDeployedEventObject +>; + +export type AccountDeployedEventFilter = TypedEventFilter; + +export interface BeforeExecutionEventObject {} +export type BeforeExecutionEvent = TypedEvent<[], BeforeExecutionEventObject>; + +export type BeforeExecutionEventFilter = TypedEventFilter; + +export interface DepositedEventObject { + account: string; + totalDeposit: BigNumber; +} +export type DepositedEvent = TypedEvent< + [string, BigNumber], + DepositedEventObject +>; + +export type DepositedEventFilter = TypedEventFilter; + +export interface PostOpRevertReasonEventObject { + userOpHash: string; + sender: string; + nonce: BigNumber; + revertReason: string; +} +export type PostOpRevertReasonEvent = TypedEvent< + [string, string, BigNumber, string], + PostOpRevertReasonEventObject +>; + +export type PostOpRevertReasonEventFilter = + TypedEventFilter; + +export interface SignatureAggregatorChangedEventObject { + aggregator: string; +} +export type SignatureAggregatorChangedEvent = TypedEvent< + [string], + SignatureAggregatorChangedEventObject +>; + +export type SignatureAggregatorChangedEventFilter = + TypedEventFilter; + +export interface StakeLockedEventObject { + account: string; + totalStaked: BigNumber; + unstakeDelaySec: BigNumber; +} +export type StakeLockedEvent = TypedEvent< + [string, BigNumber, BigNumber], + StakeLockedEventObject +>; + +export type StakeLockedEventFilter = TypedEventFilter; + +export interface StakeUnlockedEventObject { + account: string; + withdrawTime: BigNumber; +} +export type StakeUnlockedEvent = TypedEvent< + [string, BigNumber], + StakeUnlockedEventObject +>; + +export type StakeUnlockedEventFilter = TypedEventFilter; + +export interface StakeWithdrawnEventObject { + account: string; + withdrawAddress: string; + amount: BigNumber; +} +export type StakeWithdrawnEvent = TypedEvent< + [string, string, BigNumber], + StakeWithdrawnEventObject +>; + +export type StakeWithdrawnEventFilter = TypedEventFilter; + +export interface UserOperationEventEventObject { + userOpHash: string; + sender: string; + paymaster: string; + nonce: BigNumber; + success: boolean; + actualGasCost: BigNumber; + actualGasUsed: BigNumber; +} +export type UserOperationEventEvent = TypedEvent< + [string, string, string, BigNumber, boolean, BigNumber, BigNumber], + UserOperationEventEventObject +>; + +export type UserOperationEventEventFilter = + TypedEventFilter; + +export interface UserOperationPrefundTooLowEventObject { + userOpHash: string; + sender: string; + nonce: BigNumber; +} +export type UserOperationPrefundTooLowEvent = TypedEvent< + [string, string, BigNumber], + UserOperationPrefundTooLowEventObject +>; + +export type UserOperationPrefundTooLowEventFilter = + TypedEventFilter; + +export interface UserOperationRevertReasonEventObject { + userOpHash: string; + sender: string; + nonce: BigNumber; + revertReason: string; +} +export type UserOperationRevertReasonEvent = TypedEvent< + [string, string, BigNumber, string], + UserOperationRevertReasonEventObject +>; + +export type UserOperationRevertReasonEventFilter = + TypedEventFilter; + +export interface WithdrawnEventObject { + account: string; + withdrawAddress: string; + amount: BigNumber; +} +export type WithdrawnEvent = TypedEvent< + [string, string, BigNumber], + WithdrawnEventObject +>; + +export type WithdrawnEventFilter = TypedEventFilter; + +export interface IEntryPointSimulations extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IEntryPointSimulationsInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [IStakeManager.DepositInfoStructOutput] & { + info: IStakeManager.DepositInfoStructOutput; + } + >; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { nonce: BigNumber }>; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise<[string]>; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + simulateHandleOp( + op: PackedUserOperationStruct, + target: PromiseOrValue, + targetCallData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + simulateValidation( + userOp: PackedUserOperationStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + simulateHandleOp( + op: PackedUserOperationStruct, + target: PromiseOrValue, + targetCallData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + simulateValidation( + userOp: PackedUserOperationStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + simulateHandleOp( + op: PackedUserOperationStruct, + target: PromiseOrValue, + targetCallData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + simulateValidation( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + unlockStake(overrides?: CallOverrides): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "AccountDeployed(bytes32,address,address,address)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + factory?: null, + paymaster?: null + ): AccountDeployedEventFilter; + AccountDeployed( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + factory?: null, + paymaster?: null + ): AccountDeployedEventFilter; + + "BeforeExecution()"(): BeforeExecutionEventFilter; + BeforeExecution(): BeforeExecutionEventFilter; + + "Deposited(address,uint256)"( + account?: PromiseOrValue | null, + totalDeposit?: null + ): DepositedEventFilter; + Deposited( + account?: PromiseOrValue | null, + totalDeposit?: null + ): DepositedEventFilter; + + "PostOpRevertReason(bytes32,address,uint256,bytes)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): PostOpRevertReasonEventFilter; + PostOpRevertReason( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): PostOpRevertReasonEventFilter; + + "SignatureAggregatorChanged(address)"( + aggregator?: PromiseOrValue | null + ): SignatureAggregatorChangedEventFilter; + SignatureAggregatorChanged( + aggregator?: PromiseOrValue | null + ): SignatureAggregatorChangedEventFilter; + + "StakeLocked(address,uint256,uint256)"( + account?: PromiseOrValue | null, + totalStaked?: null, + unstakeDelaySec?: null + ): StakeLockedEventFilter; + StakeLocked( + account?: PromiseOrValue | null, + totalStaked?: null, + unstakeDelaySec?: null + ): StakeLockedEventFilter; + + "StakeUnlocked(address,uint256)"( + account?: PromiseOrValue | null, + withdrawTime?: null + ): StakeUnlockedEventFilter; + StakeUnlocked( + account?: PromiseOrValue | null, + withdrawTime?: null + ): StakeUnlockedEventFilter; + + "StakeWithdrawn(address,address,uint256)"( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): StakeWithdrawnEventFilter; + StakeWithdrawn( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): StakeWithdrawnEventFilter; + + "UserOperationEvent(bytes32,address,address,uint256,bool,uint256,uint256)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + paymaster?: PromiseOrValue | null, + nonce?: null, + success?: null, + actualGasCost?: null, + actualGasUsed?: null + ): UserOperationEventEventFilter; + UserOperationEvent( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + paymaster?: PromiseOrValue | null, + nonce?: null, + success?: null, + actualGasCost?: null, + actualGasUsed?: null + ): UserOperationEventEventFilter; + + "UserOperationPrefundTooLow(bytes32,address,uint256)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null + ): UserOperationPrefundTooLowEventFilter; + UserOperationPrefundTooLow( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null + ): UserOperationPrefundTooLowEventFilter; + + "UserOperationRevertReason(bytes32,address,uint256,bytes)"( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): UserOperationRevertReasonEventFilter; + UserOperationRevertReason( + userOpHash?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + nonce?: null, + revertReason?: null + ): UserOperationRevertReasonEventFilter; + + "Withdrawn(address,address,uint256)"( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): WithdrawnEventFilter; + Withdrawn( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): WithdrawnEventFilter; + }; + + estimateGas: { + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + simulateHandleOp( + op: PackedUserOperationStruct, + target: PromiseOrValue, + targetCallData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + simulateValidation( + userOp: PackedUserOperationStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + delegateAndRevert( + target: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSenderAddress( + initCode: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + handleAggregatedOps( + opsPerAggregator: IEntryPoint.UserOpsPerAggregatorStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + handleOps( + ops: PackedUserOperationStruct[], + beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + simulateHandleOp( + op: PackedUserOperationStruct, + target: PromiseOrValue, + targetCallData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + simulateValidation( + userOp: PackedUserOperationStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/interfaces/INonceManager.ts b/packages/types/src/contracts/EPv7/interfaces/INonceManager.ts new file mode 100644 index 00000000..f632a634 --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/INonceManager.ts @@ -0,0 +1,144 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface INonceManagerInterface extends utils.Interface { + functions: { + "getNonce(address,uint192)": FunctionFragment; + "incrementNonce(uint192)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "getNonce" | "incrementNonce" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "getNonce", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "incrementNonce", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "getNonce", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "incrementNonce", + data: BytesLike + ): Result; + + events: {}; +} + +export interface INonceManager extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: INonceManagerInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { nonce: BigNumber }>; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + getNonce( + sender: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + incrementNonce( + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/interfaces/IPaymaster.ts b/packages/types/src/contracts/EPv7/interfaces/IPaymaster.ts new file mode 100644 index 00000000..e9a35244 --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/IPaymaster.ts @@ -0,0 +1,209 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export type PackedUserOperationStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + initCode: PromiseOrValue; + callData: PromiseOrValue; + accountGasLimits: PromiseOrValue; + preVerificationGas: PromiseOrValue; + gasFees: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + string, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + gasFees: string; + paymasterAndData: string; + signature: string; +}; + +export interface IPaymasterInterface extends utils.Interface { + functions: { + "postOp(uint8,bytes,uint256,uint256)": FunctionFragment; + "validatePaymasterUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "postOp" | "validatePaymasterUserOp" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "postOp", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "validatePaymasterUserOp", + values: [ + PackedUserOperationStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "postOp", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "validatePaymasterUserOp", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IPaymaster extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IPaymasterInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, BigNumber] & { context: string; validationData: BigNumber } + >; + }; + + filters: {}; + + estimateGas: { + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/interfaces/IStakeManager.ts b/packages/types/src/contracts/EPv7/interfaces/IStakeManager.ts new file mode 100644 index 00000000..a674ed45 --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/IStakeManager.ts @@ -0,0 +1,459 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export declare namespace IStakeManager { + export type DepositInfoStruct = { + deposit: PromiseOrValue; + staked: PromiseOrValue; + stake: PromiseOrValue; + unstakeDelaySec: PromiseOrValue; + withdrawTime: PromiseOrValue; + }; + + export type DepositInfoStructOutput = [ + BigNumber, + boolean, + BigNumber, + number, + number + ] & { + deposit: BigNumber; + staked: boolean; + stake: BigNumber; + unstakeDelaySec: number; + withdrawTime: number; + }; +} + +export interface IStakeManagerInterface extends utils.Interface { + functions: { + "addStake(uint32)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "depositTo(address)": FunctionFragment; + "getDepositInfo(address)": FunctionFragment; + "unlockStake()": FunctionFragment; + "withdrawStake(address)": FunctionFragment; + "withdrawTo(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addStake" + | "balanceOf" + | "depositTo" + | "getDepositInfo" + | "unlockStake" + | "withdrawStake" + | "withdrawTo" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "depositTo", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getDepositInfo", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "unlockStake", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdrawStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawTo", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "addStake", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "depositTo", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getDepositInfo", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "unlockStake", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawStake", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdrawTo", data: BytesLike): Result; + + events: { + "Deposited(address,uint256)": EventFragment; + "StakeLocked(address,uint256,uint256)": EventFragment; + "StakeUnlocked(address,uint256)": EventFragment; + "StakeWithdrawn(address,address,uint256)": EventFragment; + "Withdrawn(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Deposited"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeLocked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeUnlocked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeWithdrawn"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Withdrawn"): EventFragment; +} + +export interface DepositedEventObject { + account: string; + totalDeposit: BigNumber; +} +export type DepositedEvent = TypedEvent< + [string, BigNumber], + DepositedEventObject +>; + +export type DepositedEventFilter = TypedEventFilter; + +export interface StakeLockedEventObject { + account: string; + totalStaked: BigNumber; + unstakeDelaySec: BigNumber; +} +export type StakeLockedEvent = TypedEvent< + [string, BigNumber, BigNumber], + StakeLockedEventObject +>; + +export type StakeLockedEventFilter = TypedEventFilter; + +export interface StakeUnlockedEventObject { + account: string; + withdrawTime: BigNumber; +} +export type StakeUnlockedEvent = TypedEvent< + [string, BigNumber], + StakeUnlockedEventObject +>; + +export type StakeUnlockedEventFilter = TypedEventFilter; + +export interface StakeWithdrawnEventObject { + account: string; + withdrawAddress: string; + amount: BigNumber; +} +export type StakeWithdrawnEvent = TypedEvent< + [string, string, BigNumber], + StakeWithdrawnEventObject +>; + +export type StakeWithdrawnEventFilter = TypedEventFilter; + +export interface WithdrawnEventObject { + account: string; + withdrawAddress: string; + amount: BigNumber; +} +export type WithdrawnEvent = TypedEvent< + [string, string, BigNumber], + WithdrawnEventObject +>; + +export type WithdrawnEventFilter = TypedEventFilter; + +export interface IStakeManager extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IStakeManagerInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [IStakeManager.DepositInfoStructOutput] & { + info: IStakeManager.DepositInfoStructOutput; + } + >; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake(overrides?: CallOverrides): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Deposited(address,uint256)"( + account?: PromiseOrValue | null, + totalDeposit?: null + ): DepositedEventFilter; + Deposited( + account?: PromiseOrValue | null, + totalDeposit?: null + ): DepositedEventFilter; + + "StakeLocked(address,uint256,uint256)"( + account?: PromiseOrValue | null, + totalStaked?: null, + unstakeDelaySec?: null + ): StakeLockedEventFilter; + StakeLocked( + account?: PromiseOrValue | null, + totalStaked?: null, + unstakeDelaySec?: null + ): StakeLockedEventFilter; + + "StakeUnlocked(address,uint256)"( + account?: PromiseOrValue | null, + withdrawTime?: null + ): StakeUnlockedEventFilter; + StakeUnlocked( + account?: PromiseOrValue | null, + withdrawTime?: null + ): StakeUnlockedEventFilter; + + "StakeWithdrawn(address,address,uint256)"( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): StakeWithdrawnEventFilter; + StakeWithdrawn( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): StakeWithdrawnEventFilter; + + "Withdrawn(address,address,uint256)"( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): WithdrawnEventFilter; + Withdrawn( + account?: PromiseOrValue | null, + withdrawAddress?: null, + amount?: null + ): WithdrawnEventFilter; + }; + + estimateGas: { + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addStake( + _unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositTo( + account: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getDepositInfo( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + withdrawAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/interfaces/index.ts b/packages/types/src/contracts/EPv7/interfaces/index.ts new file mode 100644 index 00000000..c9054001 --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/index.ts @@ -0,0 +1,11 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IAccount } from "./IAccount"; +export type { IAccountExecute } from "./IAccountExecute"; +export type { IAggregator } from "./IAggregator"; +export type { IEntryPoint } from "./IEntryPoint"; +export type { IEntryPointSimulations } from "./IEntryPointSimulations"; +export type { INonceManager } from "./INonceManager"; +export type { IPaymaster } from "./IPaymaster"; +export type { IStakeManager } from "./IStakeManager"; diff --git a/packages/types/src/contracts/EPv7/samples/IOracle.ts b/packages/types/src/contracts/EPv7/samples/IOracle.ts new file mode 100644 index 00000000..08fc47a3 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/IOracle.ts @@ -0,0 +1,104 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface IOracleInterface extends utils.Interface { + functions: { + "getTokenValueOfEth(uint256)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "getTokenValueOfEth"): FunctionFragment; + + encodeFunctionData( + functionFragment: "getTokenValueOfEth", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "getTokenValueOfEth", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IOracle extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IOracleInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getTokenValueOfEth( + ethOutput: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { tokenInput: BigNumber }>; + }; + + getTokenValueOfEth( + ethOutput: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + getTokenValueOfEth( + ethOutput: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + getTokenValueOfEth( + ethOutput: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + getTokenValueOfEth( + ethOutput: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/samples/LegacyTokenPaymaster.ts b/packages/types/src/contracts/EPv7/samples/LegacyTokenPaymaster.ts new file mode 100644 index 00000000..60b6d403 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/LegacyTokenPaymaster.ts @@ -0,0 +1,884 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export type PackedUserOperationStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + initCode: PromiseOrValue; + callData: PromiseOrValue; + accountGasLimits: PromiseOrValue; + preVerificationGas: PromiseOrValue; + gasFees: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + string, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + gasFees: string; + paymasterAndData: string; + signature: string; +}; + +export interface LegacyTokenPaymasterInterface extends utils.Interface { + functions: { + "COST_OF_POST()": FunctionFragment; + "addStake(uint32)": FunctionFragment; + "allowance(address,address)": FunctionFragment; + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "decimals()": FunctionFragment; + "deposit()": FunctionFragment; + "entryPoint()": FunctionFragment; + "getDeposit()": FunctionFragment; + "mintTokens(address,uint256)": FunctionFragment; + "name()": FunctionFragment; + "owner()": FunctionFragment; + "postOp(uint8,bytes,uint256,uint256)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "symbol()": FunctionFragment; + "theFactory()": FunctionFragment; + "totalSupply()": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "unlockStake()": FunctionFragment; + "validatePaymasterUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; + "withdrawStake(address)": FunctionFragment; + "withdrawTo(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "COST_OF_POST" + | "addStake" + | "allowance" + | "approve" + | "balanceOf" + | "decimals" + | "deposit" + | "entryPoint" + | "getDeposit" + | "mintTokens" + | "name" + | "owner" + | "postOp" + | "renounceOwnership" + | "symbol" + | "theFactory" + | "totalSupply" + | "transfer" + | "transferFrom" + | "transferOwnership" + | "unlockStake" + | "validatePaymasterUserOp" + | "withdrawStake" + | "withdrawTo" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "COST_OF_POST", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "addStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData(functionFragment: "deposit", values?: undefined): string; + encodeFunctionData( + functionFragment: "entryPoint", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getDeposit", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "mintTokens", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "postOp", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "theFactory", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "unlockStake", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "validatePaymasterUserOp", + values: [ + PackedUserOperationStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "withdrawStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawTo", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "COST_OF_POST", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "addStake", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "entryPoint", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "getDeposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "mintTokens", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "postOp", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "theFactory", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "unlockStake", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "validatePaymasterUserOp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawStake", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdrawTo", data: BytesLike): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface LegacyTokenPaymaster extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: LegacyTokenPaymasterInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + COST_OF_POST(overrides?: CallOverrides): Promise<[BigNumber]>; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + approve( + spender: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise<[string]>; + + getDeposit(overrides?: CallOverrides): Promise<[BigNumber]>; + + mintTokens( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise<[string]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + theFactory(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + COST_OF_POST(overrides?: CallOverrides): Promise; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + mintTokens( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + theFactory(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + COST_OF_POST(overrides?: CallOverrides): Promise; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + value: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + deposit(overrides?: CallOverrides): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + mintTokens( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + theFactory(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake(overrides?: CallOverrides): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, BigNumber] & { context: string; validationData: BigNumber } + >; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + }; + + estimateGas: { + COST_OF_POST(overrides?: CallOverrides): Promise; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + mintTokens( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + theFactory(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + COST_OF_POST(overrides?: CallOverrides): Promise; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + mintTokens( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + theFactory(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/samples/SimpleAccount.ts b/packages/types/src/contracts/EPv7/samples/SimpleAccount.ts new file mode 100644 index 00000000..1ca2fd3f --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/SimpleAccount.ts @@ -0,0 +1,763 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export type PackedUserOperationStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + initCode: PromiseOrValue; + callData: PromiseOrValue; + accountGasLimits: PromiseOrValue; + preVerificationGas: PromiseOrValue; + gasFees: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + string, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + gasFees: string; + paymasterAndData: string; + signature: string; +}; + +export interface SimpleAccountInterface extends utils.Interface { + functions: { + "UPGRADE_INTERFACE_VERSION()": FunctionFragment; + "addDeposit()": FunctionFragment; + "entryPoint()": FunctionFragment; + "execute(address,uint256,bytes)": FunctionFragment; + "executeBatch(address[],uint256[],bytes[])": FunctionFragment; + "getDeposit()": FunctionFragment; + "getNonce()": FunctionFragment; + "initialize(address)": FunctionFragment; + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": FunctionFragment; + "onERC1155Received(address,address,uint256,uint256,bytes)": FunctionFragment; + "onERC721Received(address,address,uint256,bytes)": FunctionFragment; + "owner()": FunctionFragment; + "proxiableUUID()": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "upgradeToAndCall(address,bytes)": FunctionFragment; + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; + "withdrawDepositTo(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "UPGRADE_INTERFACE_VERSION" + | "addDeposit" + | "entryPoint" + | "execute" + | "executeBatch" + | "getDeposit" + | "getNonce" + | "initialize" + | "onERC1155BatchReceived" + | "onERC1155Received" + | "onERC721Received" + | "owner" + | "proxiableUUID" + | "supportsInterface" + | "upgradeToAndCall" + | "validateUserOp" + | "withdrawDepositTo" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "UPGRADE_INTERFACE_VERSION", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "addDeposit", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "entryPoint", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "execute", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "executeBatch", + values: [ + PromiseOrValue[], + PromiseOrValue[], + PromiseOrValue[] + ] + ): string; + encodeFunctionData( + functionFragment: "getDeposit", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "getNonce", values?: undefined): string; + encodeFunctionData( + functionFragment: "initialize", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "onERC1155BatchReceived", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue[], + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "onERC1155Received", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "onERC721Received", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "proxiableUUID", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "upgradeToAndCall", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "validateUserOp", + values: [ + PackedUserOperationStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "withdrawDepositTo", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "UPGRADE_INTERFACE_VERSION", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "addDeposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "entryPoint", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "executeBatch", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getDeposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "getNonce", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "onERC1155BatchReceived", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "onERC1155Received", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "onERC721Received", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "proxiableUUID", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "upgradeToAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "validateUserOp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawDepositTo", + data: BytesLike + ): Result; + + events: { + "Initialized(uint64)": EventFragment; + "SimpleAccountInitialized(address,address)": EventFragment; + "Upgraded(address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SimpleAccountInitialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; +} + +export interface InitializedEventObject { + version: BigNumber; +} +export type InitializedEvent = TypedEvent<[BigNumber], InitializedEventObject>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface SimpleAccountInitializedEventObject { + entryPoint: string; + owner: string; +} +export type SimpleAccountInitializedEvent = TypedEvent< + [string, string], + SimpleAccountInitializedEventObject +>; + +export type SimpleAccountInitializedEventFilter = + TypedEventFilter; + +export interface UpgradedEventObject { + implementation: string; +} +export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>; + +export type UpgradedEventFilter = TypedEventFilter; + +export interface SimpleAccount extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SimpleAccountInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<[string]>; + + addDeposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise<[string]>; + + execute( + dest: PromiseOrValue, + value: PromiseOrValue, + func: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + executeBatch( + dest: PromiseOrValue[], + value: PromiseOrValue[], + func: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getDeposit(overrides?: CallOverrides): Promise<[BigNumber]>; + + getNonce(overrides?: CallOverrides): Promise<[BigNumber]>; + + initialize( + anOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + onERC1155BatchReceived( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue[], + arg3: PromiseOrValue[], + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + onERC1155Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + onERC721Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + proxiableUUID(overrides?: CallOverrides): Promise<[string]>; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + upgradeToAndCall( + newImplementation: PromiseOrValue, + data: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawDepositTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise; + + addDeposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + execute( + dest: PromiseOrValue, + value: PromiseOrValue, + func: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + executeBatch( + dest: PromiseOrValue[], + value: PromiseOrValue[], + func: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + getNonce(overrides?: CallOverrides): Promise; + + initialize( + anOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + onERC1155BatchReceived( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue[], + arg3: PromiseOrValue[], + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC1155Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC721Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + proxiableUUID(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + upgradeToAndCall( + newImplementation: PromiseOrValue, + data: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawDepositTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise; + + addDeposit(overrides?: CallOverrides): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + execute( + dest: PromiseOrValue, + value: PromiseOrValue, + func: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + executeBatch( + dest: PromiseOrValue[], + value: PromiseOrValue[], + func: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + getNonce(overrides?: CallOverrides): Promise; + + initialize( + anOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC1155BatchReceived( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue[], + arg3: PromiseOrValue[], + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC1155Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC721Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + proxiableUUID(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + upgradeToAndCall( + newImplementation: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawDepositTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Initialized(uint64)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "SimpleAccountInitialized(address,address)"( + entryPoint?: PromiseOrValue | null, + owner?: PromiseOrValue | null + ): SimpleAccountInitializedEventFilter; + SimpleAccountInitialized( + entryPoint?: PromiseOrValue | null, + owner?: PromiseOrValue | null + ): SimpleAccountInitializedEventFilter; + + "Upgraded(address)"( + implementation?: PromiseOrValue | null + ): UpgradedEventFilter; + Upgraded( + implementation?: PromiseOrValue | null + ): UpgradedEventFilter; + }; + + estimateGas: { + UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise; + + addDeposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + execute( + dest: PromiseOrValue, + value: PromiseOrValue, + func: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + executeBatch( + dest: PromiseOrValue[], + value: PromiseOrValue[], + func: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + getNonce(overrides?: CallOverrides): Promise; + + initialize( + anOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + onERC1155BatchReceived( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue[], + arg3: PromiseOrValue[], + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC1155Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC721Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + proxiableUUID(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + upgradeToAndCall( + newImplementation: PromiseOrValue, + data: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawDepositTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + UPGRADE_INTERFACE_VERSION( + overrides?: CallOverrides + ): Promise; + + addDeposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + execute( + dest: PromiseOrValue, + value: PromiseOrValue, + func: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + executeBatch( + dest: PromiseOrValue[], + value: PromiseOrValue[], + func: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + getNonce(overrides?: CallOverrides): Promise; + + initialize( + anOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + onERC1155BatchReceived( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue[], + arg3: PromiseOrValue[], + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC1155Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC721Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + proxiableUUID(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + upgradeToAndCall( + newImplementation: PromiseOrValue, + data: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawDepositTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/samples/SimpleAccountFactory.ts b/packages/types/src/contracts/EPv7/samples/SimpleAccountFactory.ts new file mode 100644 index 00000000..0c6b96b8 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/SimpleAccountFactory.ts @@ -0,0 +1,173 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface SimpleAccountFactoryInterface extends utils.Interface { + functions: { + "accountImplementation()": FunctionFragment; + "createAccount(address,uint256)": FunctionFragment; + "getAddress(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "accountImplementation" + | "createAccount" + | "getAddress" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "accountImplementation", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "createAccount", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getAddress", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "accountImplementation", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createAccount", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getAddress", data: BytesLike): Result; + + events: {}; +} + +export interface SimpleAccountFactory extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SimpleAccountFactoryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + accountImplementation(overrides?: CallOverrides): Promise<[string]>; + + createAccount( + owner: PromiseOrValue, + salt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAddress( + owner: PromiseOrValue, + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + }; + + accountImplementation(overrides?: CallOverrides): Promise; + + createAccount( + owner: PromiseOrValue, + salt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAddress( + owner: PromiseOrValue, + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + accountImplementation(overrides?: CallOverrides): Promise; + + createAccount( + owner: PromiseOrValue, + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAddress( + owner: PromiseOrValue, + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + accountImplementation(overrides?: CallOverrides): Promise; + + createAccount( + owner: PromiseOrValue, + salt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAddress( + owner: PromiseOrValue, + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + accountImplementation( + overrides?: CallOverrides + ): Promise; + + createAccount( + owner: PromiseOrValue, + salt: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAddress( + owner: PromiseOrValue, + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/samples/TokenPaymaster.ts b/packages/types/src/contracts/EPv7/samples/TokenPaymaster.ts new file mode 100644 index 00000000..05e5d446 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/TokenPaymaster.ts @@ -0,0 +1,1094 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export type PackedUserOperationStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + initCode: PromiseOrValue; + callData: PromiseOrValue; + accountGasLimits: PromiseOrValue; + preVerificationGas: PromiseOrValue; + gasFees: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + string, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + gasFees: string; + paymasterAndData: string; + signature: string; +}; + +export declare namespace TokenPaymaster { + export type TokenPaymasterConfigStruct = { + priceMarkup: PromiseOrValue; + minEntryPointBalance: PromiseOrValue; + refundPostopCost: PromiseOrValue; + priceMaxAge: PromiseOrValue; + }; + + export type TokenPaymasterConfigStructOutput = [ + BigNumber, + BigNumber, + number, + number + ] & { + priceMarkup: BigNumber; + minEntryPointBalance: BigNumber; + refundPostopCost: number; + priceMaxAge: number; + }; +} + +export declare namespace OracleHelper { + export type OracleHelperConfigStruct = { + cacheTimeToLive: PromiseOrValue; + maxOracleRoundAge: PromiseOrValue; + tokenOracle: PromiseOrValue; + nativeOracle: PromiseOrValue; + tokenToNativeOracle: PromiseOrValue; + tokenOracleReverse: PromiseOrValue; + nativeOracleReverse: PromiseOrValue; + priceUpdateThreshold: PromiseOrValue; + }; + + export type OracleHelperConfigStructOutput = [ + number, + number, + string, + string, + boolean, + boolean, + boolean, + BigNumber + ] & { + cacheTimeToLive: number; + maxOracleRoundAge: number; + tokenOracle: string; + nativeOracle: string; + tokenToNativeOracle: boolean; + tokenOracleReverse: boolean; + nativeOracleReverse: boolean; + priceUpdateThreshold: BigNumber; + }; +} + +export declare namespace UniswapHelper { + export type UniswapHelperConfigStruct = { + minSwapAmount: PromiseOrValue; + uniswapPoolFee: PromiseOrValue; + slippage: PromiseOrValue; + }; + + export type UniswapHelperConfigStructOutput = [BigNumber, number, number] & { + minSwapAmount: BigNumber; + uniswapPoolFee: number; + slippage: number; + }; +} + +export interface TokenPaymasterInterface extends utils.Interface { + functions: { + "addStake(uint32)": FunctionFragment; + "cachedPrice()": FunctionFragment; + "cachedPriceTimestamp()": FunctionFragment; + "deposit()": FunctionFragment; + "entryPoint()": FunctionFragment; + "getDeposit()": FunctionFragment; + "owner()": FunctionFragment; + "postOp(uint8,bytes,uint256,uint256)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "setTokenPaymasterConfig((uint256,uint128,uint48,uint48))": FunctionFragment; + "setUniswapConfiguration((uint256,uint24,uint8))": FunctionFragment; + "token()": FunctionFragment; + "tokenPaymasterConfig()": FunctionFragment; + "tokenToWei(uint256,uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "uniswap()": FunctionFragment; + "unlockStake()": FunctionFragment; + "updateCachedPrice(bool)": FunctionFragment; + "validatePaymasterUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; + "weiToToken(uint256,uint256)": FunctionFragment; + "withdrawEth(address,uint256)": FunctionFragment; + "withdrawStake(address)": FunctionFragment; + "withdrawTo(address,uint256)": FunctionFragment; + "withdrawToken(address,uint256)": FunctionFragment; + "wrappedNative()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addStake" + | "cachedPrice" + | "cachedPriceTimestamp" + | "deposit" + | "entryPoint" + | "getDeposit" + | "owner" + | "postOp" + | "renounceOwnership" + | "setTokenPaymasterConfig" + | "setUniswapConfiguration" + | "token" + | "tokenPaymasterConfig" + | "tokenToWei" + | "transferOwnership" + | "uniswap" + | "unlockStake" + | "updateCachedPrice" + | "validatePaymasterUserOp" + | "weiToToken" + | "withdrawEth" + | "withdrawStake" + | "withdrawTo" + | "withdrawToken" + | "wrappedNative" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "cachedPrice", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "cachedPriceTimestamp", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "deposit", values?: undefined): string; + encodeFunctionData( + functionFragment: "entryPoint", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getDeposit", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "postOp", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setTokenPaymasterConfig", + values: [TokenPaymaster.TokenPaymasterConfigStruct] + ): string; + encodeFunctionData( + functionFragment: "setUniswapConfiguration", + values: [UniswapHelper.UniswapHelperConfigStruct] + ): string; + encodeFunctionData(functionFragment: "token", values?: undefined): string; + encodeFunctionData( + functionFragment: "tokenPaymasterConfig", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "tokenToWei", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "uniswap", values?: undefined): string; + encodeFunctionData( + functionFragment: "unlockStake", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "updateCachedPrice", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "validatePaymasterUserOp", + values: [ + PackedUserOperationStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "weiToToken", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawEth", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawTo", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawToken", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "wrappedNative", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "addStake", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "cachedPrice", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "cachedPriceTimestamp", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "entryPoint", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "getDeposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "postOp", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTokenPaymasterConfig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setUniswapConfiguration", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "tokenPaymasterConfig", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "tokenToWei", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "uniswap", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "unlockStake", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateCachedPrice", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "validatePaymasterUserOp", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "weiToToken", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawEth", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawStake", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdrawTo", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawToken", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "wrappedNative", + data: BytesLike + ): Result; + + events: { + "ConfigUpdated(tuple)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "Received(address,uint256)": EventFragment; + "TokenPriceUpdated(uint256,uint256,uint256)": EventFragment; + "UniswapReverted(address,address,uint256,uint256)": EventFragment; + "UserOperationSponsored(address,uint256,uint256,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "ConfigUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Received"): EventFragment; + getEvent(nameOrSignatureOrTopic: "TokenPriceUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UniswapReverted"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationSponsored"): EventFragment; +} + +export interface ConfigUpdatedEventObject { + tokenPaymasterConfig: TokenPaymaster.TokenPaymasterConfigStructOutput; +} +export type ConfigUpdatedEvent = TypedEvent< + [TokenPaymaster.TokenPaymasterConfigStructOutput], + ConfigUpdatedEventObject +>; + +export type ConfigUpdatedEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface ReceivedEventObject { + sender: string; + value: BigNumber; +} +export type ReceivedEvent = TypedEvent< + [string, BigNumber], + ReceivedEventObject +>; + +export type ReceivedEventFilter = TypedEventFilter; + +export interface TokenPriceUpdatedEventObject { + currentPrice: BigNumber; + previousPrice: BigNumber; + cachedPriceTimestamp: BigNumber; +} +export type TokenPriceUpdatedEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber], + TokenPriceUpdatedEventObject +>; + +export type TokenPriceUpdatedEventFilter = + TypedEventFilter; + +export interface UniswapRevertedEventObject { + tokenIn: string; + tokenOut: string; + amountIn: BigNumber; + amountOutMin: BigNumber; +} +export type UniswapRevertedEvent = TypedEvent< + [string, string, BigNumber, BigNumber], + UniswapRevertedEventObject +>; + +export type UniswapRevertedEventFilter = TypedEventFilter; + +export interface UserOperationSponsoredEventObject { + user: string; + actualTokenCharge: BigNumber; + actualGasCost: BigNumber; + actualTokenPriceWithMarkup: BigNumber; +} +export type UserOperationSponsoredEvent = TypedEvent< + [string, BigNumber, BigNumber, BigNumber], + UserOperationSponsoredEventObject +>; + +export type UserOperationSponsoredEventFilter = + TypedEventFilter; + +export interface TokenPaymaster extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TokenPaymasterInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + cachedPrice(overrides?: CallOverrides): Promise<[BigNumber]>; + + cachedPriceTimestamp(overrides?: CallOverrides): Promise<[number]>; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise<[string]>; + + getDeposit(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTokenPaymasterConfig( + _tokenPaymasterConfig: TokenPaymaster.TokenPaymasterConfigStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUniswapConfiguration( + _uniswapHelperConfig: UniswapHelper.UniswapHelperConfigStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + token(overrides?: CallOverrides): Promise<[string]>; + + tokenPaymasterConfig( + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, number, number] & { + priceMarkup: BigNumber; + minEntryPointBalance: BigNumber; + refundPostopCost: number; + priceMaxAge: number; + } + >; + + tokenToWei( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + uniswap(overrides?: CallOverrides): Promise<[string]>; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateCachedPrice( + force: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + weiToToken( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + withdrawEth( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawToken( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + wrappedNative(overrides?: CallOverrides): Promise<[string]>; + }; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + cachedPrice(overrides?: CallOverrides): Promise; + + cachedPriceTimestamp(overrides?: CallOverrides): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTokenPaymasterConfig( + _tokenPaymasterConfig: TokenPaymaster.TokenPaymasterConfigStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUniswapConfiguration( + _uniswapHelperConfig: UniswapHelper.UniswapHelperConfigStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + token(overrides?: CallOverrides): Promise; + + tokenPaymasterConfig( + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, number, number] & { + priceMarkup: BigNumber; + minEntryPointBalance: BigNumber; + refundPostopCost: number; + priceMaxAge: number; + } + >; + + tokenToWei( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + uniswap(overrides?: CallOverrides): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateCachedPrice( + force: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + weiToToken( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawEth( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawToken( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + wrappedNative(overrides?: CallOverrides): Promise; + + callStatic: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + cachedPrice(overrides?: CallOverrides): Promise; + + cachedPriceTimestamp(overrides?: CallOverrides): Promise; + + deposit(overrides?: CallOverrides): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + setTokenPaymasterConfig( + _tokenPaymasterConfig: TokenPaymaster.TokenPaymasterConfigStruct, + overrides?: CallOverrides + ): Promise; + + setUniswapConfiguration( + _uniswapHelperConfig: UniswapHelper.UniswapHelperConfigStruct, + overrides?: CallOverrides + ): Promise; + + token(overrides?: CallOverrides): Promise; + + tokenPaymasterConfig( + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, number, number] & { + priceMarkup: BigNumber; + minEntryPointBalance: BigNumber; + refundPostopCost: number; + priceMaxAge: number; + } + >; + + tokenToWei( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + uniswap(overrides?: CallOverrides): Promise; + + unlockStake(overrides?: CallOverrides): Promise; + + updateCachedPrice( + force: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, BigNumber] & { context: string; validationData: BigNumber } + >; + + weiToToken( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawEth( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawToken( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + wrappedNative(overrides?: CallOverrides): Promise; + }; + + filters: { + "ConfigUpdated(tuple)"( + tokenPaymasterConfig?: null + ): ConfigUpdatedEventFilter; + ConfigUpdated(tokenPaymasterConfig?: null): ConfigUpdatedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "Received(address,uint256)"( + sender?: PromiseOrValue | null, + value?: null + ): ReceivedEventFilter; + Received( + sender?: PromiseOrValue | null, + value?: null + ): ReceivedEventFilter; + + "TokenPriceUpdated(uint256,uint256,uint256)"( + currentPrice?: null, + previousPrice?: null, + cachedPriceTimestamp?: null + ): TokenPriceUpdatedEventFilter; + TokenPriceUpdated( + currentPrice?: null, + previousPrice?: null, + cachedPriceTimestamp?: null + ): TokenPriceUpdatedEventFilter; + + "UniswapReverted(address,address,uint256,uint256)"( + tokenIn?: null, + tokenOut?: null, + amountIn?: null, + amountOutMin?: null + ): UniswapRevertedEventFilter; + UniswapReverted( + tokenIn?: null, + tokenOut?: null, + amountIn?: null, + amountOutMin?: null + ): UniswapRevertedEventFilter; + + "UserOperationSponsored(address,uint256,uint256,uint256)"( + user?: PromiseOrValue | null, + actualTokenCharge?: null, + actualGasCost?: null, + actualTokenPriceWithMarkup?: null + ): UserOperationSponsoredEventFilter; + UserOperationSponsored( + user?: PromiseOrValue | null, + actualTokenCharge?: null, + actualGasCost?: null, + actualTokenPriceWithMarkup?: null + ): UserOperationSponsoredEventFilter; + }; + + estimateGas: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + cachedPrice(overrides?: CallOverrides): Promise; + + cachedPriceTimestamp(overrides?: CallOverrides): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTokenPaymasterConfig( + _tokenPaymasterConfig: TokenPaymaster.TokenPaymasterConfigStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUniswapConfiguration( + _uniswapHelperConfig: UniswapHelper.UniswapHelperConfigStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + token(overrides?: CallOverrides): Promise; + + tokenPaymasterConfig(overrides?: CallOverrides): Promise; + + tokenToWei( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + uniswap(overrides?: CallOverrides): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateCachedPrice( + force: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + weiToToken( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawEth( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawToken( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + wrappedNative(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + cachedPrice(overrides?: CallOverrides): Promise; + + cachedPriceTimestamp( + overrides?: CallOverrides + ): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTokenPaymasterConfig( + _tokenPaymasterConfig: TokenPaymaster.TokenPaymasterConfigStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUniswapConfiguration( + _uniswapHelperConfig: UniswapHelper.UniswapHelperConfigStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + token(overrides?: CallOverrides): Promise; + + tokenPaymasterConfig( + overrides?: CallOverrides + ): Promise; + + tokenToWei( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + uniswap(overrides?: CallOverrides): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateCachedPrice( + force: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + weiToToken( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawEth( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawToken( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + wrappedNative(overrides?: CallOverrides): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/samples/VerifyingPaymaster.ts b/packages/types/src/contracts/EPv7/samples/VerifyingPaymaster.ts new file mode 100644 index 00000000..0b443b4a --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/VerifyingPaymaster.ts @@ -0,0 +1,625 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export type PackedUserOperationStruct = { + sender: PromiseOrValue; + nonce: PromiseOrValue; + initCode: PromiseOrValue; + callData: PromiseOrValue; + accountGasLimits: PromiseOrValue; + preVerificationGas: PromiseOrValue; + gasFees: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + string, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + gasFees: string; + paymasterAndData: string; + signature: string; +}; + +export interface VerifyingPaymasterInterface extends utils.Interface { + functions: { + "addStake(uint32)": FunctionFragment; + "deposit()": FunctionFragment; + "entryPoint()": FunctionFragment; + "getDeposit()": FunctionFragment; + "getHash((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),uint48,uint48)": FunctionFragment; + "owner()": FunctionFragment; + "parsePaymasterAndData(bytes)": FunctionFragment; + "postOp(uint8,bytes,uint256,uint256)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "unlockStake()": FunctionFragment; + "validatePaymasterUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; + "verifyingSigner()": FunctionFragment; + "withdrawStake(address)": FunctionFragment; + "withdrawTo(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addStake" + | "deposit" + | "entryPoint" + | "getDeposit" + | "getHash" + | "owner" + | "parsePaymasterAndData" + | "postOp" + | "renounceOwnership" + | "transferOwnership" + | "unlockStake" + | "validatePaymasterUserOp" + | "verifyingSigner" + | "withdrawStake" + | "withdrawTo" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "deposit", values?: undefined): string; + encodeFunctionData( + functionFragment: "entryPoint", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getDeposit", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getHash", + values: [ + PackedUserOperationStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "parsePaymasterAndData", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "postOp", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "unlockStake", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "validatePaymasterUserOp", + values: [ + PackedUserOperationStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "verifyingSigner", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdrawStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawTo", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "addStake", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "entryPoint", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "getDeposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "getHash", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "parsePaymasterAndData", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "postOp", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "unlockStake", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "validatePaymasterUserOp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "verifyingSigner", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawStake", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdrawTo", data: BytesLike): Result; + + events: { + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface VerifyingPaymaster extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: VerifyingPaymasterInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise<[string]>; + + getDeposit(overrides?: CallOverrides): Promise<[BigNumber]>; + + getHash( + userOp: PackedUserOperationStruct, + validUntil: PromiseOrValue, + validAfter: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + parsePaymasterAndData( + paymasterAndData: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [number, number, string] & { + validUntil: number; + validAfter: number; + signature: string; + } + >; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + verifyingSigner(overrides?: CallOverrides): Promise<[string]>; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + getHash( + userOp: PackedUserOperationStruct, + validUntil: PromiseOrValue, + validAfter: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + parsePaymasterAndData( + paymasterAndData: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [number, number, string] & { + validUntil: number; + validAfter: number; + signature: string; + } + >; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + verifyingSigner(overrides?: CallOverrides): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deposit(overrides?: CallOverrides): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + getHash( + userOp: PackedUserOperationStruct, + validUntil: PromiseOrValue, + validAfter: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + parsePaymasterAndData( + paymasterAndData: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [number, number, string] & { + validUntil: number; + validAfter: number; + signature: string; + } + >; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + unlockStake(overrides?: CallOverrides): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, BigNumber] & { context: string; validationData: BigNumber } + >; + + verifyingSigner(overrides?: CallOverrides): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + getHash( + userOp: PackedUserOperationStruct, + validUntil: PromiseOrValue, + validAfter: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + parsePaymasterAndData( + paymasterAndData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + verifyingSigner(overrides?: CallOverrides): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addStake( + unstakeDelaySec: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + getHash( + userOp: PackedUserOperationStruct, + validUntil: PromiseOrValue, + validAfter: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + parsePaymasterAndData( + paymasterAndData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + postOp( + mode: PromiseOrValue, + context: PromiseOrValue, + actualGasCost: PromiseOrValue, + actualUserOpFeePerGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + validatePaymasterUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + maxCost: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + verifyingSigner(overrides?: CallOverrides): Promise; + + withdrawStake( + withdrawAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawTo( + withdrawAddress: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/samples/callback/TokenCallbackHandler.ts b/packages/types/src/contracts/EPv7/samples/callback/TokenCallbackHandler.ts new file mode 100644 index 00000000..0dc03aa7 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/callback/TokenCallbackHandler.ts @@ -0,0 +1,284 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface TokenCallbackHandlerInterface extends utils.Interface { + functions: { + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": FunctionFragment; + "onERC1155Received(address,address,uint256,uint256,bytes)": FunctionFragment; + "onERC721Received(address,address,uint256,bytes)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "onERC1155BatchReceived" + | "onERC1155Received" + | "onERC721Received" + | "supportsInterface" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "onERC1155BatchReceived", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue[], + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "onERC1155Received", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "onERC721Received", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "onERC1155BatchReceived", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "onERC1155Received", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "onERC721Received", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + + events: {}; +} + +export interface TokenCallbackHandler extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TokenCallbackHandlerInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + onERC1155BatchReceived( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue[], + arg3: PromiseOrValue[], + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + onERC1155Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + onERC721Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + }; + + onERC1155BatchReceived( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue[], + arg3: PromiseOrValue[], + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC1155Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC721Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + onERC1155BatchReceived( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue[], + arg3: PromiseOrValue[], + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC1155Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC721Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + onERC1155BatchReceived( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue[], + arg3: PromiseOrValue[], + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC1155Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC721Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + onERC1155BatchReceived( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue[], + arg3: PromiseOrValue[], + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC1155Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + arg4: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onERC721Received( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/samples/callback/index.ts b/packages/types/src/contracts/EPv7/samples/callback/index.ts new file mode 100644 index 00000000..3806db9a --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/callback/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { TokenCallbackHandler } from "./TokenCallbackHandler"; diff --git a/packages/types/src/contracts/EPv7/samples/index.ts b/packages/types/src/contracts/EPv7/samples/index.ts new file mode 100644 index 00000000..9db764af --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/index.ts @@ -0,0 +1,13 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as callback from "./callback"; +export type { callback }; +import type * as utils from "./utils"; +export type { utils }; +export type { IOracle } from "./IOracle"; +export type { LegacyTokenPaymaster } from "./LegacyTokenPaymaster"; +export type { SimpleAccount } from "./SimpleAccount"; +export type { SimpleAccountFactory } from "./SimpleAccountFactory"; +export type { TokenPaymaster } from "./TokenPaymaster"; +export type { VerifyingPaymaster } from "./VerifyingPaymaster"; diff --git a/packages/types/src/contracts/EPv7/samples/utils/IOracle.ts b/packages/types/src/contracts/EPv7/samples/utils/IOracle.ts new file mode 100644 index 00000000..8a5e66f5 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/utils/IOracle.ts @@ -0,0 +1,132 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, +} from "../../../common"; + +export interface IOracleInterface extends utils.Interface { + functions: { + "decimals()": FunctionFragment; + "latestRoundData()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "decimals" | "latestRoundData" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData( + functionFragment: "latestRoundData", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "latestRoundData", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IOracle extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IOracleInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + decimals(overrides?: CallOverrides): Promise<[number]>; + + latestRoundData( + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { + roundId: BigNumber; + answer: BigNumber; + startedAt: BigNumber; + updatedAt: BigNumber; + answeredInRound: BigNumber; + } + >; + }; + + decimals(overrides?: CallOverrides): Promise; + + latestRoundData( + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { + roundId: BigNumber; + answer: BigNumber; + startedAt: BigNumber; + updatedAt: BigNumber; + answeredInRound: BigNumber; + } + >; + + callStatic: { + decimals(overrides?: CallOverrides): Promise; + + latestRoundData( + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { + roundId: BigNumber; + answer: BigNumber; + startedAt: BigNumber; + updatedAt: BigNumber; + answeredInRound: BigNumber; + } + >; + }; + + filters: {}; + + estimateGas: { + decimals(overrides?: CallOverrides): Promise; + + latestRoundData(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + decimals(overrides?: CallOverrides): Promise; + + latestRoundData(overrides?: CallOverrides): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/samples/utils/OracleHelper.ts b/packages/types/src/contracts/EPv7/samples/utils/OracleHelper.ts new file mode 100644 index 00000000..c82649d9 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/utils/OracleHelper.ts @@ -0,0 +1,182 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface OracleHelperInterface extends utils.Interface { + functions: { + "cachedPrice()": FunctionFragment; + "cachedPriceTimestamp()": FunctionFragment; + "updateCachedPrice(bool)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "cachedPrice" + | "cachedPriceTimestamp" + | "updateCachedPrice" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "cachedPrice", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "cachedPriceTimestamp", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "updateCachedPrice", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "cachedPrice", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "cachedPriceTimestamp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateCachedPrice", + data: BytesLike + ): Result; + + events: { + "TokenPriceUpdated(uint256,uint256,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "TokenPriceUpdated"): EventFragment; +} + +export interface TokenPriceUpdatedEventObject { + currentPrice: BigNumber; + previousPrice: BigNumber; + cachedPriceTimestamp: BigNumber; +} +export type TokenPriceUpdatedEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber], + TokenPriceUpdatedEventObject +>; + +export type TokenPriceUpdatedEventFilter = + TypedEventFilter; + +export interface OracleHelper extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: OracleHelperInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + cachedPrice(overrides?: CallOverrides): Promise<[BigNumber]>; + + cachedPriceTimestamp(overrides?: CallOverrides): Promise<[number]>; + + updateCachedPrice( + force: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + cachedPrice(overrides?: CallOverrides): Promise; + + cachedPriceTimestamp(overrides?: CallOverrides): Promise; + + updateCachedPrice( + force: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + cachedPrice(overrides?: CallOverrides): Promise; + + cachedPriceTimestamp(overrides?: CallOverrides): Promise; + + updateCachedPrice( + force: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "TokenPriceUpdated(uint256,uint256,uint256)"( + currentPrice?: null, + previousPrice?: null, + cachedPriceTimestamp?: null + ): TokenPriceUpdatedEventFilter; + TokenPriceUpdated( + currentPrice?: null, + previousPrice?: null, + cachedPriceTimestamp?: null + ): TokenPriceUpdatedEventFilter; + }; + + estimateGas: { + cachedPrice(overrides?: CallOverrides): Promise; + + cachedPriceTimestamp(overrides?: CallOverrides): Promise; + + updateCachedPrice( + force: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + cachedPrice(overrides?: CallOverrides): Promise; + + cachedPriceTimestamp( + overrides?: CallOverrides + ): Promise; + + updateCachedPrice( + force: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/samples/utils/UniswapHelper.ts b/packages/types/src/contracts/EPv7/samples/utils/UniswapHelper.ts new file mode 100644 index 00000000..316627ca --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/utils/UniswapHelper.ts @@ -0,0 +1,228 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface UniswapHelperInterface extends utils.Interface { + functions: { + "token()": FunctionFragment; + "tokenToWei(uint256,uint256)": FunctionFragment; + "uniswap()": FunctionFragment; + "weiToToken(uint256,uint256)": FunctionFragment; + "wrappedNative()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "token" + | "tokenToWei" + | "uniswap" + | "weiToToken" + | "wrappedNative" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "token", values?: undefined): string; + encodeFunctionData( + functionFragment: "tokenToWei", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "uniswap", values?: undefined): string; + encodeFunctionData( + functionFragment: "weiToToken", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "wrappedNative", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tokenToWei", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "uniswap", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "weiToToken", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "wrappedNative", + data: BytesLike + ): Result; + + events: { + "UniswapReverted(address,address,uint256,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "UniswapReverted"): EventFragment; +} + +export interface UniswapRevertedEventObject { + tokenIn: string; + tokenOut: string; + amountIn: BigNumber; + amountOutMin: BigNumber; +} +export type UniswapRevertedEvent = TypedEvent< + [string, string, BigNumber, BigNumber], + UniswapRevertedEventObject +>; + +export type UniswapRevertedEventFilter = TypedEventFilter; + +export interface UniswapHelper extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: UniswapHelperInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + token(overrides?: CallOverrides): Promise<[string]>; + + tokenToWei( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + uniswap(overrides?: CallOverrides): Promise<[string]>; + + weiToToken( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + wrappedNative(overrides?: CallOverrides): Promise<[string]>; + }; + + token(overrides?: CallOverrides): Promise; + + tokenToWei( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + uniswap(overrides?: CallOverrides): Promise; + + weiToToken( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + wrappedNative(overrides?: CallOverrides): Promise; + + callStatic: { + token(overrides?: CallOverrides): Promise; + + tokenToWei( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + uniswap(overrides?: CallOverrides): Promise; + + weiToToken( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + wrappedNative(overrides?: CallOverrides): Promise; + }; + + filters: { + "UniswapReverted(address,address,uint256,uint256)"( + tokenIn?: null, + tokenOut?: null, + amountIn?: null, + amountOutMin?: null + ): UniswapRevertedEventFilter; + UniswapReverted( + tokenIn?: null, + tokenOut?: null, + amountIn?: null, + amountOutMin?: null + ): UniswapRevertedEventFilter; + }; + + estimateGas: { + token(overrides?: CallOverrides): Promise; + + tokenToWei( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + uniswap(overrides?: CallOverrides): Promise; + + weiToToken( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + wrappedNative(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + token(overrides?: CallOverrides): Promise; + + tokenToWei( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + uniswap(overrides?: CallOverrides): Promise; + + weiToToken( + amount: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + wrappedNative(overrides?: CallOverrides): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/samples/utils/index.ts b/packages/types/src/contracts/EPv7/samples/utils/index.ts new file mode 100644 index 00000000..98d52570 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/utils/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IOracle } from "./IOracle"; +export type { OracleHelper } from "./OracleHelper"; +export type { UniswapHelper } from "./UniswapHelper"; diff --git a/packages/types/src/contracts/UserOperation.ts b/packages/types/src/contracts/UserOperation.ts new file mode 100644 index 00000000..dff5fb5d --- /dev/null +++ b/packages/types/src/contracts/UserOperation.ts @@ -0,0 +1,26 @@ +import { BigNumberish, BytesLike } from "ethers"; +import { PackedUserOperationStruct } from "./EPv7/interfaces/IPaymaster"; + +export type NotPromise = { + [P in keyof T]: Exclude> +} + +export interface UserOperation { + sender: string; + nonce: BigNumberish; + factory?: string; + factoryData?: BytesLike; + callData: BytesLike; + callGasLimit: BigNumberish; + verificationGasLimit: BigNumberish; + preVerificationGas: BigNumberish; + maxFeePerGas: BigNumberish; + maxPriorityFeePerGas: BigNumberish; + paymaster?: string; + paymasterVerificationGasLimit?: BigNumberish; + paymasterPostOpGasLimit?: BigNumberish; + paymasterData?: BytesLike; + signature: BytesLike; +} + +export type PackedUserOperation = NotPromise \ No newline at end of file diff --git a/packages/types/src/contracts/common.ts b/packages/types/src/contracts/common.ts new file mode 100644 index 00000000..ed9cc606 --- /dev/null +++ b/packages/types/src/contracts/common.ts @@ -0,0 +1,46 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { Listener } from "@ethersproject/providers"; +import type { Event, EventFilter } from "ethers"; + +export interface TypedEvent< + TArgsArray extends Array = any, + TArgsObject = any +> extends Event { + args: TArgsArray & TArgsObject; +} + +export interface TypedEventFilter<_TEvent extends TypedEvent> + extends EventFilter {} + +export interface TypedListener { + (...listenerArg: [...__TypechainArgsArray, TEvent]): void; +} + +type __TypechainArgsArray = T extends TypedEvent ? U : never; + +export interface OnEvent { + ( + eventFilter: TypedEventFilter, + listener: TypedListener + ): TRes; + (eventName: string, listener: Listener): TRes; +} + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory< + infer C, + any +> + ? C + : never; + +export type GetARGsTypeFromFactory = F extends MinEthersFactory + ? Parameters + : never; + +export type PromiseOrValue = T | Promise; // deleted Promise on purpose diff --git a/packages/types/src/node/api.ts b/packages/types/src/node/api.ts index c4f71f64..97c43ee9 100644 --- a/packages/types/src/node/api.ts +++ b/packages/types/src/node/api.ts @@ -1,5 +1,5 @@ import { ts } from ".."; -import { UserOperationStruct } from "../executor/contracts/EntryPoint"; +import { UserOperationStruct } from "../contracts/EPv6/EntryPoint"; export interface INodeAPI { publishVerifiedUserOperation( diff --git a/test/docker-compose.yml b/test/docker-compose.yml index 160e05b4..3c3adbc5 100644 --- a/test/docker-compose.yml +++ b/test/docker-compose.yml @@ -4,24 +4,6 @@ version: '2' services: - - bundler: - ports: [ '3000:14337' ] - image: etherspot/skandha - command: start --testingMode - volumes: - - ./config.json:/usr/app/config.json - - mem_limit: 300M - logging: - driver: "json-file" - options: - max-size: 10m - max-file: "10" - depends_on: - geth-dev: - condition: service_started - geth-dev: build: geth-dev ports: [ '8545:8545' ] \ No newline at end of file diff --git a/test/geth-dev/Dockerfile b/test/geth-dev/Dockerfile index b7c5fa5d..476ab5e2 100644 --- a/test/geth-dev/Dockerfile +++ b/test/geth-dev/Dockerfile @@ -1,4 +1,4 @@ -FROM ethereum/client-go:release-1.10 +FROM ethereum/client-go:release-1.13 ENTRYPOINT geth \ --verbosity 1 \ @@ -13,4 +13,4 @@ ENTRYPOINT geth \ --allow-insecure-unlock \ --rpc.allow-unprotected-txs \ --dev.gaslimit 20000000 \ - --ignore-legacy-receipts + --rpc.txfeecap 100