From 82adfde4fc26cc9feecfef55d602dc168a454d93 Mon Sep 17 00:00:00 2001 From: marie-fourier Date: Thu, 1 Feb 2024 16:15:06 +0500 Subject: [PATCH 01/12] wip: support ep v7 --- .../api/src/dto/EstimateUserOperation.dto.ts | 65 +- packages/api/src/dto/SendUserOperation.dto.ts | 58 +- packages/executor/src/config.ts | 19 +- .../executor/src/entities/MempoolEntry.ts | 13 +- packages/executor/src/entities/interfaces.ts | 14 +- packages/executor/src/executor.ts | 7 + packages/executor/src/interfaces.ts | 4 +- packages/executor/src/modules/eth.ts | 66 +- packages/executor/src/modules/interfaces.ts | 36 +- packages/executor/src/modules/skandha.ts | 91 +- .../services/BundlingService/relayers/base.ts | 2 + .../BundlingService/relayers/classic.ts | 15 +- .../BundlingService/relayers/flashbots.ts | 15 +- .../src/services/BundlingService/service.ts | 12 +- .../BundlingService/utils/getUserOpHashes.ts | 38 - .../services/BundlingService/utils/index.ts | 1 - .../src/services/EntryPointService/index.ts | 1 + .../services/EntryPointService/interfaces.ts | 5 + .../src/services/EntryPointService/service.ts | 139 ++ .../services/EntryPointService/utils/index.ts | 1 + .../utils/packedUserOpUtils.ts | 135 ++ .../EntryPointService/versions/0.0.6.ts | 93 ++ .../EntryPointService/versions/0.0.7.ts | 102 ++ .../EntryPointService/versions/base.ts | 21 + .../EntryPointService/versions/index.ts | 3 + .../executor/src/services/MempoolService.ts | 1 - packages/executor/src/services/P2PService.ts | 2 +- .../src/services/UserOpValidation/service.ts | 30 +- .../src/services/UserOpValidation/utils.ts | 43 - .../UserOpValidation/validators/estimation.ts | 203 +-- .../UserOpValidation/validators/unsafe.ts | 19 +- packages/executor/src/services/index.ts | 1 + packages/types/src/api/interfaces.ts | 2 +- .../EPv6}/EntryPoint.ts | 0 .../EPv6}/EtherspotAccount.ts | 0 .../EPv6}/EtherspotAccountFactory.ts | 0 .../contracts => contracts/EPv6}/IAccount.ts | 0 .../EPv6}/IAggregatedAccount.ts | 0 .../EPv6}/IAggregator.ts | 0 .../EPv6}/IMulticall3.ts | 0 .../EPv6}/IPaymaster.ts | 0 .../EPv6}/SenderCreator.ts | 0 .../EPv6}/StakeManager.ts | 0 .../EPv6}/VerifyingPaymaster.ts | 0 .../contracts => contracts/EPv6}/common.ts | 0 .../EPv6}/factories/EntryPoint__factory.ts | 0 .../EtherspotAccountFactory__factory.ts | 0 .../factories/EtherspotAccount__factory.ts | 0 .../EPv6}/factories/IAccount__factory.ts | 0 .../factories/IAggregatedAccount__factory.ts | 0 .../EPv6}/factories/IAggregator__factory.ts | 0 .../EPv6}/factories/IMulticall3__factory.ts | 0 .../EPv6}/factories/IPaymaster__factory.ts | 0 .../EPv6}/factories/SenderCreator__factory.ts | 0 .../EPv6}/factories/StakeManager__factory.ts | 0 .../EPv6}/factories/index.ts | 0 .../contracts => contracts/EPv6}/index.ts | 0 packages/types/src/contracts/EPv7/common.ts | 46 + .../src/contracts/EPv7/core/BaseAccount.ts | 188 +++ .../src/contracts/EPv7/core/BasePaymaster.ts | 509 ++++++ .../src/contracts/EPv7/core/EntryPoint.ts | 1168 ++++++++++++++ .../EPv7/core/EntryPointSimulations.ts | 1392 +++++++++++++++++ .../src/contracts/EPv7/core/NonceManager.ts | 186 +++ .../src/contracts/EPv7/core/SenderCreator.ts | 105 ++ .../src/contracts/EPv7/core/StakeManager.ts | 515 ++++++ .../contracts/EPv7/core/UserOperationLib.ts | 146 ++ .../types/src/contracts/EPv7/core/index.ts | 11 + .../factories/core/BaseAccount__factory.ts | 133 ++ .../factories/core/BasePaymaster__factory.ts | 298 ++++ .../core/EntryPointSimulations__factory.ts | 1377 ++++++++++++++++ .../factories/core/EntryPoint__factory.ts | 1047 +++++++++++++ .../factories/core/NonceManager__factory.ts | 87 ++ .../factories/core/SenderCreator__factory.ts | 82 + .../factories/core/StakeManager__factory.ts | 311 ++++ .../core/UserOperationLib__factory.ts | 102 ++ .../contracts/EPv7/factories/core/index.ts | 11 + .../src/contracts/EPv7/factories/index.ts | 7 + .../interfaces/IAccountExecute__factory.ts | 96 ++ .../factories/interfaces/IAccount__factory.ts | 107 ++ .../interfaces/IAggregator__factory.ts | 238 +++ .../IEntryPointSimulations__factory.ts | 1113 +++++++++++++ .../interfaces/IEntryPoint__factory.ts | 811 ++++++++++ .../interfaces/INonceManager__factory.ts | 63 + .../interfaces/IPaymaster__factory.ts | 140 ++ .../interfaces/IStakeManager__factory.ts | 268 ++++ .../EPv7/factories/interfaces/index.ts | 11 + .../factories/samples/IOracle__factory.ts | 45 + .../samples/LegacyTokenPaymaster__factory.ts | 728 +++++++++ .../samples/SimpleAccountFactory__factory.ts | 144 ++ .../samples/SimpleAccount__factory.ts | 605 +++++++ .../samples/TokenPaymaster__factory.ts | 893 +++++++++++ .../samples/VerifyingPaymaster__factory.ts | 513 ++++++ .../samples/bls/BLSAccountFactory__factory.ts | 148 ++ .../samples/bls/BLSAccount__factory.ts | 661 ++++++++ .../bls/BLSSignatureAggregator__factory.ts | 612 ++++++++ .../samples/bls/IBLSAccount__factory.ts | 139 ++ .../EPv7/factories/samples/bls/index.ts | 8 + .../callback/TokenCallbackHandler__factory.ts | 161 ++ .../EPv7/factories/samples/callback/index.ts | 4 + .../contracts/EPv7/factories/samples/index.ts | 12 + .../samples/utils/IOracle__factory.ts | 72 + .../samples/utils/OracleHelper__factory.ts | 96 ++ .../samples/utils/UniswapHelper__factory.ts | 144 ++ .../EPv7/factories/samples/utils/index.ts | 6 + packages/types/src/contracts/EPv7/index.ts | 9 + .../src/contracts/EPv7/interfaces/IAccount.ts | 157 ++ .../EPv7/interfaces/IAccountExecute.ts | 148 ++ .../contracts/EPv7/interfaces/IAggregator.ts | 219 +++ .../contracts/EPv7/interfaces/IEntryPoint.ts | 927 +++++++++++ .../EPv7/interfaces/IEntryPointSimulations.ts | 1102 +++++++++++++ .../EPv7/interfaces/INonceManager.ts | 144 ++ .../contracts/EPv7/interfaces/IPaymaster.ts | 212 +++ .../EPv7/interfaces/IStakeManager.ts | 459 ++++++ .../src/contracts/EPv7/interfaces/index.ts | 11 + .../src/contracts/EPv7/samples/IOracle.ts | 104 ++ .../EPv7/samples/LegacyTokenPaymaster.ts | 887 +++++++++++ .../contracts/EPv7/samples/SimpleAccount.ts | 766 +++++++++ .../EPv7/samples/SimpleAccountFactory.ts | 173 ++ .../contracts/EPv7/samples/TokenPaymaster.ts | 1005 ++++++++++++ .../EPv7/samples/VerifyingPaymaster.ts | 628 ++++++++ .../contracts/EPv7/samples/bls/BLSAccount.ts | 972 ++++++++++++ .../EPv7/samples/bls/BLSAccountFactory.ts | 239 +++ .../samples/bls/BLSSignatureAggregator.ts | 449 ++++++ .../contracts/EPv7/samples/bls/IBLSAccount.ts | 216 +++ .../src/contracts/EPv7/samples/bls/index.ts | 9 + .../samples/callback/TokenCallbackHandler.ts | 284 ++++ .../contracts/EPv7/samples/callback/index.ts | 4 + .../types/src/contracts/EPv7/samples/index.ts | 15 + .../contracts/EPv7/samples/utils/IOracle.ts | 132 ++ .../EPv7/samples/utils/OracleHelper.ts | 182 +++ .../EPv7/samples/utils/UniswapHelper.ts | 228 +++ .../src/contracts/EPv7/samples/utils/index.ts | 6 + packages/types/src/contracts/UserOperation.ts | 41 + packages/types/src/node/api.ts | 2 +- 134 files changed, 26070 insertions(+), 476 deletions(-) delete mode 100644 packages/executor/src/services/BundlingService/utils/getUserOpHashes.ts create mode 100644 packages/executor/src/services/EntryPointService/index.ts create mode 100644 packages/executor/src/services/EntryPointService/interfaces.ts create mode 100644 packages/executor/src/services/EntryPointService/service.ts create mode 100644 packages/executor/src/services/EntryPointService/utils/index.ts create mode 100644 packages/executor/src/services/EntryPointService/utils/packedUserOpUtils.ts create mode 100644 packages/executor/src/services/EntryPointService/versions/0.0.6.ts create mode 100644 packages/executor/src/services/EntryPointService/versions/0.0.7.ts create mode 100644 packages/executor/src/services/EntryPointService/versions/base.ts create mode 100644 packages/executor/src/services/EntryPointService/versions/index.ts rename packages/types/src/{executor/contracts => contracts/EPv6}/EntryPoint.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/EtherspotAccount.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/EtherspotAccountFactory.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/IAccount.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/IAggregatedAccount.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/IAggregator.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/IMulticall3.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/IPaymaster.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/SenderCreator.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/StakeManager.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/VerifyingPaymaster.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/common.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/factories/EntryPoint__factory.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/factories/EtherspotAccountFactory__factory.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/factories/EtherspotAccount__factory.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/factories/IAccount__factory.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/factories/IAggregatedAccount__factory.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/factories/IAggregator__factory.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/factories/IMulticall3__factory.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/factories/IPaymaster__factory.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/factories/SenderCreator__factory.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/factories/StakeManager__factory.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/factories/index.ts (100%) rename packages/types/src/{executor/contracts => contracts/EPv6}/index.ts (100%) create mode 100644 packages/types/src/contracts/EPv7/common.ts create mode 100644 packages/types/src/contracts/EPv7/core/BaseAccount.ts create mode 100644 packages/types/src/contracts/EPv7/core/BasePaymaster.ts create mode 100644 packages/types/src/contracts/EPv7/core/EntryPoint.ts create mode 100644 packages/types/src/contracts/EPv7/core/EntryPointSimulations.ts create mode 100644 packages/types/src/contracts/EPv7/core/NonceManager.ts create mode 100644 packages/types/src/contracts/EPv7/core/SenderCreator.ts create mode 100644 packages/types/src/contracts/EPv7/core/StakeManager.ts create mode 100644 packages/types/src/contracts/EPv7/core/UserOperationLib.ts create mode 100644 packages/types/src/contracts/EPv7/core/index.ts create mode 100644 packages/types/src/contracts/EPv7/factories/core/BaseAccount__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/core/BasePaymaster__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/core/EntryPointSimulations__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/core/EntryPoint__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/core/NonceManager__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/core/SenderCreator__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/core/StakeManager__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/core/UserOperationLib__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/core/index.ts create mode 100644 packages/types/src/contracts/EPv7/factories/index.ts create mode 100644 packages/types/src/contracts/EPv7/factories/interfaces/IAccountExecute__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/interfaces/IAccount__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/interfaces/IAggregator__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/interfaces/IEntryPointSimulations__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/interfaces/IEntryPoint__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/interfaces/INonceManager__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/interfaces/IPaymaster__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/interfaces/IStakeManager__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/interfaces/index.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/IOracle__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/LegacyTokenPaymaster__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/SimpleAccountFactory__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/SimpleAccount__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/TokenPaymaster__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/VerifyingPaymaster__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccountFactory__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccount__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/bls/BLSSignatureAggregator__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/bls/IBLSAccount__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/bls/index.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/callback/TokenCallbackHandler__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/callback/index.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/index.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/utils/IOracle__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/utils/OracleHelper__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/utils/UniswapHelper__factory.ts create mode 100644 packages/types/src/contracts/EPv7/factories/samples/utils/index.ts create mode 100644 packages/types/src/contracts/EPv7/index.ts create mode 100644 packages/types/src/contracts/EPv7/interfaces/IAccount.ts create mode 100644 packages/types/src/contracts/EPv7/interfaces/IAccountExecute.ts create mode 100644 packages/types/src/contracts/EPv7/interfaces/IAggregator.ts create mode 100644 packages/types/src/contracts/EPv7/interfaces/IEntryPoint.ts create mode 100644 packages/types/src/contracts/EPv7/interfaces/IEntryPointSimulations.ts create mode 100644 packages/types/src/contracts/EPv7/interfaces/INonceManager.ts create mode 100644 packages/types/src/contracts/EPv7/interfaces/IPaymaster.ts create mode 100644 packages/types/src/contracts/EPv7/interfaces/IStakeManager.ts create mode 100644 packages/types/src/contracts/EPv7/interfaces/index.ts create mode 100644 packages/types/src/contracts/EPv7/samples/IOracle.ts create mode 100644 packages/types/src/contracts/EPv7/samples/LegacyTokenPaymaster.ts create mode 100644 packages/types/src/contracts/EPv7/samples/SimpleAccount.ts create mode 100644 packages/types/src/contracts/EPv7/samples/SimpleAccountFactory.ts create mode 100644 packages/types/src/contracts/EPv7/samples/TokenPaymaster.ts create mode 100644 packages/types/src/contracts/EPv7/samples/VerifyingPaymaster.ts create mode 100644 packages/types/src/contracts/EPv7/samples/bls/BLSAccount.ts create mode 100644 packages/types/src/contracts/EPv7/samples/bls/BLSAccountFactory.ts create mode 100644 packages/types/src/contracts/EPv7/samples/bls/BLSSignatureAggregator.ts create mode 100644 packages/types/src/contracts/EPv7/samples/bls/IBLSAccount.ts create mode 100644 packages/types/src/contracts/EPv7/samples/bls/index.ts create mode 100644 packages/types/src/contracts/EPv7/samples/callback/TokenCallbackHandler.ts create mode 100644 packages/types/src/contracts/EPv7/samples/callback/index.ts create mode 100644 packages/types/src/contracts/EPv7/samples/index.ts create mode 100644 packages/types/src/contracts/EPv7/samples/utils/IOracle.ts create mode 100644 packages/types/src/contracts/EPv7/samples/utils/OracleHelper.ts create mode 100644 packages/types/src/contracts/EPv7/samples/utils/UniswapHelper.ts create mode 100644 packages/types/src/contracts/EPv7/samples/utils/index.ts create mode 100644 packages/types/src/contracts/UserOperation.ts diff --git a/packages/api/src/dto/EstimateUserOperation.dto.ts b/packages/api/src/dto/EstimateUserOperation.dto.ts index c505be9f..feaa796c 100644 --- a/packages/api/src/dto/EstimateUserOperation.dto.ts +++ b/packages/api/src/dto/EstimateUserOperation.dto.ts @@ -3,6 +3,7 @@ import { IsEthereumAddress, IsObject, IsString, + ValidateIf, ValidateNested, } from "class-validator"; import { BigNumberish, BytesLike } from "ethers"; @@ -10,16 +11,16 @@ 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 +30,62 @@ export class EstimateUserOperationStruct { @IsBigNumber() maxPriorityFeePerGas?: BigNumberish; @IsString() - @IsCallData() - paymasterAndData?: BytesLike; + callData!: BytesLike; @IsString() signature!: BytesLike; + + /** + * EntryPoint v6 Properties + */ + @ValidateIf((o) => o.paymasterData) + @IsString() + @IsCallData() + initCode!: BytesLike; + + @ValidateIf((o) => o.paymasterData) + @IsString() + @IsCallData() + paymasterAndData!: BytesLike; + + /** + * EntryPoint v7 Properties + */ + /** + * EntryPoint v7 Properties + */ + @ValidateIf((o) => o.paymasterAndData) + @IsString() + factory!: string; + + @ValidateIf((o) => o.paymasterAndData) + @IsCallData() + @IsString() + factoryData!: BytesLike; + + @ValidateIf((o) => o.paymasterAndData) + @IsString() + paymaster!: string; + + @ValidateIf((o) => o.paymasterAndData) + @IsBigNumber() + paymasterVerificationGasLimit!: BigNumberish; + + @ValidateIf((o) => o.paymasterAndData) @IsBigNumber() - callGasLimit!: BigNumberish; + paymasterPostOpGasLimit!: BigNumberish; + + @ValidateIf((o) => o.paymasterAndData) + @IsCallData() + @IsString() + 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..95c2d361 100644 --- a/packages/api/src/dto/SendUserOperation.dto.ts +++ b/packages/api/src/dto/SendUserOperation.dto.ts @@ -3,6 +3,7 @@ import { IsEthereumAddress, IsObject, IsString, + ValidateIf, ValidateNested, } from "class-validator"; import { BigNumberish, BytesLike } from "ethers"; @@ -10,16 +11,16 @@ 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 +30,57 @@ export class SendUserOperationStruct { @IsBigNumber() maxPriorityFeePerGas!: BigNumberish; @IsString() + callData!: BytesLike; + @IsString() + signature!: BytesLike; + + /** + * EntryPoint v6 Properties + */ + @ValidateIf((o) => o.paymasterData) + @IsString() + @IsCallData() + initCode!: BytesLike; + + @ValidateIf((o) => o.paymasterData) + @IsString() @IsCallData() paymasterAndData!: BytesLike; + + /** + * EntryPoint v7 Properties + */ + @ValidateIf((o) => o.paymasterAndData) @IsString() - signature!: BytesLike; + factory!: string; + + @ValidateIf((o) => o.paymasterAndData) + @IsString() + factoryData!: BytesLike; + + @ValidateIf((o) => o.paymasterAndData) + @IsString() + paymaster!: string; + + @ValidateIf((o) => o.paymasterAndData) @IsBigNumber() - callGasLimit!: BigNumberish; + paymasterVerificationGasLimit!: BigNumberish; + + @ValidateIf((o) => o.paymasterAndData) + @IsBigNumber() + paymasterPostOpGasLimit!: BigNumberish; + + @ValidateIf((o) => o.paymasterAndData) + @IsString() + paymasterData!: BytesLike; } export class SendUserOperationGasArgs { @IsDefined() @IsObject() @ValidateNested() - @Type(() => SendUserOperationStruct) - userOp!: SendUserOperationStruct; + @Type(() => SendUserOperation) + userOp!: SendUserOperation; @IsEthereumAddress() entryPoint!: string; diff --git a/packages/executor/src/config.ts b/packages/executor/src/config.ts index a6056792..ab670d91 100644 --- a/packages/executor/src/config.ts +++ b/packages/executor/src/config.ts @@ -66,18 +66,29 @@ export class Config { } isEntryPointSupported(entryPoint: string): boolean { - return !!this.config.entryPoints.some( + const ep6 = this.config.entryPointsV6 || []; + const ep7 = this.config.entryPointsV7 || []; + return [...ep6, ...ep7].some( (addr) => addr.toLowerCase() === entryPoint.toLowerCase() ); } private getDefaultNetworkConfig(config: NetworkConfig | null): NetworkConfig { if (config == null) config = {} as NetworkConfig; - config.entryPoints = fromEnvVar( - "ENTRYPOINTS", - config.entryPoints, + config.entryPointsV6 = fromEnvVar( + "EP6", + config.entryPointsV6 || [], true ) as string[]; + config.entryPointsV7 = fromEnvVar( + "EP7", + config.entryPointsV7 || [], + true + ) as string[]; + config.entryPointV7Simulation = fromEnvVar( + "EP7_SIMULATION", + config.entryPointV7Simulation || "" + ) as string; config.relayers = fromEnvVar("RELAYERS", config.relayers, true) as string[]; diff --git a/packages/executor/src/entities/MempoolEntry.ts b/packages/executor/src/entities/MempoolEntry.ts index 68bea07b..77943f25 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 { UserOperation6And7 } from "types/lib/contracts/UserOperation"; import { now } from "../utils"; import { IMempoolEntry, MempoolEntrySerialized } from "./interfaces"; export class MempoolEntry implements IMempoolEntry { chainId: number; - userOp: UserOperationStruct; + userOp: UserOperation6And7; entryPoint: string; prefund: BigNumberish; aggregator?: string; @@ -38,7 +38,7 @@ export class MempoolEntry implements IMempoolEntry { submitAttempts, }: { chainId: number; - userOp: UserOperationStruct; + userOp: UserOperation6And7; entryPoint: string; prefund: BigNumberish; aggregator?: string | undefined; @@ -175,6 +175,13 @@ export class MempoolEntry implements IMempoolEntry { 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..ff28d4ff 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 { UserOperation6And7 } 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: UserOperation6And7; entryPoint: string; prefund: BigNumberish; aggregator?: string; @@ -23,15 +23,21 @@ export interface MempoolEntrySerialized { userOp: { sender: string; nonce: string; - initCode: BytesLike; + initCode?: BytesLike; callData: BytesLike; callGasLimit: string; verificationGasLimit: string; preVerificationGas: string; maxFeePerGas: string; maxPriorityFeePerGas: string; - paymasterAndData: BytesLike; + 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..4a27caa0 100644 --- a/packages/executor/src/executor.ts +++ b/packages/executor/src/executor.ts @@ -12,6 +12,7 @@ import { ReputationService, P2PService, EventsService, + EntryPointService, } from "./services"; import { Config } from "./config"; import { BundlingMode, GetNodeAPI, NetworkConfig } from "./interfaces"; @@ -42,6 +43,7 @@ export class Executor { public eth: Eth; public skandha: Skandha; + public entryPointService: EntryPointService; public bundlingService: BundlingService; public mempoolService: MempoolService; public userOpValidationService: UserOpValidationService; @@ -66,6 +68,11 @@ export class Executor { this.provider = this.config.getNetworkProvider(); + this.entryPointService = new EntryPointService( + this.config, + this.networkConfig, + this.provider + ); this.reputationService = new ReputationService( this.db, this.chainId, diff --git a/packages/executor/src/interfaces.ts b/packages/executor/src/interfaces.ts index f90dd277..5fb58222 100644 --- a/packages/executor/src/interfaces.ts +++ b/packages/executor/src/interfaces.ts @@ -74,7 +74,9 @@ export type BundlingMode = "auto" | "manual"; export type GetNodeAPI = () => INodeAPI | null; export interface NetworkConfig { - entryPoints: string[]; + entryPointsV6?: string[]; + entryPointsV7?: string[]; + entryPointV7Simulation?: string; relayers: string[]; beneficiary: string; rpcEndpoint: string; diff --git a/packages/executor/src/modules/eth.ts b/packages/executor/src/modules/eth.ts index 9e47faae..08781618 100644 --- a/packages/executor/src/modules/eth.ts +++ b/packages/executor/src/modules/eth.ts @@ -2,17 +2,11 @@ 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, @@ -22,9 +16,16 @@ import { } from "params/lib"; import { Logger } from "types/lib"; import { PerChainMetrics } from "monitoring/lib"; +import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperationStruct } from "types/lib/contracts/EPv6/EntryPoint"; import { deepHexlify, packUserOp } from "../utils"; -import { UserOpValidationService, MempoolService } from "../services"; +import { + UserOpValidationService, + MempoolService, + EntryPointService, +} from "../services"; import { GetNodeAPI, Log, NetworkConfig } from "../interfaces"; +import { EntryPointVersion } from "../services/EntryPointService/interfaces"; import { EstimateUserOperationGasArgs, SendUserOperationGasArgs, @@ -37,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, @@ -67,7 +69,7 @@ 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 userOp = args.userOp as unknown as UserOperation6And7; const entryPoint = args.entryPoint; if (!this.validateEntryPoint(entryPoint)) { throw new RpcError("Invalid Entrypoint", RpcErrorCodes.INVALID_REQUEST); @@ -83,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, @@ -104,18 +105,23 @@ export class Eth { this.metrics?.useropsInMempool.inc(); try { - const nodeApi = this.getNodeAPI(); - if (nodeApi != null) { + if ( + this.entryPointService.getEntryPointVersion(entryPoint) === + EntryPointVersion.SIX + ) { const nodeApi = this.getNodeAPI(); - const blockNumber = await this.provider.getBlockNumber(); // TODO: fetch blockNumber from simulateValidation - const chainId = await this.getChainId(); - await nodeApi!.publishUserOpsWithEntryPointJSON( - entryPoint, - chainId, - [userOp], - blockNumber.toString() - ); - this.metrics?.useropsSent?.inc(); + if (nodeApi != null) { + const nodeApi = this.getNodeAPI(); + const blockNumber = await this.provider.getBlockNumber(); // TODO: fetch blockNumber from simulateValidation + const chainId = await this.getChainId(); + await nodeApi!.publishUserOpsWithEntryPointJSON( + entryPoint, + chainId, + [userOp as UserOperationStruct], + blockNumber.toString() + ); + this.metrics?.useropsSent?.inc(); + } } } catch (err) { this.logger.debug(`Could not send userop over gossipsub: ${err}`); @@ -140,8 +146,7 @@ export class Eth { throw new RpcError("Invalid Entrypoint", RpcErrorCodes.INVALID_REQUEST); } - const userOpComplemented: UserOperationStruct = { - paymasterAndData: userOp.paymasterAndData ?? "0x", + const userOpComplemented: UserOperation6And7 = { ...userOp, callGasLimit: BigNumber.from(10e6), preVerificationGas: BigNumber.from(1e6), @@ -196,7 +201,7 @@ export class Eth { //> // Binary search gas limits - const userOpToEstimate: UserOperationStruct = { + const userOpToEstimate: UserOperation6And7 = { ...userOpComplemented, preVerificationGas, verificationGasLimit, @@ -407,18 +412,11 @@ 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 - ); + return this.entryPointService.isEntryPointSupported(entryPoint); } static DefaultGasOverheads = { diff --git a/packages/executor/src/modules/interfaces.ts b/packages/executor/src/modules/interfaces.ts index 164f4c33..51f0bbf4 100644 --- a/packages/executor/src/modules/interfaces.ts +++ b/packages/executor/src/modules/interfaces.ts @@ -1,41 +1,13 @@ -import { BigNumberish, BytesLike } from "ethers"; +import { UserOperation6And7 } 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!: UserOperation6And7; 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!: UserOperation6And7; entryPoint!: string; } @@ -51,6 +23,6 @@ export class SetReputationArgs { } export class SetMempoolArgs { - userOps!: SendUserOperationStruct[]; + userOps!: UserOperation6And7[]; entryPoint!: string; } diff --git a/packages/executor/src/modules/skandha.ts b/packages/executor/src/modules/skandha.ts index decc2461..83a93035 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: [], beneficiary: this.networkConfig.beneficiary, relayers: walletAddresses, minInclusionDenominator: BigNumber.from( @@ -140,43 +142,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..c19757f5 100644 --- a/packages/executor/src/services/BundlingService/relayers/base.ts +++ b/packages/executor/src/services/BundlingService/relayers/base.ts @@ -9,6 +9,7 @@ import { MempoolEntry } from "../../../entities/MempoolEntry"; import { getAddr, 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 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..7f92f128 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, @@ -23,6 +22,7 @@ import { UserOpValidationService } from "../UserOpValidation"; import { mergeStorageMap } from "../../utils/mergeStorageMap"; import { getAddr, 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 @@ -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/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..fd4f953b --- /dev/null +++ b/packages/executor/src/services/EntryPointService/interfaces.ts @@ -0,0 +1,5 @@ +export enum EntryPointVersion { + SIX = 6, + SEVEN = 7, + UNKNOWN = 0, +} diff --git a/packages/executor/src/services/EntryPointService/service.ts b/packages/executor/src/services/EntryPointService/service.ts new file mode 100644 index 00000000..b02b2562 --- /dev/null +++ b/packages/executor/src/services/EntryPointService/service.ts @@ -0,0 +1,139 @@ +/* eslint-disable @typescript-eslint/strict-boolean-expressions */ +import { BigNumber, providers } from "ethers"; +import { + UserOperation, + UserOperation6And7, +} from "types/lib/contracts/UserOperation"; +import { Config } from "../../config"; +import { NetworkConfig } from "../../interfaces"; +import { + EntryPointV7Service, + EntryPointV6Service, + IEntryPointService, +} from "./versions"; +import { EntryPointVersion } from "./interfaces"; + +export class EntryPointService { + private entryPoints: { + [address: string]: IEntryPointService; + } = {}; + + constructor( + private config: Config, + private networkConfig: NetworkConfig, + private provider: providers.JsonRpcProvider + ) { + if (networkConfig.entryPointsV6) { + for (const addr of networkConfig.entryPointsV6) { + this.entryPoints[addr.toLowerCase()] = new EntryPointV6Service( + addr, + this.networkConfig, + this.provider + ); + } + } + + if (networkConfig.entryPointsV7) { + if (!networkConfig.entryPointV7Simulation) + throw new Error("EntryPointV7Simulation not provided"); + + for (const addr of networkConfig.entryPointsV7) { + this.entryPoints[addr.toLowerCase()] = new EntryPointV7Service( + addr, + networkConfig.entryPointV7Simulation, + this.networkConfig, + this.provider + ); + } + } + } + + 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; + } + const epService = this.entryPoints[entryPoint]; + if (epService instanceof EntryPointV6Service) { + return EntryPointVersion.SIX; + } + return EntryPointVersion.SEVEN; + } + + getEntryPoint(entryPoint: string): IEntryPointService { + return this.entryPoints[entryPoint]; + } + + 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: UserOperation6And7 + ): Promise { + return await this.entryPoints[entryPoint.toLowerCase()].simulateHandleOp( + userOp + ); + } + + async simulateValidation( + entryPoint: string, + userOp: UserOperation6And7 + ): Promise { + return await this.entryPoints[entryPoint.toLowerCase()].simulateValidation( + userOp + ); + } + + encodeHandleOps( + entryPoint: string, + userOps: UserOperation6And7[], + beneficiary: string + ): string { + return this.entryPoints[entryPoint.toLowerCase()].encodeHandleOps( + userOps, + beneficiary + ); + } + + encodeSimulateHandleOp( + entryPoint: string, + userOp: UserOperation6And7, + target: string, + targetCallData: string + ): string { + return this.entryPoints[entryPoint.toLowerCase()].encodeSimulateHandleOp( + userOp, + target, + targetCallData + ); + } + + encodeSimulateValidation( + entryPoint: string, + userOp: UserOperation6And7 + ): string { + return this.entryPoints[entryPoint.toLowerCase()].encodeSimulateValidation( + userOp + ); + } +} 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..ce9c416c --- /dev/null +++ b/packages/executor/src/services/EntryPointService/utils/packedUserOpUtils.ts @@ -0,0 +1,135 @@ +import { BigNumberish, BigNumber, BytesLike, ethers } from "ethers"; +import { + hexZeroPad, + hexDataLength, + hexDataSlice, + hexConcat, +} from "ethers/lib/utils"; +import { PackedUserOperationStruct } from "types/lib/contracts/EPv7/core/EntryPoint"; +import { UserOperation } from "types/lib/contracts/UserOperation"; + +export function packAccountGasLimits( + validationGasLimit: BigNumberish, + callGasLimit: BigNumberish +): string { + return hexZeroPad( + BigNumber.from(validationGasLimit).shl(128).add(callGasLimit).toHexString(), + 32 + ); +} + +export function unpackAccountGasLimits(accountGasLimits: BytesLike): { + verificationGasLimit: BigNumber; + callGasLimit: BigNumber; +} { + const limits: BigNumber = BigNumber.from(accountGasLimits); + return { + verificationGasLimit: limits.shr(128), + callGasLimit: limits.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, + packAccountGasLimits(paymasterVerificationGasLimit, postOpGasLimit), + paymasterData ?? "0x", + ]); +} + +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 { + verificationGasLimit: paymasterVerificationGas, + callGasLimit: postOpGasLimit, + } = unpackAccountGasLimits(hexDataSlice(paymasterAndData, 20, 52)); + return { + paymaster: hexDataSlice(paymasterAndData, 0, 20), + paymasterVerificationGas, + postOpGasLimit, + paymasterData: hexDataSlice(paymasterAndData, 52), + }; +} + +export function packUserOp(op: UserOperation): PackedUserOperationStruct { + 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: packAccountGasLimits( + op.verificationGasLimit, + op.callGasLimit + ), + preVerificationGas: BigNumber.from(op.preVerificationGas).toHexString(), + maxFeePerGas: BigNumber.from(op.maxFeePerGas).toHexString(), + maxPriorityFeePerGas: BigNumber.from(op.maxPriorityFeePerGas).toHexString(), + paymasterAndData, + signature: op.signature, + }; +} + +export function unpackUserOp(packed: PackedUserOperationStruct): UserOperation { + const { callGasLimit, verificationGasLimit } = unpackAccountGasLimits( + packed.accountGasLimits + ); + let ret: UserOperation = { + sender: packed.sender, + nonce: packed.nonce, + callData: packed.callData, + preVerificationGas: packed.preVerificationGas, + verificationGasLimit, + callGasLimit, + maxFeePerGas: packed.maxFeePerGas, + maxPriorityFeePerGas: packed.maxFeePerGas, + 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; +} diff --git a/packages/executor/src/services/EntryPointService/versions/0.0.6.ts b/packages/executor/src/services/EntryPointService/versions/0.0.6.ts new file mode 100644 index 00000000..09db3df4 --- /dev/null +++ b/packages/executor/src/services/EntryPointService/versions/0.0.6.ts @@ -0,0 +1,93 @@ +import { + UserOperationStruct, + IEntryPoint, +} from "types/lib/contracts/EPv6/EntryPoint"; +import { IEntryPoint__factory } from "types/lib/contracts/EPv6"; +import { providers } from "ethers"; +import { AddressZero, BytesZero } from "params/lib"; +import { NetworkConfig } from "../../../interfaces"; +import { IEntryPointService } from "./base"; + +export class EntryPointV6Service implements IEntryPointService { + contract: IEntryPoint; + + constructor( + public address: string, + private networkConfig: NetworkConfig, + private provider: providers.JsonRpcProvider + ) { + this.contract = IEntryPoint__factory.connect(address, provider); + } + + async getUserOperationHash(userOp: UserOperationStruct): Promise { + return await this.contract.getUserOpHash(userOp); + } + + async simulateHandleOp(userOp: UserOperationStruct): Promise { + return await this.contract + .simulateHandleOp(userOp, AddressZero, BytesZero) + .catch((err) => this.nonGethErrorHandler(err)); + } + + async simulateValidation(userOp: UserOperationStruct): Promise { + return await this.contract + .simulateValidation(userOp, { + gasLimit: this.networkConfig.validationGasLimit, + }) + .catch((err) => this.nonGethErrorHandler(err)); + } + + encodeHandleOps(userOps: UserOperationStruct[], beneficiary: string): string { + return this.contract.interface.encodeFunctionData("handleOps", [ + userOps, + beneficiary, + ]); + } + + encodeSimulateHandleOp( + userOp: UserOperationStruct, + target: string, + targetCallData: string + ): string { + return this.contract.interface.encodeFunctionData("simulateHandleOp", [ + userOp, + target, + targetCallData, + ]); + } + + encodeSimulateValidation(userOp: UserOperationStruct): string { + return this.contract.interface.encodeFunctionData("simulateValidation", [ + userOp, + ]); + } + + 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 */ + } + return errorResult; + } +} 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..7e2be17b --- /dev/null +++ b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts @@ -0,0 +1,102 @@ +import { EntryPoint } from "types/lib/contracts/EPv7/core/EntryPoint"; +import { EntryPointSimulations } from "types/lib/contracts/EPv7/core/EntryPointSimulations"; +import { + EntryPoint__factory, + EntryPointSimulations__factory, +} from "types/lib/contracts/EPv7/factories/core"; +import { providers } from "ethers"; +import { UserOperation } from "types/lib/contracts/UserOperation"; +import { AddressZero, BytesZero } from "params/lib"; +import { packUserOp } from "../utils"; +import { NetworkConfig } from "../../../interfaces"; +import { IEntryPointService } from "./base"; + +export class EntryPointV7Service implements IEntryPointService { + contract: EntryPoint; + simulationContract: EntryPointSimulations; + + constructor( + public address: string, + public simulationAddress: string, + private networkConfig: NetworkConfig, + private provider: providers.JsonRpcProvider + ) { + this.contract = EntryPoint__factory.connect(address, provider); + this.simulationContract = EntryPointSimulations__factory.connect( + simulationAddress, + provider + ); + } + + async getUserOperationHash(userOp: UserOperation): Promise { + return await this.contract.getUserOpHash(packUserOp(userOp)); + } + + async simulateHandleOp(userOp: UserOperation): Promise { + return await this.simulationContract + .simulateHandleOp(packUserOp(userOp), AddressZero, BytesZero) + .catch((err) => this.nonGethErrorHandler(err)); + } + + async simulateValidation(userOp: UserOperation): Promise { + return await this.simulationContract + .simulateValidation(packUserOp(userOp), { + gasLimit: this.networkConfig.validationGasLimit, + }) + .catch((err) => this.nonGethErrorHandler(err)); + } + + encodeHandleOps(userOps: UserOperation[], beneficiary: string): string { + return this.contract.interface.encodeFunctionData("handleOps", [ + userOps.map(packUserOp), + beneficiary, + ]); + } + + encodeSimulateHandleOp( + userOp: UserOperation, + target: string, + targetCallData: string + ): string { + return this.simulationContract.interface.encodeFunctionData( + "simulateHandleOp", + [packUserOp(userOp), target, targetCallData] + ); + } + + encodeSimulateValidation(userOp: UserOperation): string { + return this.simulationContract.interface.encodeFunctionData( + "simulateValidation", + [packUserOp(userOp)] + ); + } + + 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 */ + } + return errorResult; + } +} 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..82b8b5a7 --- /dev/null +++ b/packages/executor/src/services/EntryPointService/versions/base.ts @@ -0,0 +1,21 @@ +import { IEntryPoint as IEntryPointV6 } from "types/lib/contracts/EPv6"; +import { EntryPoint as IEntryPointV7 } from "types/lib/contracts/EPv7/core/EntryPoint"; +import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; + +export interface IEntryPointService { + readonly contract: IEntryPointV6 | IEntryPointV7; + readonly address: string; + + getUserOperationHash(userOp: UserOperation6And7): Promise; + + simulateHandleOp(userOp: UserOperation6And7): Promise; + simulateValidation(userOp: UserOperation6And7): Promise; + + encodeHandleOps(userOps: UserOperation6And7[], beneficiary: string): string; + encodeSimulateHandleOp( + userOp: UserOperation6And7, + target: string, + targetCallData: string + ): string; + encodeSimulateValidation(userOp: UserOperation6And7): string; +} 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..a5bd428b --- /dev/null +++ b/packages/executor/src/services/EntryPointService/versions/index.ts @@ -0,0 +1,3 @@ +export * from "./0.0.6"; +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..14292e46 100644 --- a/packages/executor/src/services/MempoolService.ts +++ b/packages/executor/src/services/MempoolService.ts @@ -2,7 +2,6 @@ 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, diff --git a/packages/executor/src/services/P2PService.ts b/packages/executor/src/services/P2PService.ts index af3be416..87a0614f 100644 --- a/packages/executor/src/services/P2PService.ts +++ b/packages/executor/src/services/P2PService.ts @@ -1,4 +1,4 @@ -import { UserOperationStruct } from "types/lib/executor/contracts/EntryPoint"; +import { UserOperationStruct } from "types/lib/contracts/EPv6/EntryPoint"; import { MempoolService } from "./MempoolService"; export type PooledUserOpHashesResponse = { diff --git a/packages/executor/src/services/UserOpValidation/service.ts b/packages/executor/src/services/UserOpValidation/service.ts index 5f91f2b9..574d42d7 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 { UserOperation6And7 } from "types/lib/contracts/UserOperation"; import { Config } from "../../config"; import { ExecutionResult, @@ -49,14 +49,14 @@ export class UserOpValidationService { } async validateForEstimation( - userOp: UserOperationStruct, + userOp: UserOperation6And7, entryPoint: string ): Promise { return await this.estimationService.estimateUserOp(userOp, entryPoint); } async validateForEstimationWithSignature( - userOp: UserOperationStruct, + userOp: UserOperation6And7, entryPoint: string ): Promise { return await this.unsafeValidationService.validateUnsafely( @@ -66,7 +66,7 @@ export class UserOpValidationService { } async simulateValidation( - userOp: UserOperationStruct, + userOp: UserOperation6And7, entryPoint: string, codehash?: string ): Promise { @@ -83,7 +83,7 @@ export class UserOpValidationService { ); } - async validateGasFee(userOp: UserOperationStruct): Promise { + async validateGasFee(userOp: UserOperation6And7): Promise { const block = await this.provider.getBlock("latest"); const { baseFeePerGas } = block; let { maxFeePerGas, maxPriorityFeePerGas } = userOp; @@ -108,24 +108,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..85111f26 100644 --- a/packages/executor/src/services/UserOpValidation/utils.ts +++ b/packages/executor/src/services/UserOpValidation/utils.ts @@ -17,38 +17,6 @@ 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 } @@ -137,17 +105,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: diff --git a/packages/executor/src/services/UserOpValidation/validators/estimation.ts b/packages/executor/src/services/UserOpValidation/validators/estimation.ts index 5ced7d69..f07dd5e8 100644 --- a/packages/executor/src/services/UserOpValidation/validators/estimation.ts +++ b/packages/executor/src/services/UserOpValidation/validators/estimation.ts @@ -1,57 +1,27 @@ -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 { UserOperation6And7 } 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"; 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: UserOperation6And7, entryPoint: string ): Promise { - const entryPointContract = IEntryPoint__factory.connect( + const errorResult = await this.entryPointService.simulateHandleOp( entryPoint, - this.provider + userOp ); - 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), @@ -65,155 +35,4 @@ export class EstimationService { 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( - entryPoint, - this.provider - ); - - 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); - } - - 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/unsafe.ts b/packages/executor/src/services/UserOpValidation/validators/unsafe.ts index 63641301..97864181 100644 --- a/packages/executor/src/services/UserOpValidation/validators/unsafe.ts +++ b/packages/executor/src/services/UserOpValidation/validators/unsafe.ts @@ -1,31 +1,26 @@ -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 { UserOperation6And7 } from "types/lib/contracts/UserOperation"; import { NetworkConfig, UserOpValidationResult } from "../../../interfaces"; -import { nonGethErrorHandler, parseErrorResult } from "../utils"; +import { 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: UserOperation6And7, entryPoint: string ): Promise { - const { validationGasLimit } = this.networkConfig; - const entryPointContract = IEntryPoint__factory.connect( + const errorResult = await this.entryPointService.simulateValidation( entryPoint, - this.provider + userOp ); - const errorResult = await entryPointContract.callStatic - .simulateValidation(userOp, { - gasLimit: validationGasLimit, - }) - .catch((e: any) => nonGethErrorHandler(entryPointContract, e)); return parseErrorResult(userOp, errorResult); } } diff --git a/packages/executor/src/services/index.ts b/packages/executor/src/services/index.ts index 0dc88f4e..51233155 100644 --- a/packages/executor/src/services/index.ts +++ b/packages/executor/src/services/index.ts @@ -4,3 +4,4 @@ export * from "./BundlingService"; export * from "./ReputationService"; export * from "./EventsService"; export * from "./P2PService"; +export * from "./EntryPointService"; diff --git a/packages/types/src/api/interfaces.ts b/packages/types/src/api/interfaces.ts index 42bd8aa5..82d78dda 100644 --- a/packages/types/src/api/interfaces.ts +++ b/packages/types/src/api/interfaces.ts @@ -1,5 +1,5 @@ import { BigNumberish, providers } from "ethers"; -import { UserOperationStruct } from "../executor/contracts/EntryPoint"; +import { UserOperationStruct } from "../contracts/EPv6/EntryPoint"; import { IWhitelistedEntities } from "../executor"; export type EstimatedUserOperationGas = 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/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/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/common.ts b/packages/types/src/contracts/EPv7/common.ts new file mode 100644 index 00000000..2fa9b74c --- /dev/null +++ b/packages/types/src/contracts/EPv7/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; // deleted Promise on purpose 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..603933dc --- /dev/null +++ b/packages/types/src/contracts/EPv7/core/BaseAccount.ts @@ -0,0 +1,188 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + paymasterAndData: string; + signature: string; +}; + +export interface BaseAccountInterface extends utils.Interface { + functions: { + "entryPoint()": FunctionFragment; + "getNonce()": FunctionFragment; + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,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..138f9f98 --- /dev/null +++ b/packages/types/src/contracts/EPv7/core/BasePaymaster.ts @@ -0,0 +1,509 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + 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,uint256,uint256,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..66bd3cce --- /dev/null +++ b/packages/types/src/contracts/EPv7/core/EntryPoint.ts @@ -0,0 +1,1168 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + 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,uint256,uint256,bytes,bytes))": FunctionFragment; + "handleAggregatedOps(((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)": FunctionFragment; + "handleOps((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,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; + "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: "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 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; + + "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..2e2ad3cf --- /dev/null +++ b/packages/types/src/contracts/EPv7/core/EntryPointSimulations.ts @@ -0,0 +1,1392 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + 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,uint256,uint256,bytes,bytes))": FunctionFragment; + "handleAggregatedOps(((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)": FunctionFragment; + "handleOps((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,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,uint256,uint256,bytes,bytes),address,bytes)": FunctionFragment; + "simulateValidation((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,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; + "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: "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 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; + + "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..7e408b65 --- /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..77ec8c1e --- /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..c98c4540 --- /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..505033e0 --- /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..05aec576 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/core/BaseAccount__factory.ts @@ -0,0 +1,133 @@ +/* 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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..03b57116 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/core/BasePaymaster__factory.ts @@ -0,0 +1,298 @@ +/* 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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..7aee60a6 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/core/EntryPointSimulations__factory.ts @@ -0,0 +1,1377 @@ +/* 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", + }, + { + 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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 = + "0x60a06040526040516200001290620000f2565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b0390811660805260408051808201825260008082528251808401909352808352602080840191825282018390529051600380546001600160a01b031916919094161790925551600455516005553480156200009157600080fd5b50600160025560644310620000ec5760405162461bcd60e51b815260206004820152601660248201527f73686f756c64206e6f74206265206465706c6f79656400000000000000000000604482015260640160405180910390fd5b62000100565b61023380620052d883390190565b6080516151bf62000119600039600050506151bf6000f3fe60806040526004361061016d5760003560e01c806370a08231116100cb578063b760faf91161007f578063d5dfedfc11610059578063d5dfedfc146105ac578063ea8ad612146105d9578063fc7e286d146105f957600080fd5b8063b760faf914610564578063bb9fe6bf14610577578063c23a5cea1461058c57600080fd5b8063850aaf62116100b0578063850aaf6214610504578063957122ab146105245780639b249f691461054457600080fd5b806370a082311461049457806373e3259f146104d757600080fd5b80631b2e01b81161012257806335567e1a1161010757806335567e1a146102905780635287ce12146103255780636b21db511461047457600080fd5b80631b2e01b814610238578063205c28781461027057600080fd5b806302101e491161015357806302101e49146101e55780630396cb60146102055780630bd28e3b1461021857600080fd5b806242dc531461018257806301ffc9a7146101b557600080fd5b3661017d5761017b336106cb565b005b600080fd5b34801561018e57600080fd5b506101a261019d366004614143565b6106ec565b6040519081526020015b60405180910390f35b3480156101c157600080fd5b506101d56101d0366004614209565b6108b9565b60405190151581526020016101ac565b3480156101f157600080fd5b506101a2610200366004614264565b610a36565b61017b610213366004614299565b610a78565b34801561022457600080fd5b5061017b6102333660046142e7565b610e0e565b34801561024457600080fd5b506101a2610253366004614302565b600160209081526000928352604080842090915290825290205481565b34801561027c57600080fd5b5061017b61028b366004614337565b610e56565b34801561029c57600080fd5b506101a26102ab366004614302565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff8516845290915290819020549082901b7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000161792915050565b34801561033157600080fd5b50610412610340366004614363565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525073ffffffffffffffffffffffffffffffffffffffff1660009081526020818152604091829020825160a0810184528154815260019091015460ff811615159282019290925261010082046dffffffffffffffffffffffffffff16928101929092526f01000000000000000000000000000000810463ffffffff166060830152730100000000000000000000000000000000000000900465ffffffffffff16608082015290565b6040516101ac9190600060a082019050825182526020830151151560208301526dffffffffffffffffffffffffffff604084015116604083015263ffffffff606084015116606083015265ffffffffffff608084015116608083015292915050565b34801561048057600080fd5b5061017b61048f3660046143c5565b611000565b3480156104a057600080fd5b506101a26104af366004614363565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b3480156104e357600080fd5b506104f76104f236600461441c565b61117d565b6040516101ac91906144ec565b34801561051057600080fd5b5061017b61051f36600461453b565b6112c9565b34801561053057600080fd5b5061017b61053f366004614590565b61136e565b34801561055057600080fd5b5061017b61055f366004614615565b6114c6565b61017b610572366004614363565b6106cb565b34801561058357600080fd5b5061017b6115b1565b34801561059857600080fd5b5061017b6105a7366004614363565b611791565b3480156105b857600080fd5b506105cc6105c7366004614264565b611a7e565b6040516101ac9190614657565b3480156105e557600080fd5b5061017b6105f43660046143c5565b611d82565b34801561060557600080fd5b50610681610614366004614363565b6000602081905290815260409020805460019091015460ff81169061010081046dffffffffffffffffffffffffffff16906f01000000000000000000000000000000810463ffffffff1690730100000000000000000000000000000000000000900465ffffffffffff1685565b6040805195865293151560208601526dffffffffffffffffffffffffffff9092169284019290925263ffffffff909116606083015265ffffffffffff16608082015260a0016101ac565b60015b60058110156106df576001016106ce565b6106e88261222e565b5050565b6000805a9050333014610760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c7900000000000000000060448201526064015b60405180910390fd5b8451606081015160a082015181016127100160405a603f028161078557610785614737565b0410156107b6577fdeaddead0000000000000000000000000000000000000000000000000000000060005260206000fd5b8751600090156108575760006107d3846000015160008c86612284565b9050806108555760006107e761080061229c565b80519091501561084f57846000015173ffffffffffffffffffffffffffffffffffffffff168a602001517f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a201876020015184604051610846929190614766565b60405180910390a35b60019250505b505b600088608001515a86030190506108a96000838b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508892506122c8915050565b955050505050505b949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6c393cb700000000000000000000000000000000000000000000000000000000148061094c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d95230100000000000000000000000000000000000000000000000000000000145b8061099857507fffffffff0000000000000000000000000000000000000000000000000000000082167fcf28ef9700000000000000000000000000000000000000000000000000000000145b806109e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f3e84f02100000000000000000000000000000000000000000000000000000000145b80610a3057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610a4182612582565b6040805160208101929092523090820152466060820152608001604051602081830303815290604052805190602001209050919050565b33600090815260208190526040902063ffffffff8216610af4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152606401610757565b600181015463ffffffff6f0100000000000000000000000000000090910481169083161015610b7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152606401610757565b6001810154600090610ba790349061010090046dffffffffffffffffffffffffffff166147ae565b905060008111610c13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152606401610757565b6dffffffffffffffffffffffffffff811115610c8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152606401610757565b6040805160a08101825283548152600160208083018281526dffffffffffffffffffffffffffff86811685870190815263ffffffff8a811660608801818152600060808a0181815233808352828a52918c90209a518b55965199909801805494519151965165ffffffffffff16730100000000000000000000000000000000000000027fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff979094166f0100000000000000000000000000000002969096167fffffffffffffff00000000000000000000ffffffffffffffffffffffffffffff91909516610100027fffffffffffffffffffffffffffffffffff0000000000000000000000000000ff991515999099167fffffffffffffffffffffffffffffffffff00000000000000000000000000000090941693909317979097179190911691909117179055835185815290810192909252917fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01910160405180910390a2505050565b33600090815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff851684529091528120805491610e4e836147c1565b919050555050565b3360009081526020819052604090208054821115610ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152606401610757565b8054610edd9083906147f9565b81556040805173ffffffffffffffffffffffffffffffffffffffff851681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb910160405180910390a260008373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114610f8a576040519150601f19603f3d011682016040523d82523d6000602084013e610f8f565b606091505b5050905080610ffa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152606401610757565b50505050565b61100861259b565b8160008167ffffffffffffffff81111561102457611024613ed6565b60405190808252806020026020018201604052801561105d57816020015b61104a613d2a565b8152602001906001900390816110425790505b50905060005b828110156110d657600082828151811061107f5761107f61480c565b602002602001015190506000806110ba848a8a878181106110a2576110a261480c565b90506020028101906110b4919061483b565b856125dc565b915091506110cb8483836000612850565b505050600101611063565b506040516000907fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972908290a160005b8381101561116057611154818888848181106111235761112361480c565b9050602002810190611135919061483b565b8584815181106111475761114761480c565b6020026020010151612aa5565b90910190600101611105565b5061116b8482612e11565b5050506111786001600255565b505050565b6111b86040518060c0016040528060008152602001600081526020016000815260200160008152602001600015158152602001606081525090565b6111c061259b565b6111c8613d2a565b6111d186612f58565b6000806111e0600089856125dc565b9150915060006111f260008a86612aa5565b90506000606073ffffffffffffffffffffffffffffffffffffffff8a1615611284578973ffffffffffffffffffffffffffffffffffffffff16898960405161123b929190614879565b6000604051808303816000865af19150503d8060008114611278576040519150601f19603f3d011682016040523d82523d6000602084013e61127d565b606091505b5090925090505b6040518060c001604052808760800151815260200184815260200186815260200185815260200183151581526020018281525096505050505050506108b16001600255565b6000808473ffffffffffffffffffffffffffffffffffffffff1684846040516112f3929190614879565b600060405180830381855af49150503d806000811461132e576040519150601f19603f3d011682016040523d82523d6000602084013e611333565b606091505b509150915081816040517f99410554000000000000000000000000000000000000000000000000000000008152600401610757929190614889565b83158015611391575073ffffffffffffffffffffffffffffffffffffffff83163b155b156113f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f41413230206163636f756e74206e6f74206465706c6f796564000000000000006044820152606401610757565b6014811061148a57600061140f60148284866148a4565b611418916148ce565b60601c9050803b600003611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f41413330207061796d6173746572206e6f74206465706c6f79656400000000006044820152606401610757565b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610757565b60006114e760065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663570e1a3684846040518363ffffffff1660e01b815260040161152192919061495f565b6020604051808303816000875af1158015611540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115649190614973565b6040517f6ca7b80600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152909150602401610757565b336000908152602081905260408120600181015490916f0100000000000000000000000000000090910463ffffffff169003611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152606401610757565b600181015460ff166116b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152606401610757565b60018101546000906116e2906f01000000000000000000000000000000900463ffffffff1642614990565b6001830180547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001673010000000000000000000000000000000000000065ffffffffffff84169081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169190911790915560405190815290915033907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a906020015b60405180910390a25050565b336000908152602081905260409020600181015461010090046dffffffffffffffffffffffffffff1680611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152606401610757565b6001820154730100000000000000000000000000000000000000900465ffffffffffff166118ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152606401610757565b60018201544273010000000000000000000000000000000000000090910465ffffffffffff161115611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152606401610757565b6001820180547fffffffffffffff000000000000000000000000000000000000000000000000ff1690556040805173ffffffffffffffffffffffffffffffffffffffff851681526020810183905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda3910160405180910390a260008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611a0e576040519150601f19603f3d011682016040523d82523d6000602084013e611a13565b606091505b5050905080610ffa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152606401610757565b611a86613ddc565b611a8e613d2a565b611a9783612f58565b600080611aa6600086856125dc565b845160e001516040805180820182526000808252602080830182815273ffffffffffffffffffffffffffffffffffffffff95861683528282528483206001908101546dffffffffffffffffffffffffffff6101008083048216885263ffffffff6f010000000000000000000000000000009384900481169095528e51518951808b018b5288815280880189815291909b168852878752898820909401549081049091168952049091169052835180850190945281845283015293955091935090366000611b7660408b018b6149b6565b909250905060006014821015611b8d576000611ba8565b611b9b6014600084866148a4565b611ba4916148ce565b60601c5b6040805180820182526000808252602080830182815273ffffffffffffffffffffffffffffffffffffffff86168352908290529290206001015461010081046dffffffffffffffffffffffffffff1682526f01000000000000000000000000000000900463ffffffff169091529091509350505050600085905060006040518060a001604052808960800151815260200189604001518152602001888152602001878152602001611c5a8a6060015190565b905260408051808201825260035473ffffffffffffffffffffffffffffffffffffffff908116825282518084019093526004548352600554602084810191909152820192909252919250831615801590611ccb575060018373ffffffffffffffffffffffffffffffffffffffff1614155b15611d4f5760408051808201825273ffffffffffffffffffffffffffffffffffffffff851680825282518084018452600080825260208083018281529382528181529490206001015461010081046dffffffffffffffffffffffffffff1682526f01000000000000000000000000000000900463ffffffff16909152909182015290505b6040805160a081018252928352602083019590955293810192909252506060810192909252608082015295945050505050565b611d8a61259b565b816000805b82811015611f7c5736868683818110611daa57611daa61480c565b9050602002810190611dbc9190614a1b565b9050366000611dcb8380614a4f565b90925090506000611de26040850160208601614363565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff821601611e83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152606401610757565b73ffffffffffffffffffffffffffffffffffffffff811615611f605773ffffffffffffffffffffffffffffffffffffffff811663fe96cf238484611eca60408901896149b6565b6040518563ffffffff1660e01b8152600401611ee99493929190614c13565b60006040518083038186803b158015611f0157600080fd5b505afa925050508015611f12575060015b611f60576040517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610757565b611f6a82876147ae565b95505060019093019250611d8f915050565b5060008167ffffffffffffffff811115611f9857611f98613ed6565b604051908082528060200260200182016040528015611fd157816020015b611fbe613d2a565b815260200190600190039081611fb65790505b5090506000805b848110156120ae5736888883818110611ff357611ff361480c565b90506020028101906120059190614a1b565b90503660006120148380614a4f565b9092509050600061202b6040850160208601614363565b90508160005b8181101561209c57600089898151811061204d5761204d61480c565b602002602001015190506000806120708b8989878181106110a2576110a261480c565b9150915061208084838389612850565b8a61208a816147c1565b9b505060019093019250612031915050565b505060019094019350611fd892505050565b506040517fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f97290600090a150600080805b858110156121e957368989838181106120f9576120f961480c565b905060200281019061210b9190614a1b565b905061211d6040820160208301614363565b73ffffffffffffffffffffffffffffffffffffffff167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d60405160405180910390a236600061216c8380614a4f565b90925090508060005b818110156121d8576121b7888585848181106121935761219361480c565b90506020028101906121a5919061483b565b8b8b815181106111475761114761480c565b6121c190886147ae565b9650876121cd816147c1565b985050600101612175565b5050600190930192506120de915050565b506040516000907f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d908290a261221f8682612e11565b50505050506111786001600255565b600061223a8234613147565b90508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c48260405161178591815260200190565b6000806000845160208601878987f195945050505050565b60603d828111156122aa5750815b604051602082018101604052818152816000602083013e9392505050565b6000805a8551909150600090816122de82613187565b60e083015190915073ffffffffffffffffffffffffffffffffffffffff811661230a5782519350612405565b80935060008851111561240557868202955060028a600281111561233057612330614cca565b146124055760a08301516040517f7c627b2100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691637c627b2191612392908e908d908c908990600401614cf9565b600060405180830381600088803b1580156123ac57600080fd5b5087f1935050505080156123be575060015b6124055760006123cf61080061229c565b9050806040517fad7954bc0000000000000000000000000000000000000000000000000000000081526004016107579190614d5c565b5a60a0840151606085015160808c015192880399909901980190880380821115612438576064600a828403020498909801975b5050818702955085896040015110156124b5578a6040517f220266b600000000000000000000000000000000000000000000000000000000815260040161075791815260406020808301829052908201527f414135312070726566756e642062656c6f772061637475616c476173436f7374606082015260800190565b60408901518690036124c78582613147565b506000808c60028111156124dd576124dd614cca565b1490508460e0015173ffffffffffffffffffffffffffffffffffffffff16856000015173ffffffffffffffffffffffffffffffffffffffff168c602001517f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f8860200151858d8f60405161256a949392919093845291151560208401526040830152606082015260800190565b60405180910390a45050505050505095945050505050565b600061258d826131b1565b805190602001209050919050565b60028054036125d6576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b60008060005a84519091506125f18682613282565b6125fa86610a36565b85602001818152505060008660e001358760c001358360a001518460800151856060015186604001518760c0015117171717171790506effffffffffffffffffffffffffffff80168111156126ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152606401610757565b60006126da8360c081015160a08201516080830151606084015160408501516101009095015194010101010290565b90506126e8898989846133d2565b95506126fc83600001518460200151613615565b61276b57886040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601a908201527f4141323520696e76616c6964206163636f756e74206e6f6e6365000000000000606082015260800190565b60e083015160609073ffffffffffffffffffffffffffffffffffffffff161561279f5761279a8a8a8a85613670565b965090505b60005a860390508085608001518660400151011015612823578a6040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601e908201527f41413430206f76657220766572696669636174696f6e4761734c696d69740000606082015260800190565b604089018390528160608a015260a08a01355a870301896080018181525050505050505050935093915050565b60008061285c85613831565b915091508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146128fe57856040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526014908201527f41413234207369676e6174757265206572726f72000000000000000000000000606082015260800190565b801561296f57856040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526017908201527f414132322065787069726564206f72206e6f7420647565000000000000000000606082015260800190565b600061297a85613831565b9250905073ffffffffffffffffffffffffffffffffffffffff811615612a0557866040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526014908201527f41413334207369676e6174757265206572726f72000000000000000000000000606082015260800190565b8115612a9c57866040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526021908201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560608201527f6500000000000000000000000000000000000000000000000000000000000000608082015260a00190565b50505050505050565b6000805a90506000612ab8846060015190565b6040519091506000903682612ad060608a018a6149b6565b9150915060606000826003811115612ae757843591505b507fe752d1ee000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601612c275760008b8b60200151604051602401612b4a929190614d6f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18ad2e12000000000000000000000000000000000000000000000000000000001790525190915030906242dc5390612bdd9084908f908d90602401614e55565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050925050612c9e565b3073ffffffffffffffffffffffffffffffffffffffff166242dc5385858d8b604051602401612c599493929190614e95565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505091505b602060008351602085016000305af19550600051985084604052505050505080612e075760003d80602003612cd95760206000803e60005191505b507fdeaddead000000000000000000000000000000000000000000000000000000008103612d6c57876040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052600f908201527f41413935206f7574206f66206761730000000000000000000000000000000000606082015260800190565b8551805160208089015192015173ffffffffffffffffffffffffffffffffffffffff90911691907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f479290612dc061080061229c565b604051612dce929190614766565b60405180910390a3600086608001515a612de890876147f9565b612df291906147ae565b9050612e028960028987856122c8565b955050505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8216612e8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152606401610757565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612ee8576040519150601f19603f3d011682016040523d82523d6000602084013e612eed565b606091505b5050905080611178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152606401610757565b6130586040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f01000000000000000000000000000000000000000000000000000000000000006036820152600090603701604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529190528051602090910120600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905550565b3063957122ab61306b60408401846149b6565b6130786020860186614363565b6130866101008701876149b6565b6040518663ffffffff1660e01b81526004016130a6959493929190614ecc565b60006040518083038186803b1580156130be57600080fd5b505afa9250505080156130cf575060015b613144576130db614f1b565b806308c379a00361313857506130ef614f37565b806130fa575061313a565b8051156106e8576000816040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757929190614766565b505b3d6000803e3d6000fd5b50565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054829061317b9085906147ae565b91829055509392505050565b610100810151610120820151600091908082036131a5575092915050565b6108b182488301613884565b60608135602083013560006131d16131cc60408701876149b6565b61389c565b905060006131e56131cc60608801886149b6565b9050608086013560a087013560c088013560e0890135600061320e6131cc6101008d018d6149b6565b6040805173ffffffffffffffffffffffffffffffffffffffff9b909b1660208c01528a81019990995260608a019790975250608088019490945260a087019290925260c086015260e08501526101008401526101208084019190915281518084039091018152610140909201905292915050565b61328f6020830183614363565b73ffffffffffffffffffffffffffffffffffffffff168152602082810135908201526fffffffffffffffffffffffffffffffff60808084013591821660608401521c604082015260a082013560c0808301919091528201356101008083019190915260e0830135610120830152369060009061330d908501856149b6565b909250905080156133b7576034811015613383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152606401610757565b61338d82826138af565b60a0860152608085015273ffffffffffffffffffffffffffffffffffffffff1660e0840152610ffa565b600060e084018190526080840181905260a084015250505050565b81518051600091906133f187866133ec60408a018a6149b6565b613920565b60e0820151600073ffffffffffffffffffffffffffffffffffffffff821661344f5773ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548681116134485780870361344b565b60005b9150505b604080850151602089015191517f8803e45100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861692638803e45192916134ae918d918790600401614fdf565b60206040518083038160008887f193505050508015613508575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261350591810190615004565b60015b61354c578861351861080061229c565b6040517f65c8fd4d00000000000000000000000000000000000000000000000000000000815260040161075792919061501d565b945073ffffffffffffffffffffffffffffffffffffffff82166136095773ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020805480881115613603578a6040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526017908201527f41413231206469646e2774207061792070726566756e64000000000000000000606082015260800190565b87900390555b50505050949350505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832084821c808552925282208054849167ffffffffffffffff8316919085613662836147c1565b909155501495945050505050565b815160e081015173ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604081208054606094929391908681101561371857896040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601e908201527f41413331207061796d6173746572206465706f73697420746f6f206c6f770000606082015260800190565b8681038255608084015160208901516040517f703ae88f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169263703ae88f92909161377d918e918d90600401614fdf565b60006040518083038160008887f1935050505080156137dc57506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526137d9919081019061506a565b60015b61382057896137ec61080061229c565b6040517f65c8fd4d0000000000000000000000000000000000000000000000000000000081526004016107579291906150f6565b909b909a5098505050505050505050565b6000808260000361384757506000928392509050565b600061385284613cac565b9050806040015165ffffffffffff164211806138795750806020015165ffffffffffff1642105b905194909350915050565b60008183106138935781613895565b825b9392505050565b6000604051828085833790209392505050565b600080806138c060148286886148a4565b6138c9916148ce565b60601c6138da6024601487896148a4565b6138e391615143565b60801c6138f460346024888a6148a4565b6138fd91615143565b9194506fffffffffffffffffffffffffffffffff16925060801c90509250925092565b8015610ffa5782515173ffffffffffffffffffffffffffffffffffffffff81163b156139b157846040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601f908201527f414131302073656e64657220616c726561647920636f6e737472756374656400606082015260800190565b60006139d260065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663570e1a3686600001516040015186866040518463ffffffff1660e01b8152600401613a1592919061495f565b60206040518083038160008887f1158015613a34573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a599190614973565b905073ffffffffffffffffffffffffffffffffffffffff8116613ae157856040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601b908201527f4141313320696e6974436f6465206661696c6564206f72204f4f470000000000606082015260800190565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613b7e57856040517f220266b600000000000000000000000000000000000000000000000000000000815260040161075791815260406020808301829052908201527f4141313420696e6974436f6465206d7573742072657475726e2073656e646572606082015260800190565b8073ffffffffffffffffffffffffffffffffffffffff163b600003613c0757856040517f220266b600000000000000000000000000000000000000000000000000000000815260040161075791815260406020808301829052908201527f4141313520696e6974436f6465206d757374206372656174652073656e646572606082015260800190565b6000613c1660148286886148a4565b613c1f916148ce565b60601c90508273ffffffffffffffffffffffffffffffffffffffff1686602001517fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d83896000015160e00151604051613c9b92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b60405180910390a350505050505050565b60408051606081018252600080825260208201819052918101919091528160a081901c65ffffffffffff8116600003613ce8575065ffffffffffff5b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff909316835260d09490941c602083015265ffffffffffff16928101929092525090565b6040518060a00160405280613db7604051806101400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b8152602001600080191681526020016000815260200160008152602001600081525090565b6040518060a00160405280613e196040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b8152602001613e3b604051806040016040528060008152602001600081525090565b8152602001613e5d604051806040016040528060008152602001600081525090565b8152602001613e7f604051806040016040528060008152602001600081525090565b8152602001613e8c613e91565b905290565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001613e8c604051806040016040528060008152602001600081525090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810181811067ffffffffffffffff82111715613f2557613f25613ed6565b60405250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715613f6f57613f6f613ed6565b6040525050565b604051610140810167ffffffffffffffff81118282101715613f9a57613f9a613ed6565b60405290565b600067ffffffffffffffff821115613fba57613fba613ed6565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461314457600080fd5b803561401381613fe6565b919050565b60008183036101c081121561402c57600080fd5b60405161403881613f05565b8092506101408083121561404b57600080fd5b614053613f76565b925061405e85614008565b83526020850135602084015260408501356040840152606085013560608401526080850135608084015260a085013560a084015260c085013560c08401526140a860e08601614008565b60e084015261010085810135908401526101208086013590840152918152908301356020820152610160830135604082015261018083013560608201526101a090920135608090920191909152919050565b60008083601f84011261410c57600080fd5b50813567ffffffffffffffff81111561412457600080fd5b60208301915083602082850101111561413c57600080fd5b9250929050565b600080600080610200858703121561415a57600080fd5b843567ffffffffffffffff8082111561417257600080fd5b818701915087601f83011261418657600080fd5b813561419181613fa0565b60405161419e8282613f2b565b8281528a60208487010111156141b357600080fd5b826020860160208301376000602084830101528098505050506141d98860208901614018565b94506101e08701359150808211156141f057600080fd5b506141fd878288016140fa565b95989497509550505050565b60006020828403121561421b57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461389557600080fd5b6000610140828403121561425e57600080fd5b50919050565b60006020828403121561427657600080fd5b813567ffffffffffffffff81111561428d57600080fd5b6108b18482850161424b565b6000602082840312156142ab57600080fd5b813563ffffffff8116811461389557600080fd5b803577ffffffffffffffffffffffffffffffffffffffffffffffff8116811461401357600080fd5b6000602082840312156142f957600080fd5b613895826142bf565b6000806040838503121561431557600080fd5b823561432081613fe6565b915061432e602084016142bf565b90509250929050565b6000806040838503121561434a57600080fd5b823561435581613fe6565b946020939093013593505050565b60006020828403121561437557600080fd5b813561389581613fe6565b60008083601f84011261439257600080fd5b50813567ffffffffffffffff8111156143aa57600080fd5b6020830191508360208260051b850101111561413c57600080fd5b6000806000604084860312156143da57600080fd5b833567ffffffffffffffff8111156143f157600080fd5b6143fd86828701614380565b909450925050602084013561441181613fe6565b809150509250925092565b6000806000806060858703121561443257600080fd5b843567ffffffffffffffff8082111561444a57600080fd5b6144568883890161424b565b95506020870135915061446882613fe6565b909350604086013590808211156141f057600080fd5b60005b83811015614499578181015183820152602001614481565b50506000910152565b600081518084526144ba81602086016020860161447e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152815160208201526020820151604082015260408201516060820152606082015160808201526080820151151560a0820152600060a083015160c0808401526108b160e08401826144a2565b60008060006040848603121561455057600080fd5b833561455b81613fe6565b9250602084013567ffffffffffffffff81111561457757600080fd5b614583868287016140fa565b9497909650939450505050565b6000806000806000606086880312156145a857600080fd5b853567ffffffffffffffff808211156145c057600080fd5b6145cc89838a016140fa565b9097509550602088013591506145e182613fe6565b909350604087013590808211156145f757600080fd5b50614604888289016140fa565b969995985093965092949392505050565b6000806020838503121561462857600080fd5b823567ffffffffffffffff81111561463f57600080fd5b61464b858286016140fa565b90969095509350505050565b602080825282516101408383015280516101608401529081015161018083015260408101516101a083015260608101516101c08301526080015160a06101e08301526000906146aa6102008401826144a2565b905060208401516146c8604085018280518252602090810151910152565b506040840151805160808581019190915260209182015160a08601526060860151805160c087015282015160e0860152850151805173ffffffffffffffffffffffffffffffffffffffff1661010086015280820151805161012087015290910151610140850152509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8281526040602082015260006108b160408301846144a2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610a3057610a3061477f565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147f2576147f261477f565b5060010190565b81810381811115610a3057610a3061477f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec183360301811261486f57600080fd5b9190910192915050565b8183823760009101908152919050565b82151581526040602082015260006108b160408301846144a2565b600080858511156148b457600080fd5b838611156148c157600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000813581811691601485101561490e5780818660140360031b1b83161692505b505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006108b1602083018486614916565b60006020828403121561498557600080fd5b815161389581613fe6565b65ffffffffffff8181168382160190808211156149af576149af61477f565b5092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126149eb57600080fd5b83018035915067ffffffffffffffff821115614a0657600080fd5b60200191503681900382131561413c57600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261486f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a8457600080fd5b83018035915067ffffffffffffffff821115614a9f57600080fd5b6020019150600581901b360382131561413c57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614aec57600080fd5b830160208101925035905067ffffffffffffffff811115614b0c57600080fd5b80360382131561413c57600080fd5b6000610140614b4784614b2d85614008565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208301356020850152614b5e6040840184614ab7565b826040870152614b718387018284614916565b92505050614b826060840184614ab7565b8583036060870152614b95838284614916565b925050506080830135608085015260a083013560a085015260c083013560c085015260e083013560e0850152610100614bd081850185614ab7565b86840383880152614be2848284614916565b9350505050610120614bf681850185614ab7565b86840383880152614c08848284614916565b979650505050505050565b6040808252810184905260006060600586901b830181019083018783805b89811015614cb3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec18c3603018112614c91578283fd5b614c9d868d8301614b1b565b9550506020938401939290920191600101614c31565b505050508281036020840152614c08818587614916565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060038610614d32577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b85825260806020830152614d4960808301866144a2565b6040830194909452506060015292915050565b60208152600061389560208301846144a2565b604081526000614d826040830185614b1b565b90508260208301529392505050565b8051805173ffffffffffffffffffffffffffffffffffffffff1683526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c084015260e0810151614e1060e085018273ffffffffffffffffffffffffffffffffffffffff169052565b5061010081810151908401526101209081015190830152602081015161014083015260408101516101608301526060810151610180830152608001516101a090910152565b6000610200808352614e69818401876144a2565b9050614e786020840186614d91565b8281036101e0840152614e8b81856144a2565b9695505050505050565b6000610200808352614eaa8184018789614916565b9050614eb96020840186614d91565b8281036101e0840152614c0881856144a2565b606081526000614ee0606083018789614916565b73ffffffffffffffffffffffffffffffffffffffff861660208401528281036040840152614f0f818587614916565b98975050505050505050565b600060033d1115614f345760046000803e5060005160e01c5b90565b600060443d1015614f455790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff8160248401118184111715614f9357505050505090565b8285019150815181811115614fab5750505050505090565b843d8701016020828501011115614fc55750505050505090565b614fd460208286010187613f2b565b509095945050505050565b606081526000614ff26060830186614b1b565b60208301949094525060400152919050565b60006020828403121561501657600080fd5b5051919050565b82815260606020820152600d60608201527f4141323320726576657274656400000000000000000000000000000000000000608082015260a0604082015260006108b160a08301846144a2565b6000806040838503121561507d57600080fd5b825167ffffffffffffffff81111561509457600080fd5b8301601f810185136150a557600080fd5b80516150b081613fa0565b6040516150bd8282613f2b565b8281528760208486010111156150d257600080fd5b6150e383602083016020870161447e565b6020969096015195979596505050505050565b82815260606020820152600d60608201527f4141333320726576657274656400000000000000000000000000000000000000608082015260a0604082015260006108b160a08301846144a2565b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000813581811691601085101561490e5760109490940360031b84901b169092169291505056fea26469706673582212205dd851229a159a5fc6fb90631555676c166d87d1b98af57452e19ebd56c1ec2f64736f6c63430008170033608060405234801561001057600080fd5b50610213806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063570e1a3614610030575b600080fd5b61004361003e3660046100f9565b61006c565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60008061007c601482858761016b565b61008591610195565b60601c90506000610099846014818861016b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525084519495509360209350849250905082850182875af190506000519350806100f057600093505b50505092915050565b6000806020838503121561010c57600080fd5b823567ffffffffffffffff8082111561012457600080fd5b818501915085601f83011261013857600080fd5b81358181111561014757600080fd5b86602082850101111561015957600080fd5b60209290920196919550909350505050565b6000808585111561017b57600080fd5b8386111561018857600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156101d55780818660140360031b1b83161692505b50509291505056fea264697066735822122066dd15b95e9110ee66d566d2a2c0e40e2cafbd78e21fd830b6f62cf2974a7c2664736f6c63430008170033"; + +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..337776c4 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/core/EntryPoint__factory.ts @@ -0,0 +1,1047 @@ +/* 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", + }, + { + 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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; + +const _bytecode = + "0x60a08060405234620000825760016002556101df8181016001600160401b038111838210176200006c57829162003dff833903906000f080156200006057608052604051613d779081620000888239608051818181610d2201526131a00152f35b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b600080fdfe60806040526004361015610024575b361561001957600080fd5b61002233612737565b005b60003560e01c806242dc5314611b0057806301ffc9a7146119ae57806302101e49146119485780630396cb60146116105780630bd28e3b146115945780631b2e01b814611500578063205c28781461136b57806335567e1a146112b35780635287ce12146111a55780636b21db5114610ee757806370a0823114610e82578063850aaf6214610dc35780639b249f6914610c74578063b760faf914610c3a578063bb9fe6bf14610a68578063c23a5cea146107c4578063ea8ad612146101a15763fc7e286d0361000e573461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61013a61228f565b16600052600060205260a0604060002065ffffffffffff6001825492015460405192835260ff8116151560208401526dffffffffffffffffffffffffffff8160081c16604084015263ffffffff8160781c16606084015260981c166080820152f35b600080fd5b3461019c576101af36612307565b906101b86129b7565b60009160005b82811061056f57506101d08493612577565b6000805b8481106102fc5750507fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000809360005b81811061024757610240868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2613b3a565b6001600255005b6102a261025582848a612785565b73ffffffffffffffffffffffffffffffffffffffff61027660208301612819565b167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a2806127c5565b906000915b8083106102b957505050600101610209565b909194976102f36102ed6001926102e78c8b6102e0826102da8e8b8d61268c565b92612649565b5191613500565b906124e8565b996124f5565b950191906102a7565b6020610309828789612785565b61031f61031682806127c5565b93909201612819565b9160009273ffffffffffffffffffffffffffffffffffffffff8091165b8285106103505750505050506001016101d4565b909192939561037f83610378610366848c612649565b516103728b898b61268c565b856129f0565b9290613cab565b9116840361050a576104a5576103958491613cab565b9116610440576103b5576103aa6001916124f5565b96019392919061033c565b60a487604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608489604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b61057a818487612785565b9361058585806127c5565b919095602073ffffffffffffffffffffffffffffffffffffffff6105aa828401612819565b1697600192838a1461076657896105da575b5050505060019293949550906105d1916124e8565b939291016101be565b8060406105e892019061283a565b918a3b1561019c57929391906040519485937ffe96cf2300000000000000000000000000000000000000000000000000000000855288604486016040600488015252606490818601918a60051b8701019680936000915b8c83106106e657505050505050838392610684927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc85600098030160248601526126f8565b03818a5afa90816106d7575b506106c657602486604051907f86a9f7500000000000000000000000000000000000000000000000000000000082526004820152fd5b93945084936105d1600189806105bc565b6106e0906121ad565b88610690565b91939596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c908a9294969a0301865288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec18336030181121561019c57836107538793858394016128db565b9a0196019301909189979695949261063f565b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b3461019c576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576107fc61228f565b33600052600082526001604060002001908154916dffffffffffffffffffffffffffff8360081c16928315610a0a5765ffffffffffff8160981c1680156109ac57421061094e5760009373ffffffffffffffffffffffffffffffffffffffff859485947fffffffffffffff000000000000000000000000000000000000000000000000ff86951690556040517fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda33391806108da8786836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a2165af16108e861252f565b50156108f057005b606490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b3461019c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c573360005260006020526001604060002001805463ffffffff8160781c16908115610bdc5760ff1615610b7e5765ffffffffffff908142160191818311610b4f5780547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001678ffffffffffff00000000000000000000000000000000000000609885901b161790556040519116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a2005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610022610c6f61228f565b612737565b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043567ffffffffffffffff811161019c576020610cc8610d1b9236906004016122b2565b919073ffffffffffffffffffffffffffffffffffffffff9260405194859283927f570e1a3600000000000000000000000000000000000000000000000000000000845285600485015260248401916126f8565b03816000857f0000000000000000000000000000000000000000000000000000000000000000165af1908115610db757602492600092610d86575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b610da991925060203d602011610db0575b610da181836121dd565b8101906126cc565b9083610d56565b503d610d97565b6040513d6000823e3d90fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610dfa61228f565b60243567ffffffffffffffff811161019c57600091610e1e839236906004016122b2565b90816040519283928337810184815203915af4610e3961252f565b90610e7e6040519283927f99410554000000000000000000000000000000000000000000000000000000008452151560048401526040602484015260448301906123b6565b0390fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff610ece61228f565b1660005260006020526020604060002054604051908152f35b3461019c57610ef536612307565b610f009291926129b7565b610f0983612577565b60005b848110610f8157506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000915b858310610f51576102408585613b3a565b909193600190610f77610f6587898761268c565b610f6f8886612649565b519088613500565b0194019190610f40565b610fac610fa5610f9383859795612649565b51610f9f84898761268c565b846129f0565b9190613cab565b73ffffffffffffffffffffffffffffffffffffffff92918316611140576110db57610fd690613cab565b911661107657610feb57600101929092610f0c565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608483604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff6111f161228f565b6000608060405161120181612145565b828152826020820152826040820152826060820152015216600052600060205260a06040600020608060405161123681612145565b6001835493848352015490602081019060ff8316151582526dffffffffffffffffffffffffffff60408201818560081c16815263ffffffff936060840193858760781c16855265ffffffffffff978891019660981c1686526040519788525115156020880152511660408601525116606084015251166080820152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760206112ec61228f565b73ffffffffffffffffffffffffffffffffffffffff6113096122e0565b911660005260018252604060002077ffffffffffffffffffffffffffffffffffffffffffffffff821660005282526040600020547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576113a261228f565b602435903360005260006020526040600020908154918284116114a2576000808573ffffffffffffffffffffffffffffffffffffffff829583956113e6848a612522565b90556040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af161143c61252f565b501561144457005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761153761228f565b73ffffffffffffffffffffffffffffffffffffffff6115546122e0565b9116600052600160205277ffffffffffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043577ffffffffffffffffffffffffffffffffffffffffffffffff811680910361019c57336000526001602052604060002090600052602052604060002061160c81546124f5565b9055005b6020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043563ffffffff9182821680920361019c57336000526000815260406000209282156118ea576001840154908160781c16831061188c576116926dffffffffffffffffffffffffffff9182349160081c166124e8565b93841561182e578185116117d0579065ffffffffffff61179f9254604051906116ba82612145565b8152848101926001845260408201908816815260608201878152600160808401936000855233600052600089526040600020905181550194511515917fffffffffffffffffffffffffff0000000000000000000000000000000000000060ff72ffffffff0000000000000000000000000000006effffffffffffffffffffffffffff008954945160081b16945160781b1694169116171717835551167fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff78ffffffffffff0000000000000000000000000000000000000083549260981b169116179055565b6040519283528201527fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c0160403392a2005b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b3461019c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60208136011261019c576004359067ffffffffffffffff821161019c5761014090823603011261019c576119a66020916004016123f9565b604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361019c57807f6c393cb70000000000000000000000000000000000000000000000000000000060209214908115611ad6575b8115611aac575b8115611a82575b8115611a58575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501482611a4d565b7f3e84f0210000000000000000000000000000000000000000000000000000000081149150611a46565b7fcf28ef970000000000000000000000000000000000000000000000000000000081149150611a3f565b7f9d9523010000000000000000000000000000000000000000000000000000000081149150611a38565b3461019c576102007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5767ffffffffffffffff60043581811161019c573660238201121561019c57611b62903690602481600401359101612258565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601916101c0831261019c5761014060405193611ba085612145565b1261019c5760405192611bb284612190565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361019c578452602093604435858201526064356040820152608435606082015260a435608082015260c43560a082015260e43560c08201526101043573ffffffffffffffffffffffffffffffffffffffff8116810361019c5760e082015261012435610100820152610144356101208201528152610164358482015260408101926101843584526101a43560608301526101c43560808301526101e43590811161019c57611c809036906004016122b2565b925a913033036120e7578351606081015192603f5a0260061c61271060a0840151860101116120be5760009381519182611fe4575b50505050611ccf91925a9003608085015101943691612258565b9160005a825195611cdf87613c5f565b9573ffffffffffffffffffffffffffffffffffffffff60e0890151168015600014611e8b57505073ffffffffffffffffffffffffffffffffffffffff875116915b5a90030194606087015160a0880151016080850151870390818111611e77575b505085029687815110611e13579087611d5b92510390613c2b565b506003831015611de657506080867f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f9201519273ffffffffffffffffffffffffffffffffffffffff865116948873ffffffffffffffffffffffffffffffffffffffff60e0890151169701519160405192835215898301528760408301526060820152a4604051908152f35b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b6084838a604051917f220266b600000000000000000000000000000000000000000000000000000000835260048301526040602483015260448201527f414135312070726566756e642062656c6f772061637475616c476173436f73746064820152fd5b6064919003600a0204909501948980611d40565b8093918051611e9c575b5050611d20565b6003881015611fb5576002880315611e955760a08a999897969c9b9a015191803b1561019c57889260009283611f10938b604051978896879586937f7c627b2100000000000000000000000000000000000000000000000000000000855260048501526080602485015260848401906123b6565b90808c02604484015260648301520393f19081611fa1575b50611f925789893d610800808211611f8a575b506040519282828501016040528184528284013e610e7e6040519283927fad7954bc000000000000000000000000000000000000000000000000000000008452600484015260248301906123b6565b905083611f3b565b98929394959697988a80611e95565b611fac919b506121ad565b6000998b611f28565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91600092918380938d73ffffffffffffffffffffffffffffffffffffffff885116910192f115612017575b808080611cb5565b611ccf92503d6108008082116120b6575b5060405190898183010160405280825260008a83013e805161204f575b505060019161200f565b7f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a2018980880151926120ac8273ffffffffffffffffffffffffffffffffffffffff8751169601519160408051948594855284015260408301906123b6565b0390a38780612045565b905089612028565b887fdeaddead000000000000000000000000000000000000000000000000000000006000526000fd5b606487604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b60a0810190811067ffffffffffffffff82111761216157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610140810190811067ffffffffffffffff82111761216157604052565b67ffffffffffffffff811161216157604052565b6060810190811067ffffffffffffffff82111761216157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761216157604052565b67ffffffffffffffff811161216157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926122648261221e565b9161227260405193846121dd565b82948184528183011161019c578281602093846000960137010152565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9181601f8401121561019c5782359167ffffffffffffffff831161019c576020838186019501011161019c57565b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261019c5760043567ffffffffffffffff9283821161019c578060238301121561019c57816004013593841161019c5760248460051b8301011161019c57602401919060243573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b60005b8381106123a65750506000910152565b8181015183820152602001612396565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936123f281518092818752878088019101612393565b0116010190565b6040906124088282018261283a565b90818451918237209061241e606082018261283a565b90818551918237209061010060e06124388284018461283a565b908188519182372092865194602086019673ffffffffffffffffffffffffffffffffffffffff833516885260208301358988015260608701526080860152608081013560a086015260a081013560c086015260c081013582860152013590830152610120908183015281526124ac81612190565b5190209080519060208201928352308183015246606083015260608252608082019082821067ffffffffffffffff831117612161575251902090565b91908201809211610b4f57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b4f5760010190565b91908203918211610b4f57565b3d1561255a573d906125408261221e565b9161254e60405193846121dd565b82523d6000602084013e565b606090565b67ffffffffffffffff81116121615760051b60200190565b906125818261255f565b60409061259160405191826121dd565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06125bf829561255f565b019160005b8381106125d15750505050565b60209082516125df81612145565b83516125ea81612190565b600081526000849181838201528187820152816060818184015260809282848201528260a08201528260c08201528260e082015282610100820152826101208201528652818587015281898701528501528301528286010152016125c4565b805182101561265d5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919081101561265d5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec18136030182121561019c570190565b9081602091031261019c575173ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b7f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4602073ffffffffffffffffffffffffffffffffffffffff6127793485613c2b565b936040519485521692a2565b919081101561265d5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18136030182121561019c570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c57602001918160051b3603831361019c57565b3573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c5760200191813603831361019c57565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561019c57016020813591019167ffffffffffffffff821161019c57813603831361019c57565b61014091813573ffffffffffffffffffffffffffffffffffffffff811680910361019c576129516129366129b49561299593855260208601356020860152612926604087018761288b565b90918060408801528601916126f8565b612943606086018661288b565b9085830360608701526126f8565b6080840135608084015260a084013560a084015260c084013560c084015260e084013560e08401526101006129888186018661288b565b91858403908601526126f8565b916129a6610120918281019061288b565b9290918185039101526126f8565b90565b60028054146129c65760028055565b60046040517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b9290916000925a908251813573ffffffffffffffffffffffffffffffffffffffff811680910361019c5781526020820135602082015260808201356fffffffffffffffffffffffffffffffff8116606083015260801c604082015260a082013560c082015261010060c08301358183015260e0830135610120830152612a788184018461283a565b80156134e45760348110613486578060141161019c578060241161019c5760341161019c57602481013560801c60a0840152601481013560801c60808401523560601c60e08301525b612aca836123f9565b60208601526effffffffffffffffffffffffffffff60c083015160408401511760608401511760808401511760e08501359060c08601359060a08601511717171161342857604082015160608301510160808301510160a08301510160c0830151019082015102845173ffffffffffffffffffffffffffffffffffffffff815116612b58604086018661283a565b80613139575b5050612bcd602073ffffffffffffffffffffffffffffffffffffffff60e085015116936000908515613107575b60400151828b01516000868b604051978896879586937f8803e45100000000000000000000000000000000000000000000000000000000855260048501613c89565b0393f1600091816130d3575b50612c81573d8b610800808311612c79575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141323320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123b6565b915082612beb565b911561304d575b509773ffffffffffffffffffffffffffffffffffffffff835116602084015190600052600160205260406000208160401c60005260205267ffffffffffffffff604060002091825492612cda846124f5565b90551603612fe85760609273ffffffffffffffffffffffffffffffffffffffff60e082015116612d9c575b5a860390608060408201519101510110612d3757506040850152606084015260809160a090910135905a900301910152565b608490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413430206f76657220766572696669636174696f6e4761734c696d697400006064820152fd5b9198969594939250965083519773ffffffffffffffffffffffffffffffffffffffff60e08a0151169889600052600060205260406000208054838110612f83579a6080600093859384612e2e9d9e9f0390550151908360208a015191604051809d819682957f703ae88f0000000000000000000000000000000000000000000000000000000084528c60048501613c89565b0393f19687600091600099612ef6575b50612ee6573d8a610800808311612ede575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141333320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123b6565b915082612e50565b9890919293949596979892612d05565b915097503d90816000823e612f0b82826121dd565b604081838101031261019c5780519067ffffffffffffffff821161019c57828101601f83830101121561019c578181015191612f468361221e565b93612f5460405195866121dd565b838552820160208483850101011161019c57602092612f7a918480870191850101612393565b01519738612e3e565b60848b604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b608490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152fd5b60005260006020526040600020805480841161306e57839003905538612c88565b60848b604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152fd5b9091506020813d6020116130ff575b816130ef602093836121dd565b8101031261019c57519038612bd9565b3d91506130e2565b9050836000526000825260406000205486811160001461312f5750604060005b919050612b8b565b6040908703613127565b823b6133c357604089510151602060405180927f570e1a360000000000000000000000000000000000000000000000000000000082528260048301528160008161318760248201898b6126f8565b039273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690f1908115610db7576000916133a4575b5073ffffffffffffffffffffffffffffffffffffffff81161561333f578373ffffffffffffffffffffffffffffffffffffffff8216036132da573b156132755760141161019c5781907fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d604060208b01519273ffffffffffffffffffffffffffffffffffffffff60e08d510151168251913560601c82526020820152a33880612b5e565b60848c604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152fd5b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313420696e6974436f6465206d7573742072657475726e2073656e6465726064820152fd5b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601b60448201527f4141313320696e6974436f6465206661696c6564206f72204f4f4700000000006064820152fd5b6133bd915060203d602011610db057610da181836121dd565b386131d1565b60848c604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b5050600060e083015260006080830152600060a0830152612ac1565b9092915a90606081015160006040938451977fffffffff0000000000000000000000000000000000000000000000000000000089613541606084018461283a565b8660038211613b32575b7f18ad2e12000000000000000000000000000000000000000000000000000000009416841487146139d95750505061361b916137069160208801516135a38a5193849360208501528b602485015260648401906128db565b90604483015203906135db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0928381018352826121dd565b6136fa89519485927e42dc5300000000000000000000000000000000000000000000000000000000602085015261020060248501526102248401906123b6565b6136c9604484018b60806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152886123b6565b039081018352826121dd565b6020928184809351910182305af160005198865215613728575b505050505050565b909192939495965060003d83146139cb575b7fdeaddead00000000000000000000000000000000000000000000000000000000036137c357608486868051917f220266b600000000000000000000000000000000000000000000000000000000835260048301526024820152600f60448201527f41413935206f7574206f662067617300000000000000000000000000000000006064820152fd5b613850908285969501518651907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f47928573ffffffffffffffffffffffffffffffffffffffff8451169301513d906108008083116139c3575b5089519188818401018b5280835260008984013e6138468a5192839283528b8a8401528b8301906123b6565b0390a35a90612522565b61386060808601918251906124e8565b935a95600081519761387189613c5f565b60e08a019873ffffffffffffffffffffffffffffffffffffffff98898b511680156000146139b2575050888b5116925b5a9003019560608b015160a08c015101905187039081811161399e575b5050850299848401908b82511061393c575082918b6138df92510390613c2b565b50611de65750918784926000847f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f97608097015198808c51169a51169a01519482519586528501528301526060820152a490388080808080613720565b60849088878051927f220266b60000000000000000000000000000000000000000000000000000000084526004840152602483015260448201527f414135312070726566756e642062656c6f772061637475616c476173436f73746064820152fd5b6064919003600a02049095019438806138be565b939051156138a157600094506138a1565b91503861381a565b50816000803e60005161373a565b613b2c945082935090613a21917e42dc53000000000000000000000000000000000000000000000000000000006020613b0095015261020060248601526102248501916126f8565b613acf604484018960806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152866123b6565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018a52896121dd565b87613706565b50813561354b565b73ffffffffffffffffffffffffffffffffffffffff168015613bcd57600080809381935af1613b6761252f565b5015613b6f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff166000526000602052613c5960406000209182546124e8565b80915590565b610120610100820151910151808214613c8557480180821015613c80575090565b905090565b5090565b613ca1604092959493956060835260608301906128db565b9460208201520152565b8015613d3857600060408051613cc0816121c1565b828152826020820152015273ffffffffffffffffffffffffffffffffffffffff811690604065ffffffffffff91828160a01c16908115613d30575b60d01c92825191613d0b836121c1565b8583528460208401521691829101524211908115613d2857509091565b905042109091565b839150613cfb565b5060009060009056fea2646970667358221220a3f34c8eb885624d87da44107c36f2d1bddefa9bc9b6823af3739aa553f9da4164736f6c6343000817003360808060405234610016576101c3908161001c8239f35b600080fdfe6080600436101561000f57600080fd5b6000803560e01c63570e1a361461002557600080fd5b3461018a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018a576004359167ffffffffffffffff9081841161018657366023850112156101865783600401358281116101825736602482870101116101825780601411610182577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec810192808411610155577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81600b8501160116830190838210908211176101555792846024819482600c60209a968b9960405286845289840196603889018837830101525193013560601c5af1908051911561014d575b5073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b90503861012e565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8380fd5b8280fd5b80fdfea2646970667358221220befd8ec3b6557ae54faf2c55b64cd20640e6d100ba22eb558d462f13df99aa0064736f6c63430008170033"; + +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..c902aec7 --- /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 = + "0x608060405234801561001057600080fd5b50610213806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063570e1a3614610030575b600080fd5b61004361003e3660046100f9565b61006c565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60008061007c601482858761016b565b61008591610195565b60601c90506000610099846014818861016b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525084519495509360209350849250905082850182875af190506000519350806100f057600093505b50505092915050565b6000806020838503121561010c57600080fd5b823567ffffffffffffffff8082111561012457600080fd5b818501915085601f83011261013857600080fd5b81358181111561014757600080fd5b86602082850101111561015957600080fd5b60209290920196919550909350505050565b6000808585111561017b57600080fd5b8386111561018857600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156101d55780818660140360031b1b83161692505b50509291505056fea264697066735822122066dd15b95e9110ee66d566d2a2c0e40e2cafbd78e21fd830b6f62cf2974a7c2664736f6c63430008170033"; + +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..2ee9bd2d --- /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 = + "0x60a9610039600b82828239805160001a60731461002c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060475760003560e01c806325093e1b14604c578063b29a8ff4146065578063ede3150214606c575b600080fd5b6053602481565b60405190815260200160405180910390f35b6053601481565b605360348156fea26469706673582212207eb885030f7454c44eee5ea8e311ff7748488cfcfec2f17b24e781f105c0e0b764736f6c63430008170033"; + +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..ae2ad7a9 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/index.ts @@ -0,0 +1,7 @@ +/* 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..1555f7c5 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IAccountExecute__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 { + 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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..17c6a47b --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IAccount__factory.ts @@ -0,0 +1,107 @@ +/* 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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..fbfddf2a --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IAggregator__factory.ts @@ -0,0 +1,238 @@ +/* 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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..88161fca --- /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", + }, + { + 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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..c94b86a0 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPoint__factory.ts @@ -0,0 +1,811 @@ +/* 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", + }, + { + 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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..42932a17 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IPaymaster__factory.ts @@ -0,0 +1,140 @@ +/* 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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..3ada26d8 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/LegacyTokenPaymaster__factory.ts @@ -0,0 +1,728 @@ +/* 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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 = + "0x60c06040523480156200001157600080fd5b50604051620021b5380380620021b5833981016040819052620000349162000486565b81808233806200005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200006a81620000d4565b50620000768162000124565b6001600160a01b0316608052600462000090838262000613565b5060056200009f828262000613565b5050506001600160a01b03831660a052620000bc306001620001e7565b620000cb303360001962000225565b50505062000732565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516301ffc9a760e01b8152639d95230160e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801562000170573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001969190620006df565b620001e45760405162461bcd60e51b815260206004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d617463680000604482015260640162000056565b50565b6001600160a01b038216620002135760405163ec442f0560e01b81526000600482015260240162000056565b620002216000838362000239565b5050565b6200023483838360016200036c565b505050565b6001600160a01b038316620002685780600360008282546200025c91906200070a565b90915550620002dc9050565b6001600160a01b03831660009081526001602052604090205481811015620002bd5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000056565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216620002fa5760038054829003905562000319565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200035f91815260200190565b60405180910390a3505050565b6001600160a01b038416620003985760405163e602df0560e01b81526000600482015260240162000056565b6001600160a01b038316620003c457604051634a1406b160e11b81526000600482015260240162000056565b6001600160a01b03808516600090815260026020908152604080832093871683529290522082905580156200044257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516200043991815260200190565b60405180910390a35b50505050565b6001600160a01b0381168114620001e457600080fd5b634e487b7160e01b600052604160045260246000fd5b8051620004818162000448565b919050565b6000806000606084860312156200049c57600080fd5b8351620004a98162000448565b602085810151919450906001600160401b0380821115620004c957600080fd5b818701915087601f830112620004de57600080fd5b815181811115620004f357620004f36200045e565b604051601f8201601f19908116603f011681019083821181831017156200051e576200051e6200045e565b816040528281528a868487010111156200053757600080fd5b600093505b828410156200055b57848401860151818501870152928501926200053c565b60008684830101528097505050505050506200057a6040850162000474565b90509250925092565b600181811c908216806200059857607f821691505b602082108103620005b957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000234576000816000526020600020601f850160051c81016020861015620005ea5750805b601f850160051c820191505b818110156200060b57828155600101620005f6565b505050505050565b81516001600160401b038111156200062f576200062f6200045e565b620006478162000640845462000583565b84620005bf565b602080601f8311600181146200067f5760008415620006665750858301515b600019600386901b1c1916600185901b1785556200060b565b600085815260208120601f198616915b82811015620006b0578886015182559484019460019091019084016200068f565b5085821015620006cf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620006f257600080fd5b815180151581146200070357600080fd5b9392505050565b808201808211156200072c57634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a051611a2562000790600039600081816103aa01526114860152600081816103fe01528181610541015281816106b70152818161079901528181610866015281816108ef015281816109a20152610c710152611a256000f3fe60806040526004361061018b5760003560e01c80638da5cb5b116100d6578063c23a5cea1161007f578063dd62ed3e11610059578063dd62ed3e14610472578063f0dda65c146104c5578063f2fde38b146104e557600080fd5b8063c23a5cea14610435578063c399ec8814610455578063d0e30db01461046a57600080fd5b8063a9059cbb116100b0578063a9059cbb146103cc578063b0d691fe146103ec578063bb9fe6bf1461042057600080fd5b80638da5cb5b1461033757806395d89b41146103835780639f5ca2211461039857600080fd5b8063313ce56711610138578063715018a611610112578063715018a6146102ec578063796d4371146103015780637c627b211461031757600080fd5b8063313ce5671461025f578063703ae88f1461027b57806370a08231146102a957600080fd5b806318160ddd1161016957806318160ddd14610200578063205c28781461021f57806323b872dd1461023f57600080fd5b80630396cb601461019057806306fdde03146101a5578063095ea7b3146101d0575b600080fd5b6101a361019e366004611534565b610505565b005b3480156101b157600080fd5b506101ba6105b7565b6040516101c791906115c5565b60405180910390f35b3480156101dc57600080fd5b506101f06101eb3660046115fa565b610649565b60405190151581526020016101c7565b34801561020c57600080fd5b506003545b6040519081526020016101c7565b34801561022b57600080fd5b506101a361023a3660046115fa565b610663565b34801561024b57600080fd5b506101f061025a366004611626565b6106fb565b34801561026b57600080fd5b50604051601281526020016101c7565b34801561028757600080fd5b5061029b610296366004611667565b61071f565b6040516101c79291906116bb565b3480156102b557600080fd5b506102116102c43660046116dd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b3480156102f857600080fd5b506101a3610742565b34801561030d57600080fd5b50610211613a9881565b34801561032357600080fd5b506101a36103323660046116fa565b610756565b34801561034357600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c7565b34801561038f57600080fd5b506101ba610772565b3480156103a457600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d857600080fd5b506101f06103e73660046115fa565b610781565b3480156103f857600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561042c57600080fd5b506101a361078f565b34801561044157600080fd5b506101a36104503660046116dd565b610819565b34801561046157600080fd5b506102116108be565b6101a3610974565b34801561047e57600080fd5b5061021161048d366004611792565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b3480156104d157600080fd5b506101a36104e03660046115fa565b6109fc565b3480156104f157600080fd5b506101a36105003660046116dd565b610a12565b61050d610a7b565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b15801561059b57600080fd5b505af11580156105af573d6000803e3d6000fd5b505050505050565b6060600480546105c6906117cb565b80601f01602080910402602001604051908101604052809291908181526020018280546105f2906117cb565b801561063f5780601f106106145761010080835404028352916020019161063f565b820191906000526020600020905b81548152906001019060200180831161062257829003601f168201915b5050505050905090565b600033610657818585610ad3565b60019150505b92915050565b61066b610a7b565b6040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b15801561059b57600080fd5b600033610709858285610ae5565b610714858585610bae565b506001949350505050565b6060600061072b610c59565b610736858585610cf8565b91509150935093915050565b61074a610a7b565b6107546000610f5a565b565b61075e610c59565b61076b8585858585610fcf565b5050505050565b6060600580546105c6906117cb565b600033610657818585610bae565b610797610a7b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b50505050565b610821610a7b565b6040517fc23a5cea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b1580156108aa57600080fd5b505af115801561076b573d6000803e3d6000fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f919061181e565b905090565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99034906024016000604051808303818588803b1580156108aa57600080fd5b610a04610a7b565b610a0e8282611015565b5050565b610a1a610a7b565b610a4430610a3d60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000610ad3565b610a4d81611071565b610a7830827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ad3565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610754576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b610ae083838360016110d2565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108135781811015610b9f576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610aca565b610813848484840360006110d2565b73ffffffffffffffffffffffffffffffffffffffff8316610bfe576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b73ffffffffffffffffffffffffffffffffffffffff8216610c4e576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b610ae083838361121a565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e7400000000000000000000006044820152606401610aca565b6060600080610d06846113c5565b90506000610d20610d1b610100890189611837565b6113d2565b92505050613a988111610db5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f546f6b656e5061796d61737465723a2067617320746f6f206c6f7720666f722060448201527f706f73744f7000000000000000000000000000000000000000000000000000006064820152608401610aca565b610dc26040880188611837565b159050610e7657610dd287611443565b81610de36102c460208a018a6116dd565b1015610e71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f546f6b656e5061796d61737465723a206e6f2062616c616e636520287072652d60448201527f63726561746529000000000000000000000000000000000000000000000000006064820152608401610aca565b610eef565b81610e876102c460208a018a6116dd565b1015610eef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f546f6b656e5061796d61737465723a206e6f2062616c616e63650000000000006044820152606401610aca565b610efc60208801886116dd565b6040805173ffffffffffffffffffffffffffffffffffffffff909216602083015201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052976000975095505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610fdd848601866116dd565b90506000610fff610ff084613a986118d2565b610ffa90866118e9565b6113c5565b905061100c823083610bae565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611065576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b610a0e6000838361121a565b611079610a7b565b73ffffffffffffffffffffffffffffffffffffffff81166110c9576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b610a7881610f5a565b73ffffffffffffffffffffffffffffffffffffffff8416611122576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b73ffffffffffffffffffffffffffffffffffffffff8316611172576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526002602090815260408083209387168352929052208290558015610813578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161120c91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661125257806003600082825461124791906118e9565b909155506113049050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054818110156112d8576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610aca565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661132d57600380548290039055611359565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113b891815260200190565b60405180910390a3505050565b600061065d6064836118fc565b600080806113e36014828688611937565b6113ec91611961565b60601c6113fd602460148789611937565b611406916119a9565b60801c61141760346024888a611937565b611420916119a9565b9194506fffffffffffffffffffffffffffffffff16925060801c90509250925092565b60006114526040830183611837565b61146191601491600091611937565b61146a91611961565b60601c905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168114610a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f546f6b656e5061796d61737465723a2077726f6e67206163636f756e7420666160448201527f63746f72790000000000000000000000000000000000000000000000000000006064820152608401610aca565b60006020828403121561154657600080fd5b813563ffffffff8116811461155a57600080fd5b9392505050565b6000815180845260005b818110156115875760208185018101518683018201520161156b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061155a6020830184611561565b73ffffffffffffffffffffffffffffffffffffffff81168114610a7857600080fd5b6000806040838503121561160d57600080fd5b8235611618816115d8565b946020939093013593505050565b60008060006060848603121561163b57600080fd5b8335611646816115d8565b92506020840135611656816115d8565b929592945050506040919091013590565b60008060006060848603121561167c57600080fd5b833567ffffffffffffffff81111561169357600080fd5b840161014081870312156116a657600080fd5b95602085013595506040909401359392505050565b6040815260006116ce6040830185611561565b90508260208301529392505050565b6000602082840312156116ef57600080fd5b813561155a816115d8565b60008060008060006080868803121561171257600080fd5b85356003811061172157600080fd5b9450602086013567ffffffffffffffff8082111561173e57600080fd5b818801915088601f83011261175257600080fd5b81358181111561176157600080fd5b89602082850101111561177357600080fd5b9699602092909201985095966040810135965060600135945092505050565b600080604083850312156117a557600080fd5b82356117b0816115d8565b915060208301356117c0816115d8565b809150509250929050565b600181811c908216806117df57607f821691505b602082108103611818577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561183057600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261186c57600080fd5b83018035915067ffffffffffffffff82111561188757600080fd5b60200191503681900382131561189c57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761065d5761065d6118a3565b8082018082111561065d5761065d6118a3565b600082611932577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000808585111561194757600080fd5b8386111561195457600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156119a15780818660140360031b1b83161692505b505092915050565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081358181169160108510156119a15760109490940360031b84901b169092169291505056fea26469706673582212208ccc71efbbbc3bbbcb376b28cd3c0ce5a2deddaf60d3753fd9f6ecbfc1a84a6b64736f6c63430008170033"; + +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..b2c68ec9 --- /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 = + "0x60a060405234801561001057600080fd5b506040516129e13803806129e183398101604081905261002f91610088565b8060405161003c9061007b565b6001600160a01b039091168152602001604051809103906000f080158015610068573d6000803e3d6000fd5b506001600160a01b0316608052506100b8565b612011806109d083390190565b60006020828403121561009a57600080fd5b81516001600160a01b03811681146100b157600080fd5b9392505050565b6080516108f06100e060003960008181604b01528181610114015261025801526108f06000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806311464fbe146100465780635fbfb9cf146100965780638cb84e18146100a9575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61006d6100a436600461039d565b6100bc565b61006d6100b736600461039d565b6101ee565b6000806100c984846101ee565b905073ffffffffffffffffffffffffffffffffffffffff81163b80156100f1575090506101e8565b60405173ffffffffffffffffffffffffffffffffffffffff8616602482015284907f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052516101b790610390565b6101c2929190610406565b8190604051809103906000f59050801580156101e2573d6000803e3d6000fd5b50925050505b92915050565b60006103578260001b6040518060200161020790610390565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905273ffffffffffffffffffffffffffffffffffffffff871660248201527f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052905161030093929101610406565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261033c9291602001610474565b6040516020818303038152906040528051906020012061035e565b9392505050565b60006103578383306000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b610417806104a483390190565b600080604083850312156103b057600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146103d457600080fd5b946020939093013593505050565b60005b838110156103fd5781810151838201526020016103e5565b50506000910152565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600082518060408401526104418160608501602087016103e2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b600083516104868184602088016103e2565b83519083019061049a8183602088016103e2565b0194935050505056fe608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220d7f23a80daebb5531c9e4a18d87e812fca112e5df7e56433218edcc12bbe415d64736f6c63430008170033a26469706673582212200c86fa63a65646813a23238fbaec92e25001543696f180649597a7afadcb826e64736f6c6343000817003360c0604052306080523480156200001557600080fd5b50604051620020113803806200201183398101604081905262000038916200010a565b6001600160a01b03811660a0526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051611e70620001a160003960008181610320015281816106ca015281816107780152818161092601528181610b6301528181610baa01528181611031015261121e015260008181610d7501528181610d9e0152610fc20152611e706000f3fe6080604052600436106101125760003560e01c80638da5cb5b116100a5578063bc197c8111610074578063c4d66de811610059578063c4d66de8146103c1578063d087d288146103e1578063f23a6e61146103f657600080fd5b8063bc197c8114610364578063c399ec88146103ac57600080fd5b80638da5cb5b14610269578063ad3cb1cc146102bb578063b0d691fe14610311578063b61d27f61461034457600080fd5b80634d44560d116100e15780634d44560d146101f35780634f1ef2861461021357806352d1902d146102265780638803e4511461024957600080fd5b806301ffc9a71461011e578063150b7a021461015357806347e1da2a146101c95780634a58db19146101eb57600080fd5b3661011957005b600080fd5b34801561012a57600080fd5b5061013e61013936600461179b565b61043c565b60405190151581526020015b60405180910390f35b34801561015f57600080fd5b5061019861016e366004611848565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161014a565b3480156101d557600080fd5b506101e96101e4366004611900565b610521565b005b6101e96106c8565b3480156101ff57600080fd5b506101e961020e36600461199a565b61076e565b6101e96102213660046119f5565b61081d565b34801561023257600080fd5b5061023b61083c565b60405190815260200161014a565b34801561025557600080fd5b5061023b610264366004611ad7565b61086b565b34801561027557600080fd5b506000546102969073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014a565b3480156102c757600080fd5b506103046040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161014a9190611b4f565b34801561031d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610296565b34801561035057600080fd5b506101e961035f366004611ba0565b610891565b34801561037057600080fd5b5061019861037f366004611bfc565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103b857600080fd5b5061023b6108e0565b3480156103cd57600080fd5b506101e96103dc366004611cbb565b610997565b3480156103ed57600080fd5b5061023b610b16565b34801561040257600080fd5b50610198610411366004611cd8565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a020000000000000000000000000000000000000000000000000000000014806104cf57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061051b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610529610b92565b848114801561053f575082158061053f57508281145b6105aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206172726179206c656e677468730000000000000000000000000060448201526064015b60405180910390fd5b60008390036106565760005b85811015610650576106488787838181106105d3576105d3611d42565b90506020020160208101906105e89190611cbb565b60008585858181106105fc576105fc611d42565b905060200281019061060e9190611d71565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c5592505050565b6001016105b6565b506106c0565b60005b858110156106be576106b687878381811061067657610676611d42565b905060200201602081019061068b9190611cbb565b86868481811061069d5761069d611d42565b905060200201358585858181106105fc576105fc611d42565b600101610659565b505b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024016000604051808303818588803b15801561075357600080fd5b505af1158015610767573d6000803e3d6000fd5b5050505050565b610776610cd2565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c287890604401600060405180830381600087803b15801561080957600080fd5b505af11580156106c0573d6000803e3d6000fd5b610825610d5d565b61082e82610e61565b6108388282610e6c565b5050565b6000610846610faa565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6000610875611019565b61087f84846110b8565b905061088a82611169565b9392505050565b610899610b92565b6108da848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c5592505050565b50505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561096e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109929190611dd6565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e25750825b905060008267ffffffffffffffff1660011480156109ff5750303b155b905081158015610a0d575080155b15610a44576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aa55784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610aae866111d4565b83156106c05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610951565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610bed575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610c53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e7460448201526064016105a1565b565b6000808473ffffffffffffffffffffffffffffffffffffffff168484604051610c7e9190611def565b60006040518083038185875af1925050503d8060008114610cbb576040519150601f19603f3d011682016040523d82523d6000602084013e610cc0565b606091505b50915091508161076757805160208201fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331480610cf757503330145b610c53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e65720000000000000000000000000000000000000000000060448201526064016105a1565b3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610e2a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e117f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610c53576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e69610cd2565b50565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ef1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610eee91810190611dd6565b60015b610f3f576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016105a1565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610f9b576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016105a1565b610fa58383611268565b505050565b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c53576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016105a1565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120611133816110f9610120870187611d71565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112cb92505050565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161461115f57600191505061051b565b5060009392505050565b8015610e695760405160009033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d8060008114610767576040519150601f19603f3d011682016040523d82523d6000602084013e610767565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217835560405191927f0000000000000000000000000000000000000000000000000000000000000000909116917f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de9190a350565b611271826112f5565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156112c357610fa582826113c4565b610838611447565b6000806000806112db868661147f565b9250925092506112eb82826114cc565b5090949350505050565b8073ffffffffffffffffffffffffffffffffffffffff163b60000361135e576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016105a1565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516113ee9190611def565b600060405180830381855af49150503d8060008114611429576040519150601f19603f3d011682016040523d82523d6000602084013e61142e565b606091505b509150915061143e8583836115d0565b95945050505050565b3415610c53576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600083516041036114b95760208401516040850151606086015160001a6114ab8882858561165f565b9550955095505050506114c5565b50508151600091506002905b9250925092565b60008260038111156114e0576114e0611e0b565b036114e9575050565b60018260038111156114fd576114fd611e0b565b03611534576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561154857611548611e0b565b03611582576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016105a1565b600382600381111561159657611596611e0b565b03610838576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016105a1565b6060826115e5576115e082611759565b61088a565b8151158015611609575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611658576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016105a1565b508061088a565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561169a575060009150600390508261174f565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156116ee573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166117455750600092506001915082905061174f565b9250600091508190505b9450945094915050565b8051156117695780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156117ad57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461088a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e6957600080fd5b60008083601f84011261181157600080fd5b50813567ffffffffffffffff81111561182957600080fd5b60208301915083602082850101111561184157600080fd5b9250929050565b60008060008060006080868803121561186057600080fd5b853561186b816117dd565b9450602086013561187b816117dd565b935060408601359250606086013567ffffffffffffffff81111561189e57600080fd5b6118aa888289016117ff565b969995985093965092949392505050565b60008083601f8401126118cd57600080fd5b50813567ffffffffffffffff8111156118e557600080fd5b6020830191508360208260051b850101111561184157600080fd5b6000806000806000806060878903121561191957600080fd5b863567ffffffffffffffff8082111561193157600080fd5b61193d8a838b016118bb565b9098509650602089013591508082111561195657600080fd5b6119628a838b016118bb565b9096509450604089013591508082111561197b57600080fd5b5061198889828a016118bb565b979a9699509497509295939492505050565b600080604083850312156119ad57600080fd5b82356119b8816117dd565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611a0857600080fd5b8235611a13816117dd565b9150602083013567ffffffffffffffff80821115611a3057600080fd5b818501915085601f830112611a4457600080fd5b813581811115611a5657611a566119c6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611a9c57611a9c6119c6565b81604052828152886020848701011115611ab557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600060608486031215611aec57600080fd5b833567ffffffffffffffff811115611b0357600080fd5b84016101408187031215611b1657600080fd5b95602085013595506040909401359392505050565b60005b83811015611b46578181015183820152602001611b2e565b50506000910152565b6020815260008251806020840152611b6e816040850160208701611b2b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060008060608587031215611bb657600080fd5b8435611bc1816117dd565b935060208501359250604085013567ffffffffffffffff811115611be457600080fd5b611bf0878288016117ff565b95989497509550505050565b60008060008060008060008060a0898b031215611c1857600080fd5b8835611c23816117dd565b97506020890135611c33816117dd565b9650604089013567ffffffffffffffff80821115611c5057600080fd5b611c5c8c838d016118bb565b909850965060608b0135915080821115611c7557600080fd5b611c818c838d016118bb565b909650945060808b0135915080821115611c9a57600080fd5b50611ca78b828c016117ff565b999c989b5096995094979396929594505050565b600060208284031215611ccd57600080fd5b813561088a816117dd565b60008060008060008060a08789031215611cf157600080fd5b8635611cfc816117dd565b95506020870135611d0c816117dd565b94506040870135935060608701359250608087013567ffffffffffffffff811115611d3657600080fd5b61198889828a016117ff565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611da657600080fd5b83018035915067ffffffffffffffff821115611dc157600080fd5b60200191503681900382131561184157600080fd5b600060208284031215611de857600080fd5b5051919050565b60008251611e01818460208701611b2b565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea264697066735822122026dfe130458787b65857e17309456cf05b965ce360b0042f8830853bd6a1a41b64736f6c63430008170033"; + +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..47192bea --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/SimpleAccount__factory.ts @@ -0,0 +1,605 @@ +/* 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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 = + "0x60c034610142576001600160401b0390601f611bde38819003918201601f1916830191848311848410176101475780849260209460405283398101031261014257516001600160a01b0381168103610142573060805260a0527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166101305780808316036100eb575b604051611a80908161015e82396080518181816107a901526109a7015260a0518181816104bb0152818161059a01528181610a8b01528181610ce501528181610ebc015281816111a4015281816113ed015261164e0152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610092565b60405163f92ee8a960e01b8152600490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806301ffc9a71461012b578063150b7a021461012657806347e1da2a146101215780634a58db191461011c5780634d44560d146101175780634f1ef2861461011257806352d1902d1461010d5780638803e451146101085780638da5cb5b14610103578063ad3cb1cc146100fe578063b0d691fe146100f9578063b61d27f6146100f4578063bc197c81146100ef578063c399ec88146100ea578063c4d66de8146100e5578063d087d288146100e05763f23a6e610361000e57611207565b611125565b610f15565b610e44565b610d7d565b610d09565b610c9a565b610bc9565b610b77565b610a21565b610961565b610729565b61053c565b610479565b61032e565b61026c565b3461021b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361021b57807f150b7a0200000000000000000000000000000000000000000000000000000000602092149081156101f1575b81156101c7575b506040519015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386101bc565b7f4e2312e000000000000000000000000000000000000000000000000000000000811491506101b5565b600080fd5b73ffffffffffffffffffffffffffffffffffffffff81160361021b57565b9181601f8401121561021b5782359167ffffffffffffffff831161021b576020838186019501011161021b57565b3461021b5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576102a6600435610220565b6102b1602435610220565b60643567ffffffffffffffff811161021b576102d190369060040161023e565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b9181601f8401121561021b5782359167ffffffffffffffff831161021b576020808501948460051b01011161021b57565b3461021b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b5767ffffffffffffffff60043581811161021b5761037e9036906004016102fd565b60249291923582811161021b576103999036906004016102fd565b9260443590811161021b576103b29036906004016102fd565b9390916103bd6113d5565b84841480610468575b6103cf90611298565b8161041c57505060005b8281106103e257005b806104166103fb6103f6600194878a61132c565b611341565b61041061040984898861139f565b36916106f2565b906114bb565b016103d9565b91909460009493945b85811061042e57005b806104626104426103f66001948a8761132c565b61044d838b8961132c565b3561045c610409858b8a61139f565b916114e3565b01610425565b508115806103c657508185146103c6565b6000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105395773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001681813b1561053957602491604051928380927fb760faf900000000000000000000000000000000000000000000000000000000825230600483015234905af1801561053457610528575080f35b61053190610642565b80f35b6113ba565b80fd5b3461021b57600060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105395760043561057981610220565b6105816114fa565b8173ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001692833b1561060f576044908360405195869485937f205c287800000000000000000000000000000000000000000000000000000000855216600484015260243560248401525af1801561053457610528575080f35b8280fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161065657604052565b610613565b6040810190811067ffffffffffffffff82111761065657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761065657604052565b67ffffffffffffffff811161065657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926106fe826106b8565b9161070c6040519384610677565b82948184528183011161021b578281602093846000960137010152565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57600480359061076182610220565b60243567ffffffffffffffff811161021b573660238201121561021b5761079190369060248185013591016106f2565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016803014908115610933575b5061090a5790602083926107e66114fa565b604051938480927f52d1902d00000000000000000000000000000000000000000000000000000000825288165afa600092816108d9575b506108715750506040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921690820190815281906020010390fd5b83837f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc84036108a4576100198383611695565b6040517faa1d49a400000000000000000000000000000000000000000000000000000000815290810184815281906020010390fd5b6108fc91935060203d602011610903575b6108f48183610677565b8101906113c6565b913861081d565b503d6108ea565b826040517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54161415386107d4565b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036109f75760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60046040517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b3461021b577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60608136011261021b576004359067ffffffffffffffff821161021b5761014090823603011261021b5760443573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610b1957610ac4610adc926024359060040161158a565b9080610ae0575b506040519081529081906020820190565b0390f35b600080808093337ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff150610b1261148b565b5038610acb565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152fd5b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576040805190610c068261065b565b600582526020907f352e302e300000000000000000000000000000000000000000000000000000006020840152604051916020835283519182602085015260005b838110610c8757846040817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f88600085828601015201168101030190f35b8581018301518582018301528201610c47565b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461021b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57600435610d4481610220565b6044359067ffffffffffffffff821161021b57610d73610d6b61001993369060040161023e565b6104096113d5565b90602435906114e3565b3461021b5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57610db7600435610220565b610dc2602435610220565b67ffffffffffffffff60443581811161021b57610de39036906004016102fd565b505060643581811161021b57610dfd9036906004016102fd565b505060843590811161021b57610e1790369060040161023e565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa801561053457602091600091610ef8575b50604051908152f35b610f0f9150823d8411610903576108f48183610677565b38610eef565b3461021b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57600435610f5081610220565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549067ffffffffffffffff60ff8360401c161592168015908161111d575b6001149081611113575b15908161110a575b506110e0576110039082610ffa7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060017fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416179055565b61108457611609565b61100957005b6110557ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff8154169055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b6110db7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff825416179055565b611609565b60046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b90501538610fa1565b303b159150610f99565b839150610f8f565b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482015260208160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa801561053457610adc916000916111e857506040519081529081906020820190565b611201915060203d602011610903576108f48183610677565b38610acb565b3461021b5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57611241600435610220565b61124c602435610220565b60843567ffffffffffffffff811161021b5761126c90369060040161023e565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b1561129f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206172726179206c656e67746873000000000000000000000000006044820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919081101561133c5760051b0190565b6112fd565b3561134b81610220565b90565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561021b570180359067ffffffffffffffff821161021b5760200191813603831361021b57565b9082101561133c576113b69160051b81019061134e565b9091565b6040513d6000823e3d90fd5b9081602091031261021b575190565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016331490811561147d575b501561141f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e746044820152fd5b905060005416331438611417565b3d156114b6573d9061149c826106b8565b916114aa6040519384610677565b82523d6000602084013e565b606090565b600091829182602083519301915af16114d261148b565b90156114db5750565b602081519101fd5b916000928392602083519301915af16114d261148b565b73ffffffffffffffffffffffffffffffffffffffff6000541633148015611581575b1561152357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152fd5b5030331461151c565b907f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c6000206115f96115f073ffffffffffffffffffffffffffffffffffffffff926115ea61040985600054169661012081019061134e565b906117cd565b90929192611842565b160361160457600090565b600190565b73ffffffffffffffffffffffffffffffffffffffff80911690817fffffffffffffffffffffffff000000000000000000000000000000000000000060005416176000557f0000000000000000000000000000000000000000000000000000000000000000167f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de600080a3565b90813b156117685773ffffffffffffffffffffffffffffffffffffffff82167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc817fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a280511561173557611732916117af565b50565b50503461173e57565b60046040517fb398979f000000000000000000000000000000000000000000000000000000008152fd5b60248273ffffffffffffffffffffffffffffffffffffffff604051917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352166004820152fd5b60008061134b93602081519101845af46117c761148b565b91611919565b81519190604183036117fe576117f792506020820151906060604084015193015160001a906119b9565b9192909190565b505060009160029190565b6004111561181357565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b61184b81611809565b80611854575050565b61185d81611809565b6001810361188f5760046040517ff645eedf000000000000000000000000000000000000000000000000000000008152fd5b61189881611809565b600281036118d2576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101839052602490fd5b806118de600392611809565b146118e65750565b6040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810191909152602490fd5b90611958575080511561192e57805190602001fd5b60046040517f1425ea42000000000000000000000000000000000000000000000000000000008152fd5b815115806119b0575b611969575090565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b15611961565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611a3e57926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa1561053457805173ffffffffffffffffffffffffffffffffffffffff811615611a3557918190565b50809160019190565b5050506000916003919056fea264697066735822122093fd467eab992756fc098b388e3f89d81ffe0f2ccfa8e4a8d93efe8799da52ec64736f6c63430008170033"; + +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..2e15a278 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/TokenPaymaster__factory.ts @@ -0,0 +1,893 @@ +/* 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: "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: "uint48", + name: "priceUpdateThreshold", + type: "uint48", + }, + ], + 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: "actualTokenPrice", + 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: [ + { + 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: "newPrice", + 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "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 = + "0x6101206040523480156200001257600080fd5b50604051620032223803806200322283398101604081905262000035916200096b565b828887878b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000078573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009e919062000a81565b620000ab90600a62000bbb565b868c3380620000d557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000e08162000205565b50620000ec8162000255565b6001600160a01b0390811660805260405163095ea7b360e01b8152848216600482015260001960248201529086169063095ea7b3906044016020604051808303816000875af115801562000144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016a919062000bcc565b506001600160a01b0380861660c05284811660e052831660a052610100829052620001c881805160015560208101516002805460409093015160ff1663010000000263ffffffff1990931662ffffff90921691909117919091179055565b505060001960035550620001e0915082905062000318565b50620001ec8462000579565b620001f78162000706565b505050505050505062000c04565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516301ffc9a760e01b8152639d95230160e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015620002a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c7919062000bcc565b620003155760405162461bcd60e51b815260206004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d6174636800006044820152606401620000cc565b50565b805160058054602084015165ffffffffffff9384166001600160d01b03199092169190911766010000000000006001600160a01b0392831602179091556040830151600680546060860151608087015160a088015160c0890151959096166001600160a81b031990931692909217600160a01b911515919091021761ffff60a81b1916600160a81b9115159190910260ff60b01b191617600160b01b931515939093029290921765ffffffffffff60b81b1916600160b81b91909316908102929092179055620f42401015620004315760405162461bcd60e51b815260206004820152601e60248201527f54504d3a20757064617465207468726573686f6c6420746f6f206869676800006044820152606401620000cc565b600560000160069054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000488573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ae919062000a81565b620004bb90600a62000bbb565b600780546001600160801b0319166001600160801b03929092169190911790556006546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa15801562000526573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054c919062000a81565b6200055990600a62000bbb565b600780546001600160801b03928316600160801b02921691909117905550565b6200058362000747565b6200059b6a52b7d2dcc80cd2e4000000600262000bea565b81511115620005ed5760405162461bcd60e51b815260206004820152601a60248201527f54504d3a207072696365206d61726b757020746f6f20686967680000000000006044820152606401620000cc565b80516a52b7d2dcc80cd2e400000011156200064b5760405162461bcd60e51b815260206004820152601960248201527f54504d3a207072696365206d61726b757020746f6f206c6f77000000000000006044820152606401620000cc565b805160088190556020808301805160098054604080880180516060808b01805165ffffffffffff908116600160b01b0265ffffffffffff60b01b19948216600160801b026001600160b01b03199098166001600160801b039a8b161797909717939093169590951790955582519889529551909416958701959095529151831685850152905190911690830152517fcd938817f1c47094d43be3d07e8c67e11766db2e11a2b4376e7ee937b15793a29181900360800190a150565b6200071062000747565b6001600160a01b0381166200073c57604051631e4fbdf760e01b815260006004820152602401620000cc565b620003158162000205565b6000546001600160a01b03163314620007765760405163118cdaa760e01b8152336004820152602401620000cc565b565b6001600160a01b03811681146200031557600080fd5b604051608081016001600160401b0381118282101715620007bf57634e487b7160e01b600052604160045260246000fd5b60405290565b805165ffffffffffff81168114620007dc57600080fd5b919050565b80518015158114620007dc57600080fd5b600060e082840312156200080557600080fd5b60405160e081016001600160401b03811182821017156200083657634e487b7160e01b600052604160045260246000fd5b6040529050806200084783620007c5565b81526020830151620008598162000778565b602082015260408301516200086e8162000778565b60408201526200088160608401620007e1565b60608201526200089460808401620007e1565b6080820152620008a760a08401620007e1565b60a0820152620008ba60c08401620007c5565b60c08201525092915050565b805160ff81168114620007dc57600080fd5b600060608284031215620008eb57600080fd5b604051606081016001600160401b03811182821017156200091c57634e487b7160e01b600052604160045260246000fd5b806040525080915082518152602083015162ffffff811681146200093f57600080fd5b60208201526200095260408401620008c6565b60408201525092915050565b8051620007dc8162000778565b600080600080600080600080888a036102608112156200098a57600080fd5b8951620009978162000778565b60208b0151909950620009aa8162000778565b60408b0151909850620009bd8162000778565b60608b0151909750620009d08162000778565b95506080607f1982011215620009e557600080fd5b50620009f06200078e565b60808a0151815260a08a01516001600160801b038116811462000a1257600080fd5b602082015262000a2560c08b01620007c5565b604082015262000a3860e08b01620007c5565b6060820152935062000a4f8a6101008b01620007f2565b925062000a618a6101e08b01620008d8565b915062000a726102408a016200095e565b90509295985092959890939650565b60006020828403121562000a9457600080fd5b62000a9f82620008c6565b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000afd57816000190482111562000ae15762000ae162000aa6565b8085161562000aef57918102915b93841c939080029062000ac1565b509250929050565b60008262000b165750600162000bb5565b8162000b255750600062000bb5565b816001811462000b3e576002811462000b495762000b69565b600191505062000bb5565b60ff84111562000b5d5762000b5d62000aa6565b50506001821b62000bb5565b5060208310610133831016604e8410600b841016171562000b8e575081810a62000bb5565b62000b9a838362000abc565b806000190482111562000bb15762000bb162000aa6565b0290505b92915050565b600062000a9f60ff84168362000b05565b60006020828403121562000bdf57600080fd5b62000a9f82620007e1565b808202811582820484141762000bb55762000bb562000aa6565b60805160a05160c05160e0516101005161256562000cbd60003960005050600081816104620152611a8b0152600081816104ec0152818161090f015281816113b101528181611596015281816115d0015261184601526000818161020c01528181611af70152611ba70152600081816103860152818161054a01528181610614015281816109a601528181610a7301528181610afd01528181610bb0015281816111f2015281816117a001526118a401526125656000f3fe6080604052600436106101845760003560e01c8063b0d691fe116100d6578063e1d8153c1161007f578063f2fde38b11610059578063f2fde38b146104a4578063f60fdcb3146104c4578063fc0c546a146104da57600080fd5b8063e1d8153c1461041a578063eb6d3a1114610450578063f14d64ed1461048457600080fd5b8063c399ec88116100b0578063c399ec88146103dd578063d0e30db0146103f2578063d7a23b3c146103fa57600080fd5b8063b0d691fe14610374578063bb9fe6bf146103a8578063c23a5cea146103bd57600080fd5b8063715018a6116101385780638da5cb5b116101125780638da5cb5b146103095780639e281a9814610334578063a0840fa71461035457600080fd5b8063715018a6146102b45780637c627b21146102c95780637c986aac146102e957600080fd5b80632681f7e4116101695780632681f7e4146101fa5780633ba9290f14610258578063703ae88f1461028657600080fd5b80630396cb60146101c5578063205c2878146101da57600080fd5b366101c05760405134815233907f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258749060200160405180910390a2005b600080fd5b6101d86101d3366004611ec5565b61050e565b005b3480156101e657600080fd5b506101d86101f5366004611f0d565b6105c0565b34801561020657600080fd5b5061022e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561026457600080fd5b50610278610273366004611f47565b610658565b60405190815260200161024f565b34801561029257600080fd5b506102a66102a1366004611f64565b610884565b60405161024f929190611fdc565b3480156102c057600080fd5b506101d86108a7565b3480156102d557600080fd5b506101d86102e4366004612035565b6108bb565b3480156102f557600080fd5b506102786103043660046120cd565b6108d7565b34801561031557600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661022e565b34801561034057600080fd5b506101d861034f366004611f0d565b610902565b34801561036057600080fd5b506101d861036f3660046120ef565b610939565b34801561038057600080fd5b5061022e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b457600080fd5b506101d861099c565b3480156103c957600080fd5b506101d86103d836600461218d565b610a26565b3480156103e957600080fd5b50610278610acc565b6101d8610b82565b34801561040657600080fd5b506102786104153660046120cd565b610c0a565b34801561042657600080fd5b506004546104399065ffffffffffff1681565b60405165ffffffffffff909116815260200161024f565b34801561045c57600080fd5b5061022e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561049057600080fd5b506101d861049f3660046121c5565b610c22565b3480156104b057600080fd5b506101d86104bf36600461218d565b610e37565b3480156104d057600080fd5b5061027860035481565b3480156104e657600080fd5b5061022e7f000000000000000000000000000000000000000000000000000000000000000081565b610516610e98565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b1580156105a457600080fd5b505af11580156105b8573d6000803e3d6000fd5b505050505050565b6105c8610e98565b6040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b1580156105a457600080fd5b60055460045460009165ffffffffffff9081169183916106799116426122a8565b9050831580156106895750818111155b1561069957505060035492915050565b60065460055460035465ffffffffffff770100000000000000000000000000000000000000000000008404169273ffffffffffffffffffffffffffffffffffffffff6601000000000000909304831692169060006106f684610eeb565b60065490915060019074010000000000000000000000000000000000000000900460ff1661072a5761072784610eeb565b90505b600654600090610776908490849060ff750100000000000000000000000000000000000000000082048116917601000000000000000000000000000000000000000000009004166110d7565b90506000846107906a52b7d2dcc80cd2e4000000846122bb565b61079a9190612301565b905060008c806107bd57506107ba896a52b7d2dcc80cd2e400000061233c565b82115b806107db57506107d8896a52b7d2dcc80cd2e40000006122a8565b82105b9050806107f35750939b9a5050505050505050505050565b6003839055600480547fffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000164265ffffffffffff16908117909155604080518581526020810189905290810191909152929586937ed4fe314618b73a96886b87817a53a5ed51433b0234c85a5e9dafe2cb7b88429060600160405180910390a150949c9b505050505050505050505050565b606060006108906111da565b61089b858585611279565b91509150935093915050565b6108af610e98565b6108b9600061149c565b565b6108c36111da565b6108d08585858585611511565b5050505050565b6000816108ef6a52b7d2dcc80cd2e4000000856122bb565b6108f99190612301565b90505b92915050565b61090a610e98565b6109357f00000000000000000000000000000000000000000000000000000000000000008383611669565b5050565b610941610e98565b61099981805160015560208101516002805460409093015160ff166301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090931662ffffff90921691909117919091179055565b50565b6109a4610e98565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a0c57600080fd5b505af1158015610a20573d6000803e3d6000fd5b50505050565b610a2e610e98565b6040517fc23a5cea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea906024015b600060405180830381600087803b158015610ab857600080fd5b505af11580156108d0573d6000803e3d6000fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7d919061234f565b905090565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99034906024016000604051808303818588803b158015610ab857600080fd5b60006a52b7d2dcc80cd2e40000006108ef83856122bb565b610c2a610e98565b610c406a52b7d2dcc80cd2e400000060026122bb565b81511115610caf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f54504d3a207072696365206d61726b757020746f6f206869676800000000000060448201526064015b60405180910390fd5b80516a52b7d2dcc80cd2e40000001115610d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54504d3a207072696365206d61726b757020746f6f206c6f77000000000000006044820152606401610ca6565b805160088190556020808301805160098054604080880180516060808b01805165ffffffffffff908116760100000000000000000000000000000000000000000000027fffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff948216700100000000000000000000000000000000027fffffffffffffffffffff000000000000000000000000000000000000000000009098166fffffffffffffffffffffffffffffffff9a8b161797909717939093169590951790955582519889529551909416958701959095529151831685850152905190911690830152517fcd938817f1c47094d43be3d07e8c67e11766db2e11a2b4376e7ee937b15793a29181900360800190a150565b610e3f610e98565b73ffffffffffffffffffffffffffffffffffffffff8116610e8f576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610ca6565b6109998161149c565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108b9576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610ca6565b60008060008060008573ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f629190612382565b94509450509350935060008313610fd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54504d3a20436861696e6c696e6b207072696365203c3d2030000000000000006044820152606401610ca6565b610fe26202a300426122a8565b82101561104b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f54504d3a20496e636f6d706c65746520726f756e6400000000000000000000006044820152606401610ca6565b8369ffffffffffffffffffff168169ffffffffffffffffffff1610156110cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f54504d3a205374616c65207072696365000000000000000000000000000000006044820152606401610ca6565b5090949350505050565b6000821561111c57600754859061110b906fffffffffffffffffffffffffffffffff166a52b7d2dcc80cd2e40000006122bb565b6111159190612301565b9450611153565b6007546fffffffffffffffffffffffffffffffff16611146866a52b7d2dcc80cd2e40000006122bb565b6111509190612301565b94505b811561119d5760075470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1661118c86866122bb565b6111969190612301565b90506111d2565b600754849061118c9070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16876122bb565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e7400000000000000000000006044820152606401610ca6565b6008546060906000908160346112936101008901896123d2565b905003905080600014806112a75750806020145b61130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f54504d3a20696e76616c69642064617461206c656e67746800000000000000006044820152606401610ca6565b60095460035465ffffffffffff7001000000000000000000000000000000009092049190911660c08901350286019060009084906a52b7d2dcc80cd2e4000000028161135b5761135b6122d2565b0490508260200361139e5760006113766101008b018b6123d2565b6113859160549160349161243e565b61138e91612468565b90508181101561139c578091505b505b60006113aa83836108d7565b90506113e47f00000000000000000000000000000000000000000000000000000000000000006113dd60208d018d61218d565b30846116ef565b806113f260208c018c61218d565b60405160200161142292919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905260095460045491985061148d91600091760100000000000000000000000000000000000000000000900465ffffffffffff90811691160181611735565b95505050505050935093915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600854600080611523868801886124a4565b9150915060006115336000610658565b90506000846a52b7d2dcc80cd2e4000000830281611553576115536122d2565b6009549190049150700100000000000000000000000000000000900465ffffffffffff1686028701600061158782846108d7565b9050808611156115c3576115be7f000000000000000000000000000000000000000000000000000000000000000086838903611669565b6115f9565b808610156115f9576115f97f000000000000000000000000000000000000000000000000000000000000000086308985036116ef565b60408051828152602081018b905290810185905273ffffffffffffffffffffffffffffffffffffffff8616907f46caa0511cf037f06f57a0bf273a2ff04229f5b12fb04675234a6cbe2e7f1a899060600160405180910390a261165b8461176f565b505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526116ea91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061191c565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610a209186918216906323b872dd906084016116a3565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b8561175d576000611760565b60015b60ff16171790505b9392505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156117fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611820919061234f565b6009549091506fffffffffffffffffffffffffffffffff1681101561093557600061186b7f0000000000000000000000000000000000000000000000000000000000000000846119b2565b905061187681611ac2565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99047906024016000604051808303818588803b1580156118fe57600080fd5b505af1158015611912573d6000803e3d6000fd5b5050505050505050565b600061193e73ffffffffffffffffffffffffffffffffffffffff841683611b3b565b9050805160001415801561196357508080602001905181019061196191906124d4565b155b156116ea576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610ca6565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a45919061234f565b90506000611a68611a568386610c0a565b6002546301000000900460ff16611b49565b600154909150811015611a80576000925050506108fc565b600254611ab99086907f0000000000000000000000000000000000000000000000000000000000000000908590859062ffffff16611b69565b95945050505050565b6040517f49404b7c000000000000000000000000000000000000000000000000000000008152600481018290523060248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906349404b7c90604401610a9e565b60606108f983836000611d31565b60006103e8611b5b60ff8416826124f1565b6108ef9061ffff16856122bb565b604080516101008101825273ffffffffffffffffffffffffffffffffffffffff87811682528681166020830190815262ffffff8581168486019081527f0000000000000000000000000000000000000000000000000000000000000000841660608601818152426080880190815260a088018c815260c089018c8152600060e08b018181529b517f414bf3890000000000000000000000000000000000000000000000000000000081528b518b16600482015298518a1660248a0152955190961660448801529151871660648701525160848601525160a4850152915160c4840152945190921660e482015263414bf38990610104016020604051808303816000875af1925050508015611cb8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611cb59181019061234f565b60015b611d24576040805173ffffffffffffffffffffffffffffffffffffffff808a16825288166020820152908101869052606081018590527ff7edd4c6ec425decf715a8b8eaa3b65d3d86e31ad0ff750aa60fa834190f515f9060800160405180910390a160009150611d27565b91505b5095945050505050565b606081471015611d6f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610ca6565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051611d989190612513565b60006040518083038185875af1925050503d8060008114611dd5576040519150601f19603f3d011682016040523d82523d6000602084013e611dda565b606091505b5091509150611dea868383611df4565b9695505050505050565b606082611e0957611e0482611e83565b611768565b8151158015611e2d575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611e7c576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610ca6565b5080611768565b805115611e935780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611ed757600080fd5b813563ffffffff8116811461176857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461099957600080fd5b60008060408385031215611f2057600080fd5b8235611f2b81611eeb565b946020939093013593505050565b801515811461099957600080fd5b600060208284031215611f5957600080fd5b813561176881611f39565b600080600060608486031215611f7957600080fd5b833567ffffffffffffffff811115611f9057600080fd5b84016101408187031215611fa357600080fd5b95602085013595506040909401359392505050565b60005b83811015611fd3578181015183820152602001611fbb565b50506000910152565b6040815260008351806040840152611ffb816060850160208801611fb8565b602083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b60008060008060006080868803121561204d57600080fd5b85356003811061205c57600080fd5b9450602086013567ffffffffffffffff8082111561207957600080fd5b818801915088601f83011261208d57600080fd5b81358181111561209c57600080fd5b8960208285010111156120ae57600080fd5b9699602092909201985095966040810135965060600135945092505050565b600080604083850312156120e057600080fd5b50508035926020909101359150565b60006060828403121561210157600080fd5b6040516060810181811067ffffffffffffffff8211171561214b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282358152602083013562ffffff8116811461216857600080fd5b6020820152604083013560ff8116811461218157600080fd5b60408201529392505050565b60006020828403121561219f57600080fd5b813561176881611eeb565b803565ffffffffffff811681146121c057600080fd5b919050565b6000608082840312156121d757600080fd5b6040516080810181811067ffffffffffffffff82111715612221577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235815260208301356fffffffffffffffffffffffffffffffff8116811461224b57600080fd5b602082015261225c604084016121aa565b604082015261226d606084016121aa565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156108fc576108fc612279565b80820281158282048414176108fc576108fc612279565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612337577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156108fc576108fc612279565b60006020828403121561236157600080fd5b5051919050565b805169ffffffffffffffffffff811681146121c057600080fd5b600080600080600060a0868803121561239a57600080fd5b6123a386612368565b94506020860151935060408601519250606086015191506123c660808701612368565b90509295509295909350565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261240757600080fd5b83018035915067ffffffffffffffff82111561242257600080fd5b60200191503681900382131561243757600080fd5b9250929050565b6000808585111561244e57600080fd5b8386111561245b57600080fd5b5050820193919092039150565b803560208310156108fc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b600080604083850312156124b757600080fd5b8235915060208301356124c981611eeb565b809150509250929050565b6000602082840312156124e657600080fd5b815161176881611f39565b61ffff82811682821603908082111561250c5761250c612279565b5092915050565b60008251612525818460208701611fb8565b919091019291505056fea26469706673582212204d43bd3f3b844c345b83768b8f40c3613a05b0b00d582b48ad67f0fbc3d445a764736f6c63430008170033"; + +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..285f7c9c --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/VerifyingPaymaster__factory.ts @@ -0,0 +1,513 @@ +/* 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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 = + "0x60c06040523480156200001157600080fd5b50604051620016f2380380620016f28339810160408190526200003491620001b6565b8133806200005d57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b62000068816200008d565b506200007481620000dd565b6001600160a01b039081166080521660a0525062000220565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516301ffc9a760e01b8152639d95230160e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801562000129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014f9190620001f5565b6200019d5760405162461bcd60e51b815260206004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d617463680000604482015260640162000054565b50565b6001600160a01b03811681146200019d57600080fd5b60008060408385031215620001ca57600080fd5b8251620001d781620001a0565b6020840151909250620001ea81620001a0565b809150509250929050565b6000602082840312156200020857600080fd5b815180151581146200021957600080fd5b9392505050565b60805160a0516114746200027e600039600081816101340152610b4901526000818161027e0152818161034e015281816104180152818161062e015281816106fb0152818161078401528181610837015261096501526114746000f3fe6080604052600436106100e85760003560e01c80638da5cb5b1161008a578063c23a5cea11610059578063c23a5cea146102b5578063c399ec88146102d5578063d0e30db0146102ea578063f2fde38b146102f257600080fd5b80638da5cb5b1461021157806394d4ad601461023c578063b0d691fe1461026c578063bb9fe6bf146102a057600080fd5b80632f324181116100c65780632f32418114610180578063703ae88f146101ae578063715018a6146101dc5780637c627b21146101f157600080fd5b80630396cb60146100ed578063205c28781461010257806323d9ac9b14610122575b600080fd5b6101006100fb366004610f63565b610312565b005b34801561010e57600080fd5b5061010061011d366004610fb2565b6103c4565b34801561012e57600080fd5b506101567f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018c57600080fd5b506101a061019b366004611012565b61045c565b604051908152602001610177565b3480156101ba57600080fd5b506101ce6101c9366004611070565b610588565b6040516101779291906110be565b3480156101e857600080fd5b506101006105ac565b3480156101fd57600080fd5b5061010061020c36600461117a565b6105c0565b34801561021d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610156565b34801561024857600080fd5b5061025c6102573660046111e5565b6105dc565b6040516101779493929190611227565b34801561027857600080fd5b506101567f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ac57600080fd5b50610100610624565b3480156102c157600080fd5b506101006102d0366004611291565b6106ae565b3480156102e157600080fd5b506101a0610753565b610100610809565b3480156102fe57600080fd5b5061010061030d366004611291565b610891565b61031a6108fa565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b1580156103a857600080fd5b505af11580156103bc573d6000803e3d6000fd5b505050505050565b6103cc6108fa565b6040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b1580156103a857600080fd5b6000833580602086013561047360408801886112ae565b604051610481929190611313565b60405190819003902061049760608901896112ae565b6040516104a5929190611313565b60405190819003902060808901356104c16101008b018b6112ae565b6104d091603491601491611323565b6104d99161134d565b6040805173ffffffffffffffffffffffffffffffffffffffff90971660208801528601949094526060850192909252608084015260a08381019190915260c08381019290925287013560e08381019190915290870135610100830152860135610120820152466101408201523061016082015265ffffffffffff80861661018083015284166101a08201526101c001604051602081830303815290604052805190602001209150509392505050565b6060600061059461094d565b61059f8585856109ec565b915091505b935093915050565b6105b46108fa565b6105be6000610bd9565b565b6105c861094d565b6105d58585858585610c4e565b5050505050565b60008036816105ee8560348189611323565b8101906105fb9190611389565b9094509250858561060e603460406113bc565b610619928290611323565b949793965094505050565b61062c6108fa565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b50505050565b6106b66108fa565b6040517fc23a5cea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b15801561073f57600080fd5b505af11580156105d5573d6000803e3d6000fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080491906113f6565b905090565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99034906024016000604051808303818588803b15801561073f57600080fd5b6108996108fa565b73ffffffffffffffffffffffffffffffffffffffff81166108ee576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108f781610bd9565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105be576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016108e5565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e74000000000000000000000060448201526064016108e5565b6060600080803681610a056102576101008b018b6112ae565b929650909450925090506040811480610a1e5750604181145b610aac57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f566572696679696e675061796d61737465723a20696e76616c6964207369676e60448201527f6174757265206c656e67746820696e207061796d6173746572416e644461746160648201526084016108e5565b6000610aef610abc8b878761045c565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b9050610b318184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610cb092505050565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610bae57610b8f60018686610cdc565b60405180602001604052806000815250909650965050505050506105a4565b610bba60008686610cdc565b6040805160208101909152600081529b909a5098505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6d757374206f766572726964650000000000000000000000000000000000000060448201526064016108e5565b600080600080610cc08686610d14565b925092509250610cd08282610d61565b50909150505b92915050565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b85610d04576000610d07565b60015b60ff161717949350505050565b60008060008351604103610d4e5760208401516040850151606086015160001a610d4088828585610e69565b955095509550505050610d5a565b50508151600091506002905b9250925092565b6000826003811115610d7557610d7561140f565b03610d7e575050565b6001826003811115610d9257610d9261140f565b03610dc9576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115610ddd57610ddd61140f565b03610e17576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016108e5565b6003826003811115610e2b57610e2b61140f565b03610e65576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016108e5565b5050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610ea45750600091506003905082610f59565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610ef8573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610f4f57506000925060019150829050610f59565b9250600091508190505b9450945094915050565b600060208284031215610f7557600080fd5b813563ffffffff81168114610f8957600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108f757600080fd5b60008060408385031215610fc557600080fd5b8235610fd081610f90565b946020939093013593505050565b60006101408284031215610ff157600080fd5b50919050565b803565ffffffffffff8116811461100d57600080fd5b919050565b60008060006060848603121561102757600080fd5b833567ffffffffffffffff81111561103e57600080fd5b61104a86828701610fde565b93505061105960208501610ff7565b915061106760408501610ff7565b90509250925092565b60008060006060848603121561108557600080fd5b833567ffffffffffffffff81111561109c57600080fd5b6110a886828701610fde565b9660208601359650604090950135949350505050565b604081526000835180604084015260005b818110156110ec57602081870181015160608684010152016110cf565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150508260208301529392505050565b60008083601f84011261114357600080fd5b50813567ffffffffffffffff81111561115b57600080fd5b60208301915083602082850101111561117357600080fd5b9250929050565b60008060008060006080868803121561119257600080fd5b8535600381106111a157600080fd5b9450602086013567ffffffffffffffff8111156111bd57600080fd5b6111c988828901611131565b9699909850959660408101359660609091013595509350505050565b600080602083850312156111f857600080fd5b823567ffffffffffffffff81111561120f57600080fd5b61121b85828601611131565b90969095509350505050565b600065ffffffffffff8087168352808616602084015250606060408301528260608301528284608084013760006080848401015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905095945050505050565b6000602082840312156112a357600080fd5b8135610f8981610f90565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126112e357600080fd5b83018035915067ffffffffffffffff8211156112fe57600080fd5b60200191503681900382131561117357600080fd5b8183823760009101908152919050565b6000808585111561133357600080fd5b8386111561134057600080fd5b5050820193919092039150565b80356020831015610cd6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b6000806040838503121561139c57600080fd5b6113a583610ff7565b91506113b360208401610ff7565b90509250929050565b80820180821115610cd6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006020828403121561140857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220dbb607e8f24868e55ed2c18cf7ae46bb86b0a1d7d4e58dfadbce6725b40d569764736f6c63430008170033"; + +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/bls/BLSAccountFactory__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccountFactory__factory.ts new file mode 100644 index 00000000..08474ed5 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccountFactory__factory.ts @@ -0,0 +1,148 @@ +/* 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 { + BLSAccountFactory, + BLSAccountFactoryInterface, +} from "../../../samples/bls/BLSAccountFactory"; + +const _abi = [ + { + inputs: [ + { + internalType: "contract IEntryPoint", + name: "entryPoint", + type: "address", + }, + { + internalType: "address", + name: "aggregator", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [], + name: "accountImplementation", + outputs: [ + { + internalType: "contract BLSAccount", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "salt", + type: "uint256", + }, + { + internalType: "uint256[4]", + name: "aPublicKey", + type: "uint256[4]", + }, + ], + name: "createAccount", + outputs: [ + { + internalType: "contract BLSAccount", + name: "", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "salt", + type: "uint256", + }, + { + internalType: "uint256[4]", + name: "aPublicKey", + type: "uint256[4]", + }, + ], + name: "getAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x60a060405234801561001057600080fd5b50604051612e7f380380612e7f83398101604081905261002f916100aa565b818160405161003d90610085565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610070573d6000803e3d6000fd5b506001600160a01b0316608052506100e49050565b6122fa80610b8583390190565b6001600160a01b03811681146100a757600080fd5b50565b600080604083850312156100bd57600080fd5b82516100c881610092565b60208401519092506100d981610092565b809150509250929050565b608051610a7961010c60003960008181604b0152818161019b01526102b20152610a796000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806311464fbe1461004657806319c2a1b214610096578063de3398dd146100a9575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61006d6100a4366004610404565b6100bc565b61006d6100b7366004610466565b610283565b6000816100ca6080366104f1565b8114610136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67207075626b6579206f666673657400000000000000000000000000604482015260640160405180910390fd5b600061016b85856004806020026040519081016040528092919082600460200280828437600092019190915250610283915050565b905073ffffffffffffffffffffffffffffffffffffffff81163b80156101955750915061027d9050565b8560001b7f0000000000000000000000000000000000000000000000000000000000000000866040516024016101cb919061052b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fee472f36000000000000000000000000000000000000000000000000000000001790525161024b906103f7565b61025692919061055e565b8190604051809103906000f5905080158015610276573d6000803e3d6000fd5b5093505050505b92915050565b60006103be8360001b6040518060200161029c906103f7565b6020820181038252601f19601f820116604052507f0000000000000000000000000000000000000000000000000000000000000000856040516024016102e291906105cc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fee472f360000000000000000000000000000000000000000000000000000000017905290516103679392910161055e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526103a392916020016105fd565b604051602081830303815290604052805190602001206103c5565b9392505050565b60006103be8383306000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6104178061062d83390190565b60008060a0838503121561041757600080fd5b823591508360a08401111561042b57600080fd5b50926020919091019150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060a0838503121561047957600080fd5b82359150602084603f85011261048e57600080fd5b6040516080810181811067ffffffffffffffff821117156104b1576104b1610437565b6040528060a08601878111156104c657600080fd5b602087015b818110156104e257803583529184019184016104cb565b50505080925050509250929050565b8181038181111561027d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60808181019083833792915050565b60005b8381101561055557818101518382015260200161053d565b50506000910152565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000825180604084015261059981606085016020870161053a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b60808101818360005b60048110156105f45781518352602092830192909101906001016105d5565b50505092915050565b6000835161060f81846020880161053a565b83519083019061062381836020880161053a565b0194935050505056fe608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220d7f23a80daebb5531c9e4a18d87e812fca112e5df7e56433218edcc12bbe415d64736f6c63430008170033a264697066735822122061a7490eb5834ea5cebbac603f2186541731fb22272a335c10de9683a960352664736f6c6343000817003360e0604052306080523480156200001557600080fd5b50604051620022fa380380620022fa83398101604081905262000038916200012e565b6001600160a01b03821660a052816200005062000064565b506001600160a01b031660c052506200016d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000b55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001155780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6001600160a01b03811681146200011557600080fd5b600080604083850312156200014257600080fd5b82516200014f8162000118565b6020840151909250620001628162000118565b809150509250929050565b60805160a05160c051612117620001e360003960008181610259015261147c0152600081816103d0015281816107d00152818161087e01528181610a2c01528181610c6901528181610ee0015281816112d7015261156901526000818161101e01528181611047015261126801526121176000f3fe60806040526004361061016e5760003560e01c80638da5cb5b116100cb578063c399ec881161007f578063e02afbae11610059578063e02afbae146104a6578063ee472f36146104c8578063f23a6e61146104e857600080fd5b8063c399ec881461045c578063c4d66de814610471578063d087d2881461049157600080fd5b8063b0d691fe116100b0578063b0d691fe146103c1578063b61d27f6146103f4578063bc197c811461041457600080fd5b80638da5cb5b1461033e578063ad3cb1cc1461036b57600080fd5b80634a58db19116101225780634f1ef286116101075780634f1ef286146102e857806352d1902d146102fb5780638803e4511461031e57600080fd5b80634a58db19146102c05780634d44560d146102c857600080fd5b806318fc5c441161015357806318fc5c4414610225578063245a7bfc1461024757806347e1da2a146102a057600080fd5b806301ffc9a71461017a578063150b7a02146101af57600080fd5b3661017557005b600080fd5b34801561018657600080fd5b5061019a6101953660046118e2565b61052e565b60405190151581526020015b60405180910390f35b3480156101bb57600080fd5b506101f46101ca36600461198f565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101a6565b34801561023157600080fd5b50610245610240366004611a80565b610613565b005b34801561025357600080fd5b5061027b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b3480156102ac57600080fd5b506102456102bb366004611b43565b610627565b6102456107ce565b3480156102d457600080fd5b506102456102e3366004611bdd565b610874565b6102456102f6366004611c09565b610923565b34801561030757600080fd5b50610310610942565b6040519081526020016101a6565b34801561032a57600080fd5b50610310610339366004611ccf565b610971565b34801561034a57600080fd5b5060005461027b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561037757600080fd5b506103b46040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101a69190611d47565b3480156103cd57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061027b565b34801561040057600080fd5b5061024561040f366004611d98565b610997565b34801561042057600080fd5b506101f461042f366004611df4565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561046857600080fd5b506103106109e6565b34801561047d57600080fd5b5061024561048c366004611eb3565b610a9d565b34801561049d57600080fd5b50610310610c1c565b3480156104b257600080fd5b506104bb610c98565b6040516101a69190611ef3565b3480156104d457600080fd5b506102456104e3366004611a80565b610cd3565b3480156104f457600080fd5b506101f4610503366004611f01565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a020000000000000000000000000000000000000000000000000000000014806105c157507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061060d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b61061b610df4565b61062481610e81565b50565b61062f610ec8565b8481148015610645575082158061064557508281145b6106b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206172726179206c656e677468730000000000000000000000000060448201526064015b60405180910390fd5b600083900361075c5760005b858110156107565761074e8787838181106106d9576106d9611f6b565b90506020020160208101906106ee9190611eb3565b600085858581811061070257610702611f6b565b90506020028101906107149190611f9a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f8992505050565b6001016106bc565b506107c6565b60005b858110156107c4576107bc87878381811061077c5761077c611f6b565b90506020020160208101906107919190611eb3565b8686848181106107a3576107a3611f6b565b9050602002013585858581811061070257610702611f6b565b60010161075f565b505b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024016000604051808303818588803b15801561085957600080fd5b505af115801561086d573d6000803e3d6000fd5b5050505050565b61087c610df4565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c287890604401600060405180830381600087803b15801561090f57600080fd5b505af11580156107c6573d6000803e3d6000fd5b61092b611006565b6109348261110a565b61093e8282611112565b5050565b600061094c611250565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061097b6112bf565b610985848461135e565b9050610990826114b4565b9392505050565b61099f610ec8565b6109e0848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f8992505050565b50505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a989190611fff565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610ae85750825b905060008267ffffffffffffffff166001148015610b055750303b155b905081158015610b13575080155b15610b4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610bab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610bb48661151f565b83156107c65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a57565b610ca0611871565b6040805160808101918290529060019060049082845b815481526020019060010190808311610cb6575050505050905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d1e5750825b905060008267ffffffffffffffff166001148015610d3b5750303b155b905081158015610d49575080155b15610d80576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610de15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610deb600061151f565b610bb486610e81565b60005473ffffffffffffffffffffffffffffffffffffffff16331480610e1957503330145b610e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e65720000000000000000000000000000000000000000000060448201526064016106a7565b565b7f42e4c4ce1432650f17e41c4ea77ed12c0ab20b229d3ffd84a2ebc9f8abb25a83600182604051610eb3929190612018565b60405180910390a161093e600182600461188f565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610f23575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e7460448201526064016106a7565b6000808473ffffffffffffffffffffffffffffffffffffffff168484604051610fb29190612051565b60006040518083038185875af1925050503d8060008114610fef576040519150601f19603f3d011682016040523d82523d6000602084013e610ff4565b606091505b50915091508161086d57805160208201fd5b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614806110d357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166110ba7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610e7f576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610624610df4565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611197575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261119491810190611fff565b60015b6111e5576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016106a7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611241576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016106a7565b61124b83836115b3565b505050565b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e7f576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016106a7565b600061136d6040840184611f9a565b15905061145b57600061137e610c98565b60405160200161138e9190611ef3565b604051602081830303815290604052805190602001209050808480604001906113b79190611f9a565b60806113c66040890189611f9a565b6113d192915061206d565b6113dc9282906120a7565b6040516113ea9291906120d1565b604051809103902014611459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f77726f6e67207075626b6579000000000000000000000000000000000000000060448201526064016106a7565b505b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680825260006020830181905291909201529392505050565b80156106245760405160009033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d806000811461086d576040519150601f19603f3d011682016040523d82523d6000602084013e61086d565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217835560405191927f0000000000000000000000000000000000000000000000000000000000000000909116917f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de9190a350565b6115bc82611616565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561160e5761124b82826116e5565b61093e611768565b8073ffffffffffffffffffffffffffffffffffffffff163b60000361167f576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016106a7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161170f9190612051565b600060405180830381855af49150503d806000811461174a576040519150601f19603f3d011682016040523d82523d6000602084013e61174f565b606091505b509150915061175f8583836117a0565b95945050505050565b3415610e7f576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826117b5576117b08261182f565b610990565b81511580156117d9575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611828576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016106a7565b5080610990565b80511561183f5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180608001604052806004906020820280368337509192915050565b82600481019282156118bd579160200282015b828111156118bd5782518255916020019190600101906118a2565b506118c99291506118cd565b5090565b5b808211156118c957600081556001016118ce565b6000602082840312156118f457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461099057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461062457600080fd5b60008083601f84011261195857600080fd5b50813567ffffffffffffffff81111561197057600080fd5b60208301915083602082850101111561198857600080fd5b9250929050565b6000806000806000608086880312156119a757600080fd5b85356119b281611924565b945060208601356119c281611924565b935060408601359250606086013567ffffffffffffffff8111156119e557600080fd5b6119f188828901611946565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611a7857611a78611a02565b604052919050565b600060808284031215611a9257600080fd5b82601f830112611aa157600080fd5b6040516080810181811067ffffffffffffffff82111715611ac457611ac4611a02565b604052806080840185811115611ad957600080fd5b845b81811015611af3578035835260209283019201611adb565b509195945050505050565b60008083601f840112611b1057600080fd5b50813567ffffffffffffffff811115611b2857600080fd5b6020830191508360208260051b850101111561198857600080fd5b60008060008060008060608789031215611b5c57600080fd5b863567ffffffffffffffff80821115611b7457600080fd5b611b808a838b01611afe565b90985096506020890135915080821115611b9957600080fd5b611ba58a838b01611afe565b90965094506040890135915080821115611bbe57600080fd5b50611bcb89828a01611afe565b979a9699509497509295939492505050565b60008060408385031215611bf057600080fd5b8235611bfb81611924565b946020939093013593505050565b60008060408385031215611c1c57600080fd5b8235611c2781611924565b915060208381013567ffffffffffffffff80821115611c4557600080fd5b818601915086601f830112611c5957600080fd5b813581811115611c6b57611c6b611a02565b611c9b847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611a31565b91508082528784828501011115611cb157600080fd5b80848401858401376000848284010152508093505050509250929050565b600080600060608486031215611ce457600080fd5b833567ffffffffffffffff811115611cfb57600080fd5b84016101408187031215611d0e57600080fd5b95602085013595506040909401359392505050565b60005b83811015611d3e578181015183820152602001611d26565b50506000910152565b6020815260008251806020840152611d66816040850160208701611d23565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060008060608587031215611dae57600080fd5b8435611db981611924565b935060208501359250604085013567ffffffffffffffff811115611ddc57600080fd5b611de887828801611946565b95989497509550505050565b60008060008060008060008060a0898b031215611e1057600080fd5b8835611e1b81611924565b97506020890135611e2b81611924565b9650604089013567ffffffffffffffff80821115611e4857600080fd5b611e548c838d01611afe565b909850965060608b0135915080821115611e6d57600080fd5b611e798c838d01611afe565b909650945060808b0135915080821115611e9257600080fd5b50611e9f8b828c01611946565b999c989b5096995094979396929594505050565b600060208284031215611ec557600080fd5b813561099081611924565b8060005b60048110156109e0578151845260209384019390910190600101611ed4565b6080810161060d8284611ed0565b60008060008060008060a08789031215611f1a57600080fd5b8635611f2581611924565b95506020870135611f3581611924565b94506040870135935060608701359250608087013567ffffffffffffffff811115611f5f57600080fd5b611bcb89828a01611946565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611fcf57600080fd5b83018035915067ffffffffffffffff821115611fea57600080fd5b60200191503681900382131561198857600080fd5b60006020828403121561201157600080fd5b5051919050565b6101008101818460005b6004811015612041578154835260209092019160019182019101612022565b5050506109906080830184611ed0565b60008251612063818460208701611d23565b9190910192915050565b8181038181111561060d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080858511156120b757600080fd5b838611156120c457600080fd5b5050820193919092039150565b818382376000910190815291905056fea2646970667358221220448b910dcf3b38ef4044b316fb402a43e2f5828bfea5dac7dc57d35726b7409664736f6c63430008170033"; + +type BLSAccountFactoryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: BLSAccountFactoryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class BLSAccountFactory__factory extends ContractFactory { + constructor(...args: BLSAccountFactoryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + entryPoint: PromiseOrValue, + aggregator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + entryPoint, + aggregator, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + entryPoint: PromiseOrValue, + aggregator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(entryPoint, aggregator, overrides || {}); + } + override attach(address: string): BLSAccountFactory { + return super.attach(address) as BLSAccountFactory; + } + override connect(signer: Signer): BLSAccountFactory__factory { + return super.connect(signer) as BLSAccountFactory__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): BLSAccountFactoryInterface { + return new utils.Interface(_abi) as BLSAccountFactoryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): BLSAccountFactory { + return new Contract(address, _abi, signerOrProvider) as BLSAccountFactory; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccount__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccount__factory.ts new file mode 100644 index 00000000..ed46f81d --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccount__factory.ts @@ -0,0 +1,661 @@ +/* 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 { + BLSAccount, + BLSAccountInterface, +} from "../../../samples/bls/BLSAccount"; + +const _abi = [ + { + inputs: [ + { + internalType: "contract IEntryPoint", + name: "anEntryPoint", + type: "address", + }, + { + internalType: "address", + name: "anAggregator", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "address", + name: "target", + type: "address", + }, + ], + name: "AddressEmptyCode", + 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: false, + internalType: "uint256[4]", + name: "oldPublicKey", + type: "uint256[4]", + }, + { + indexed: false, + internalType: "uint256[4]", + name: "newPublicKey", + type: "uint256[4]", + }, + ], + name: "PublicKeyChanged", + 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: "aggregator", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + 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: "getBlsPublicKey", + outputs: [ + { + internalType: "uint256[4]", + name: "", + type: "uint256[4]", + }, + ], + stateMutability: "view", + 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: "uint256[4]", + name: "aPublicKey", + type: "uint256[4]", + }, + ], + 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: "uint256[4]", + name: "newPublicKey", + type: "uint256[4]", + }, + ], + name: "setBlsPublicKey", + outputs: [], + stateMutability: "nonpayable", + 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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 = + "0x60e0604052306080523480156200001557600080fd5b50604051620022fa380380620022fa83398101604081905262000038916200012e565b6001600160a01b03821660a052816200005062000064565b506001600160a01b031660c052506200016d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000b55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001155780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6001600160a01b03811681146200011557600080fd5b600080604083850312156200014257600080fd5b82516200014f8162000118565b6020840151909250620001628162000118565b809150509250929050565b60805160a05160c051612117620001e360003960008181610259015261147c0152600081816103d0015281816107d00152818161087e01528181610a2c01528181610c6901528181610ee0015281816112d7015261156901526000818161101e01528181611047015261126801526121176000f3fe60806040526004361061016e5760003560e01c80638da5cb5b116100cb578063c399ec881161007f578063e02afbae11610059578063e02afbae146104a6578063ee472f36146104c8578063f23a6e61146104e857600080fd5b8063c399ec881461045c578063c4d66de814610471578063d087d2881461049157600080fd5b8063b0d691fe116100b0578063b0d691fe146103c1578063b61d27f6146103f4578063bc197c811461041457600080fd5b80638da5cb5b1461033e578063ad3cb1cc1461036b57600080fd5b80634a58db19116101225780634f1ef286116101075780634f1ef286146102e857806352d1902d146102fb5780638803e4511461031e57600080fd5b80634a58db19146102c05780634d44560d146102c857600080fd5b806318fc5c441161015357806318fc5c4414610225578063245a7bfc1461024757806347e1da2a146102a057600080fd5b806301ffc9a71461017a578063150b7a02146101af57600080fd5b3661017557005b600080fd5b34801561018657600080fd5b5061019a6101953660046118e2565b61052e565b60405190151581526020015b60405180910390f35b3480156101bb57600080fd5b506101f46101ca36600461198f565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101a6565b34801561023157600080fd5b50610245610240366004611a80565b610613565b005b34801561025357600080fd5b5061027b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b3480156102ac57600080fd5b506102456102bb366004611b43565b610627565b6102456107ce565b3480156102d457600080fd5b506102456102e3366004611bdd565b610874565b6102456102f6366004611c09565b610923565b34801561030757600080fd5b50610310610942565b6040519081526020016101a6565b34801561032a57600080fd5b50610310610339366004611ccf565b610971565b34801561034a57600080fd5b5060005461027b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561037757600080fd5b506103b46040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101a69190611d47565b3480156103cd57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061027b565b34801561040057600080fd5b5061024561040f366004611d98565b610997565b34801561042057600080fd5b506101f461042f366004611df4565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561046857600080fd5b506103106109e6565b34801561047d57600080fd5b5061024561048c366004611eb3565b610a9d565b34801561049d57600080fd5b50610310610c1c565b3480156104b257600080fd5b506104bb610c98565b6040516101a69190611ef3565b3480156104d457600080fd5b506102456104e3366004611a80565b610cd3565b3480156104f457600080fd5b506101f4610503366004611f01565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a020000000000000000000000000000000000000000000000000000000014806105c157507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061060d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b61061b610df4565b61062481610e81565b50565b61062f610ec8565b8481148015610645575082158061064557508281145b6106b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206172726179206c656e677468730000000000000000000000000060448201526064015b60405180910390fd5b600083900361075c5760005b858110156107565761074e8787838181106106d9576106d9611f6b565b90506020020160208101906106ee9190611eb3565b600085858581811061070257610702611f6b565b90506020028101906107149190611f9a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f8992505050565b6001016106bc565b506107c6565b60005b858110156107c4576107bc87878381811061077c5761077c611f6b565b90506020020160208101906107919190611eb3565b8686848181106107a3576107a3611f6b565b9050602002013585858581811061070257610702611f6b565b60010161075f565b505b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024016000604051808303818588803b15801561085957600080fd5b505af115801561086d573d6000803e3d6000fd5b5050505050565b61087c610df4565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c287890604401600060405180830381600087803b15801561090f57600080fd5b505af11580156107c6573d6000803e3d6000fd5b61092b611006565b6109348261110a565b61093e8282611112565b5050565b600061094c611250565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061097b6112bf565b610985848461135e565b9050610990826114b4565b9392505050565b61099f610ec8565b6109e0848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f8992505050565b50505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a989190611fff565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610ae85750825b905060008267ffffffffffffffff166001148015610b055750303b155b905081158015610b13575080155b15610b4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610bab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610bb48661151f565b83156107c65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a57565b610ca0611871565b6040805160808101918290529060019060049082845b815481526020019060010190808311610cb6575050505050905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d1e5750825b905060008267ffffffffffffffff166001148015610d3b5750303b155b905081158015610d49575080155b15610d80576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610de15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610deb600061151f565b610bb486610e81565b60005473ffffffffffffffffffffffffffffffffffffffff16331480610e1957503330145b610e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e65720000000000000000000000000000000000000000000060448201526064016106a7565b565b7f42e4c4ce1432650f17e41c4ea77ed12c0ab20b229d3ffd84a2ebc9f8abb25a83600182604051610eb3929190612018565b60405180910390a161093e600182600461188f565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610f23575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e7460448201526064016106a7565b6000808473ffffffffffffffffffffffffffffffffffffffff168484604051610fb29190612051565b60006040518083038185875af1925050503d8060008114610fef576040519150601f19603f3d011682016040523d82523d6000602084013e610ff4565b606091505b50915091508161086d57805160208201fd5b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614806110d357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166110ba7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610e7f576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610624610df4565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611197575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261119491810190611fff565b60015b6111e5576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016106a7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611241576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016106a7565b61124b83836115b3565b505050565b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e7f576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016106a7565b600061136d6040840184611f9a565b15905061145b57600061137e610c98565b60405160200161138e9190611ef3565b604051602081830303815290604052805190602001209050808480604001906113b79190611f9a565b60806113c66040890189611f9a565b6113d192915061206d565b6113dc9282906120a7565b6040516113ea9291906120d1565b604051809103902014611459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f77726f6e67207075626b6579000000000000000000000000000000000000000060448201526064016106a7565b505b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680825260006020830181905291909201529392505050565b80156106245760405160009033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d806000811461086d576040519150601f19603f3d011682016040523d82523d6000602084013e61086d565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217835560405191927f0000000000000000000000000000000000000000000000000000000000000000909116917f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de9190a350565b6115bc82611616565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561160e5761124b82826116e5565b61093e611768565b8073ffffffffffffffffffffffffffffffffffffffff163b60000361167f576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016106a7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161170f9190612051565b600060405180830381855af49150503d806000811461174a576040519150601f19603f3d011682016040523d82523d6000602084013e61174f565b606091505b509150915061175f8583836117a0565b95945050505050565b3415610e7f576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826117b5576117b08261182f565b610990565b81511580156117d9575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611828576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016106a7565b5080610990565b80511561183f5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180608001604052806004906020820280368337509192915050565b82600481019282156118bd579160200282015b828111156118bd5782518255916020019190600101906118a2565b506118c99291506118cd565b5090565b5b808211156118c957600081556001016118ce565b6000602082840312156118f457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461099057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461062457600080fd5b60008083601f84011261195857600080fd5b50813567ffffffffffffffff81111561197057600080fd5b60208301915083602082850101111561198857600080fd5b9250929050565b6000806000806000608086880312156119a757600080fd5b85356119b281611924565b945060208601356119c281611924565b935060408601359250606086013567ffffffffffffffff8111156119e557600080fd5b6119f188828901611946565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611a7857611a78611a02565b604052919050565b600060808284031215611a9257600080fd5b82601f830112611aa157600080fd5b6040516080810181811067ffffffffffffffff82111715611ac457611ac4611a02565b604052806080840185811115611ad957600080fd5b845b81811015611af3578035835260209283019201611adb565b509195945050505050565b60008083601f840112611b1057600080fd5b50813567ffffffffffffffff811115611b2857600080fd5b6020830191508360208260051b850101111561198857600080fd5b60008060008060008060608789031215611b5c57600080fd5b863567ffffffffffffffff80821115611b7457600080fd5b611b808a838b01611afe565b90985096506020890135915080821115611b9957600080fd5b611ba58a838b01611afe565b90965094506040890135915080821115611bbe57600080fd5b50611bcb89828a01611afe565b979a9699509497509295939492505050565b60008060408385031215611bf057600080fd5b8235611bfb81611924565b946020939093013593505050565b60008060408385031215611c1c57600080fd5b8235611c2781611924565b915060208381013567ffffffffffffffff80821115611c4557600080fd5b818601915086601f830112611c5957600080fd5b813581811115611c6b57611c6b611a02565b611c9b847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611a31565b91508082528784828501011115611cb157600080fd5b80848401858401376000848284010152508093505050509250929050565b600080600060608486031215611ce457600080fd5b833567ffffffffffffffff811115611cfb57600080fd5b84016101408187031215611d0e57600080fd5b95602085013595506040909401359392505050565b60005b83811015611d3e578181015183820152602001611d26565b50506000910152565b6020815260008251806020840152611d66816040850160208701611d23565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060008060608587031215611dae57600080fd5b8435611db981611924565b935060208501359250604085013567ffffffffffffffff811115611ddc57600080fd5b611de887828801611946565b95989497509550505050565b60008060008060008060008060a0898b031215611e1057600080fd5b8835611e1b81611924565b97506020890135611e2b81611924565b9650604089013567ffffffffffffffff80821115611e4857600080fd5b611e548c838d01611afe565b909850965060608b0135915080821115611e6d57600080fd5b611e798c838d01611afe565b909650945060808b0135915080821115611e9257600080fd5b50611e9f8b828c01611946565b999c989b5096995094979396929594505050565b600060208284031215611ec557600080fd5b813561099081611924565b8060005b60048110156109e0578151845260209384019390910190600101611ed4565b6080810161060d8284611ed0565b60008060008060008060a08789031215611f1a57600080fd5b8635611f2581611924565b95506020870135611f3581611924565b94506040870135935060608701359250608087013567ffffffffffffffff811115611f5f57600080fd5b611bcb89828a01611946565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611fcf57600080fd5b83018035915067ffffffffffffffff821115611fea57600080fd5b60200191503681900382131561198857600080fd5b60006020828403121561201157600080fd5b5051919050565b6101008101818460005b6004811015612041578154835260209092019160019182019101612022565b5050506109906080830184611ed0565b60008251612063818460208701611d23565b9190910192915050565b8181038181111561060d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080858511156120b757600080fd5b838611156120c457600080fd5b5050820193919092039150565b818382376000910190815291905056fea2646970667358221220448b910dcf3b38ef4044b316fb402a43e2f5828bfea5dac7dc57d35726b7409664736f6c63430008170033"; + +type BLSAccountConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: BLSAccountConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class BLSAccount__factory extends ContractFactory { + constructor(...args: BLSAccountConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + anEntryPoint: PromiseOrValue, + anAggregator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + anEntryPoint, + anAggregator, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + anEntryPoint: PromiseOrValue, + anAggregator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + anEntryPoint, + anAggregator, + overrides || {} + ); + } + override attach(address: string): BLSAccount { + return super.attach(address) as BLSAccount; + } + override connect(signer: Signer): BLSAccount__factory { + return super.connect(signer) as BLSAccount__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): BLSAccountInterface { + return new utils.Interface(_abi) as BLSAccountInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): BLSAccount { + return new Contract(address, _abi, signerOrProvider) as BLSAccount; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/samples/bls/BLSSignatureAggregator__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/bls/BLSSignatureAggregator__factory.ts new file mode 100644 index 00000000..96cf1ef0 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/bls/BLSSignatureAggregator__factory.ts @@ -0,0 +1,612 @@ +/* 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 { + BLSSignatureAggregator, + BLSSignatureAggregatorInterface, +} from "../../../samples/bls/BLSSignatureAggregator"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_entryPoint", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [], + name: "BLS_DOMAIN", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "N", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint32", + name: "delay", + type: "uint32", + }, + ], + name: "addStake", + 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation[]", + name: "userOps", + type: "tuple[]", + }, + ], + name: "aggregateSignatures", + outputs: [ + { + internalType: "bytes", + name: "aggregatedSignature", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "entryPoint", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "getTrailingPublicKey", + outputs: [ + { + internalType: "uint256[4]", + name: "publicKey", + type: "uint256[4]", + }, + ], + stateMutability: "pure", + 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + ], + name: "getUserOpHash", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + ], + name: "getUserOpPublicKey", + outputs: [ + { + internalType: "uint256[4]", + name: "publicKey", + type: "uint256[4]", + }, + ], + 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + ], + name: "userOpToMessage", + outputs: [ + { + internalType: "uint256[2]", + name: "", + type: "uint256[2]", + }, + ], + 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple", + }, + ], + name: "validateUserOpSignature", + outputs: [ + { + internalType: "bytes", + name: "sigForUserOp", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x60a060405234801561001057600080fd5b50604051611cfe380380611cfe83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611c65610099600039600081816101c80152818161030b0152610b4e0152611c656000f3fe6080604052600436106100bb5760003560e01c80638ef24cba11610074578063c9e525df1161004e578063c9e525df1461022f578063e0ccb29214610263578063fe96cf231461029057600080fd5b80638ef24cba14610189578063b0d691fe146101b6578063b7620eb41461020f57600080fd5b80630396cb60116100a55780630396cb601461012757806333ecca7b1461013c5780638c1532901461016957600080fd5b80629d9250146100c057806302101e4914610107575b600080fd5b3480156100cc57600080fd5b506100f47fd84c4373167c517e9ccd66803f86d8a4f49e7e1315a7a73b516affea7428f82b81565b6040519081526020015b60405180910390f35b34801561011357600080fd5b506100f461012236600461152f565b6102b0565b61013a610135366004611564565b6102d7565b005b34801561014857600080fd5b5061015c6101573660046115d6565b610381565b6040516100fe919061167c565b34801561017557600080fd5b5061015c61018436600461168f565b6104df565b34801561019557600080fd5b506101a96101a436600461152f565b610647565b6040516100fe91906116cb565b3480156101c257600080fd5b506101ea7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100fe565b34801561021b57600080fd5b506101a961022a3660046116fc565b6106e8565b34801561023b57600080fd5b506100f47f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4781565b34801561026f57600080fd5b5061028361027e36600461152f565b6107e0565b6040516100fe9190611731565b34801561029c57600080fd5b5061013a6102ab366004611759565b610802565b6000806102c46102bf84610647565b610adf565b90506102d08382610b0f565b9392505050565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b15801561036557600080fd5b505af1158015610379573d6000803e3d6000fd5b505050505050565b606060008267ffffffffffffffff81111561039e5761039e6112de565b6040519080825280602002602001820160405280156103e357816020015b60408051808201909152600080825260208201528152602001906001900390816103bc5790505b50905060005b815181101561047557600080868684818110610407576104076117f0565b9050602002810190610419919061181f565b6104289061012081019061185d565b81019061043591906118c2565b91509150604051806040016040528083815260200182815250848481518110610460576104606117f0565b602090810291909101015250506001016103e9565b5060006104a2827f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610b94565b80516020808301516040519394506104c593909101918252602082015260400190565b604051602081830303815290604052925050505b92915050565b606060006104f161012084018461185d565b8101906104fe91906118e4565b9050600061050e6101a485611944565b9050600061052c61051e86611944565b61052784610adf565b610c75565b6040517febbdac9100000000000000000000000000000000000000000000000000000000815290915073__$b745eded4b1aee1100521038d570dd85f1$__9063ebbdac91906105839086908690869060040161199c565b602060405180830381865af41580156105a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c491906119c5565b61062f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f424c533a2077726f6e672073696700000000000000000000000000000000000060448201526064015b60405180910390fd5b50506040805160208101909152600081529392505050565b61064f6112a2565b604082015180511561066b57610664816106e8565b91506106e2565b826000015173ffffffffffffffffffffffffffffffffffffffff1663e02afbae61c3506040518263ffffffff1660e01b81526004016080604051808303818786fa1580156106bd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906102d091906119e7565b50919050565b6106f06112a2565b81516080811161075c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6461746120746f6f2073686f727420666f7220736967000000000000000000006044820152606401610626565b9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa081015182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc081015160208301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810151604083015251606082015290565b6107e86112c0565b60006107f66102bf84610647565b90506102d08382610c75565b6040811461086c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f424c533a20696e76616c6964207369676e6174757265000000000000000000006044820152606401610626565b600061087a828401846118e4565b90508360008167ffffffffffffffff811115610898576108986112de565b6040519080825280602002602001820160405280156108d157816020015b6108be6112a2565b8152602001906001900390816108b65790505b50905060008267ffffffffffffffff8111156108ef576108ef6112de565b60405190808252806020026020018201604052801561092857816020015b6109156112c0565b81526020019060019003908161090d5790505b50905060005b838110156109d957600089898381811061094a5761094a6117f0565b905060200281019061095c919061181f565b61096590611944565b905061097081610647565b848381518110610982576109826117f0565b60200260200101819052506109b3816105278685815181106109a6576109a66117f0565b6020026020010151610adf565b8383815181106109c5576109c56117f0565b60209081029190910101525060010161092e565b506040517f9141376300000000000000000000000000000000000000000000000000000000815273__$b745eded4b1aee1100521038d570dd85f1$__90639141376390610a2e90879086908690600401611a5a565b602060405180830381865af4158015610a4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6f91906119c5565b610ad5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f424c533a2076616c69646174655369676e617475726573206661696c656400006044820152606401610626565b5050505050505050565b600081604051602001610af291906116cb565b604051602081830303815290604052805190602001209050919050565b6000610b1a83610d4d565b604080516020810192909252810183905230606082015246608082015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660a082015260c00160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600083600081518110610bbd57610bbd6117f0565b6020026020010151600001519050600084600081518110610be057610be06117f0565b602090810291909101810151015190506001805b8651811015610c5657610c478484848a8581518110610c1557610c156117f0565b6020026020010151600001518b8681518110610c3357610c336117f0565b60200260200101516020015160018c610df1565b91955093509150600101610bf4565b50610c638383838861113e565b90855260208501525091949350505050565b610c7d6112c0565b6000610c898484610b0f565b905073__$b745eded4b1aee1100521038d570dd85f1$__63a850a9097fd84c4373167c517e9ccd66803f86d8a4f49e7e1315a7a73b516affea7428f82b83604051602001610cd991815260200190565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610d05929190611afe565b6040805180830381865af4158015610d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d459190611b17565b949350505050565b80516020808301516040808501518051908401206060860151805190850120608087015160a088015160c089015160e08a01516101008b01518051908a0120965160009a610af29a909998910173ffffffffffffffffffffffffffffffffffffffff999099168952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6000808089158015610e01575088155b15610e13575085915084905083611131565b86158015610e1f575085155b15610e31575088915087905086611131565b610e396112a2565b8480610e4757610e47611b6c565b898a0981528480610e5a57610e5a611b6c565b81518a0960208201528480610e7157610e71611b6c565b86870960408201528480610e8757610e87611b6c565b6040820151870960608201526040805160808101909152808680610ead57610ead611b6c565b60408401518e0981526020018680610ec757610ec7611b6c565b60608401518d0981526020018680610ee157610ee1611b6c565b83518b0981526020018680610ef857610ef8611b6c565b60208401518a09905260408101518151919250141580610f2057506060810151602082015114155b610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f557365206a6163446f75626c652066756e6374696f6e20696e737465616400006044820152606401610626565b610f8e6112a2565b8580610f9c57610f9c611b6c565b8251610fa89088611bca565b60408401510881528580610fbe57610fbe611b6c565b6020830151610fcd9088611bca565b60608401510860208201528580610fe657610fe6611b6c565b8151800960408201528580610ffd57610ffd611b6c565b815160408301510960608201526000868061101a5761101a611b6c565b60608301516110299089611bca565b888061103757611037611b6c565b60208501518009089050868061104f5761104f611b6c565b878061105d5761105d611b6c565b888061106b5761106b611b6c565b60408501518651096002096110809089611bca565b820890506000878061109457611094611b6c565b88806110a2576110a2611b6c565b6110ac848b611bca565b8a806110ba576110ba611b6c565b604087015188510908602085015109905087806110d9576110d9611b6c565b88806110e7576110e7611b6c565b60608501516020870151096110fc908a611bca565b820890506000888061111057611110611b6c565b898061111e5761111e611b6c565b8b8f098551099297509095509093505050505b9750975097945050505050565b600080600061114d85856111ad565b90506000848061115f5761115f611b6c565b82830990506000858061117457611174611b6c565b828a0990506000868061118957611189611b6c565b878061119757611197611b6c565b8486098a09919a91995090975050505050505050565b600082158015906111be5750818314155b80156111c957508115155b61122f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c6964206e756d6265720000000000000000000000000000000000006044820152606401610626565b6000600183825b8615611297576112468783611bdd565b905082868061125757611257611b6c565b878061126557611265611b6c565b8584096112729089611bca565b86089094509250866112848183611c18565b61128e9084611bca565b97509150611236565b509195945050505050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715611331576113316112de565b60405290565b6040805190810167ffffffffffffffff81118282101715611331576113316112de565b803573ffffffffffffffffffffffffffffffffffffffff8116811461137e57600080fd5b919050565b600082601f83011261139457600080fd5b813567ffffffffffffffff808211156113af576113af6112de565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156113f5576113f56112de565b8160405283815286602085880101111561140e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000610140828403121561144157600080fd5b61144961130d565b90506114548261135a565b815260208201356020820152604082013567ffffffffffffffff8082111561147b57600080fd5b61148785838601611383565b604084015260608401359150808211156114a057600080fd5b6114ac85838601611383565b60608401526080840135608084015260a084013560a084015260c084013560c084015260e084013560e0840152610100915081840135818111156114ef57600080fd5b6114fb86828701611383565b83850152506101209150818401358181111561151657600080fd5b61152286828701611383565b8385015250505092915050565b60006020828403121561154157600080fd5b813567ffffffffffffffff81111561155857600080fd5b610d458482850161142e565b60006020828403121561157657600080fd5b813563ffffffff811681146102d057600080fd5b60008083601f84011261159c57600080fd5b50813567ffffffffffffffff8111156115b457600080fd5b6020830191508360208260051b85010111156115cf57600080fd5b9250929050565b600080602083850312156115e957600080fd5b823567ffffffffffffffff81111561160057600080fd5b61160c8582860161158a565b90969095509350505050565b6000815180845260005b8181101561163e57602081850181015186830182015201611622565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006102d06020830184611618565b6000602082840312156116a157600080fd5b813567ffffffffffffffff8111156116b857600080fd5b820161014081850312156102d057600080fd5b60808101818360005b60048110156116f35781518352602092830192909101906001016116d4565b50505092915050565b60006020828403121561170e57600080fd5b813567ffffffffffffffff81111561172557600080fd5b610d4584828501611383565b60408101818360005b60028110156116f357815183526020928301929091019060010161173a565b6000806000806040858703121561176f57600080fd5b843567ffffffffffffffff8082111561178757600080fd5b6117938883890161158a565b909650945060208701359150808211156117ac57600080fd5b818701915087601f8301126117c057600080fd5b8135818111156117cf57600080fd5b8860208285010111156117e157600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec183360301811261185357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261189257600080fd5b83018035915067ffffffffffffffff8211156118ad57600080fd5b6020019150368190038213156115cf57600080fd5b600080604083850312156118d557600080fd5b50508035926020909101359150565b6000604082840312156118f657600080fd5b82601f83011261190557600080fd5b61190d611337565b80604084018581111561191f57600080fd5b845b81811015611939578035845260209384019301611921565b509095945050505050565b60006104d9368361142e565b8060005b6002811015611973578151845260209384019390910190600101611954565b50505050565b8060005b600481101561197357815184526020938401939091019060010161197d565b61010081016119ab8286611950565b6119b86040830185611979565b610d4560c0830184611950565b6000602082840312156119d757600080fd5b815180151581146102d057600080fd5b6000608082840312156119f957600080fd5b82601f830112611a0857600080fd5b6040516080810181811067ffffffffffffffff82111715611a2b57611a2b6112de565b604052806080840185811115611a4057600080fd5b845b81811015611297578051835260209283019201611a42565b60006080808301611a6b8488611950565b60406080604086015281875180845260a087019150602093506020890160005b82811015611aae57611a9e848351611979565b9286019290850190600101611a8b565b50505085810360608701528651808252602091820194509087019060005b81811015611aef57611adf868451611950565b9483019491840191600101611acc565b50939998505050505050505050565b828152604060208201526000610d456040830184611618565b600060408284031215611b2957600080fd5b82601f830112611b3857600080fd5b611b40611337565b806040840185811115611b5257600080fd5b845b81811015611939578051845260209384019301611b54565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104d9576104d9611b9b565b600082611c13577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176104d9576104d9611b9b56fea2646970667358221220abac851e71bdec03b2dc4a74d19cd42fc6aaad7e7b79d7679c8e7615de1200a664736f6c63430008170033"; + +type BLSSignatureAggregatorConstructorParams = + | [ + linkLibraryAddresses: BLSSignatureAggregatorLibraryAddresses, + signer?: Signer + ] + | ConstructorParameters; + +const isSuperArgs = ( + xs: BLSSignatureAggregatorConstructorParams +): xs is ConstructorParameters => { + return ( + typeof xs[0] === "string" || + (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || + "_isInterface" in xs[0] + ); +}; + +export class BLSSignatureAggregator__factory extends ContractFactory { + constructor(...args: BLSSignatureAggregatorConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + const [linkLibraryAddresses, signer] = args; + super( + _abi, + BLSSignatureAggregator__factory.linkBytecode(linkLibraryAddresses), + signer + ); + } + } + + static linkBytecode( + linkLibraryAddresses: BLSSignatureAggregatorLibraryAddresses + ): string { + let linkedBytecode = _bytecode; + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$b745eded4b1aee1100521038d570dd85f1\\$__", "g"), + linkLibraryAddresses["contracts/samples/bls/lib/BLSOpen.sol:BLSOpen"] + .replace(/^0x/, "") + .toLowerCase() + ); + + return linkedBytecode; + } + + 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): BLSSignatureAggregator { + return super.attach(address) as BLSSignatureAggregator; + } + override connect(signer: Signer): BLSSignatureAggregator__factory { + return super.connect(signer) as BLSSignatureAggregator__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): BLSSignatureAggregatorInterface { + return new utils.Interface(_abi) as BLSSignatureAggregatorInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): BLSSignatureAggregator { + return new Contract( + address, + _abi, + signerOrProvider + ) as BLSSignatureAggregator; + } +} + +export interface BLSSignatureAggregatorLibraryAddresses { + ["contracts/samples/bls/lib/BLSOpen.sol:BLSOpen"]: string; +} diff --git a/packages/types/src/contracts/EPv7/factories/samples/bls/IBLSAccount__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/bls/IBLSAccount__factory.ts new file mode 100644 index 00000000..a71c0c5e --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/bls/IBLSAccount__factory.ts @@ -0,0 +1,139 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IBLSAccount, + IBLSAccountInterface, +} from "../../../samples/bls/IBLSAccount"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256[4]", + name: "oldPublicKey", + type: "uint256[4]", + }, + { + indexed: false, + internalType: "uint256[4]", + name: "newPublicKey", + type: "uint256[4]", + }, + ], + name: "PublicKeyChanged", + type: "event", + }, + { + inputs: [], + name: "getBlsPublicKey", + outputs: [ + { + internalType: "uint256[4]", + name: "", + type: "uint256[4]", + }, + ], + 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: "uint256", + name: "maxFeePerGas", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256", + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + internalType: "struct 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 IBLSAccount__factory { + static readonly abi = _abi; + static createInterface(): IBLSAccountInterface { + return new utils.Interface(_abi) as IBLSAccountInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IBLSAccount { + return new Contract(address, _abi, signerOrProvider) as IBLSAccount; + } +} diff --git a/packages/types/src/contracts/EPv7/factories/samples/bls/index.ts b/packages/types/src/contracts/EPv7/factories/samples/bls/index.ts new file mode 100644 index 00000000..262460a7 --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/bls/index.ts @@ -0,0 +1,8 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as lib from "./lib"; +export { BLSAccount__factory } from "./BLSAccount__factory"; +export { BLSAccountFactory__factory } from "./BLSAccountFactory__factory"; +export { BLSSignatureAggregator__factory } from "./BLSSignatureAggregator__factory"; +export { IBLSAccount__factory } from "./IBLSAccount__factory"; 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..cd5ec86a --- /dev/null +++ b/packages/types/src/contracts/EPv7/factories/samples/index.ts @@ -0,0 +1,12 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as bls from "./bls"; +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..da5a6fd1 --- /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: "newPrice", + 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..f28a6533 --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/IAccount.ts @@ -0,0 +1,157 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + paymasterAndData: string; + signature: string; +}; + +export interface IAccountInterface extends utils.Interface { + functions: { + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,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..7ff4a58a --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/IAccountExecute.ts @@ -0,0 +1,148 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + paymasterAndData: string; + signature: string; +}; + +export interface IAccountExecuteInterface extends utils.Interface { + functions: { + "executeUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,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..86fac771 --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/IAggregator.ts @@ -0,0 +1,219 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + paymasterAndData: string; + signature: string; +}; + +export interface IAggregatorInterface extends utils.Interface { + functions: { + "aggregateSignatures((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[])": FunctionFragment; + "validateSignatures((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],bytes)": FunctionFragment; + "validateUserOpSignature((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,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..d744b7dc --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/IEntryPoint.ts @@ -0,0 +1,927 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + 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,uint256,uint256,bytes,bytes))": FunctionFragment; + "handleAggregatedOps(((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)": FunctionFragment; + "handleOps((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,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; + "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: "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 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; + + "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..d0434ad1 --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/IEntryPointSimulations.ts @@ -0,0 +1,1102 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + 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,uint256,uint256,bytes,bytes))": FunctionFragment; + "handleAggregatedOps(((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)": FunctionFragment; + "handleOps((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],address)": FunctionFragment; + "incrementNonce(uint192)": FunctionFragment; + "simulateHandleOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes),address,bytes)": FunctionFragment; + "simulateValidation((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,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; + "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: "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 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; + + "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..0208b86c --- /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..d7e26573 --- /dev/null +++ b/packages/types/src/contracts/EPv7/interfaces/IPaymaster.ts @@ -0,0 +1,212 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + paymasterAndData: string; + signature: string; +}; + +export interface IPaymasterInterface extends utils.Interface { + functions: { + "postOp(uint8,bytes,uint256,uint256)": FunctionFragment; + "validatePaymasterUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,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..d29afcf0 --- /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..ad43bbf3 --- /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..a7e88842 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/LegacyTokenPaymaster.ts @@ -0,0 +1,887 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + 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,uint256,uint256,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..565d3308 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/SimpleAccount.ts @@ -0,0 +1,766 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + 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,uint256,uint256,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..2066ee49 --- /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..3679222c --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/TokenPaymaster.ts @@ -0,0 +1,1005 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + 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; + tokenOracle: PromiseOrValue; + nativeOracle: PromiseOrValue; + tokenToNativeOracle: PromiseOrValue; + tokenOracleReverse: PromiseOrValue; + nativeOracleReverse: PromiseOrValue; + priceUpdateThreshold: PromiseOrValue; + }; + + export type OracleHelperConfigStructOutput = [ + number, + string, + string, + boolean, + boolean, + boolean, + number + ] & { + cacheTimeToLive: number; + tokenOracle: string; + nativeOracle: string; + tokenToNativeOracle: boolean; + tokenOracleReverse: boolean; + nativeOracleReverse: boolean; + priceUpdateThreshold: number; + }; +} + +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; + "tokenToWei(uint256,uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "uniswap()": FunctionFragment; + "unlockStake()": FunctionFragment; + "updateCachedPrice(bool)": FunctionFragment; + "validatePaymasterUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": FunctionFragment; + "weiToToken(uint256,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" + | "tokenToWei" + | "transferOwnership" + | "uniswap" + | "unlockStake" + | "updateCachedPrice" + | "validatePaymasterUserOp" + | "weiToToken" + | "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: "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: "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: "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: "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; + actualTokenPrice: 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]>; + + 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]>; + + 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; + + 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; + + 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; + + 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; + + 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, + actualTokenPrice?: null + ): UserOperationSponsoredEventFilter; + UserOperationSponsored( + user?: PromiseOrValue | null, + actualTokenCharge?: null, + actualGasCost?: null, + actualTokenPrice?: 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; + + 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; + + 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; + + 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; + + 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..ef7e6d62 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/VerifyingPaymaster.ts @@ -0,0 +1,628 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + 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,uint256,uint256,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,uint256,uint256,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/bls/BLSAccount.ts b/packages/types/src/contracts/EPv7/samples/bls/BLSAccount.ts new file mode 100644 index 00000000..bd322650 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/bls/BLSAccount.ts @@ -0,0 +1,972 @@ +/* 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + paymasterAndData: string; + signature: string; +}; + +export interface BLSAccountInterface extends utils.Interface { + functions: { + "UPGRADE_INTERFACE_VERSION()": FunctionFragment; + "addDeposit()": FunctionFragment; + "aggregator()": FunctionFragment; + "entryPoint()": FunctionFragment; + "execute(address,uint256,bytes)": FunctionFragment; + "executeBatch(address[],uint256[],bytes[])": FunctionFragment; + "getBlsPublicKey()": FunctionFragment; + "getDeposit()": FunctionFragment; + "getNonce()": FunctionFragment; + "initialize(address)": FunctionFragment; + "initialize(uint256[4])": 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; + "setBlsPublicKey(uint256[4])": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "upgradeToAndCall(address,bytes)": FunctionFragment; + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": FunctionFragment; + "withdrawDepositTo(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "UPGRADE_INTERFACE_VERSION" + | "addDeposit" + | "aggregator" + | "entryPoint" + | "execute" + | "executeBatch" + | "getBlsPublicKey" + | "getDeposit" + | "getNonce" + | "initialize(address)" + | "initialize(uint256[4])" + | "onERC1155BatchReceived" + | "onERC1155Received" + | "onERC721Received" + | "owner" + | "proxiableUUID" + | "setBlsPublicKey" + | "supportsInterface" + | "upgradeToAndCall" + | "validateUserOp" + | "withdrawDepositTo" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "UPGRADE_INTERFACE_VERSION", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "addDeposit", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "aggregator", + 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: "getBlsPublicKey", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getDeposit", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "getNonce", values?: undefined): string; + encodeFunctionData( + functionFragment: "initialize(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "initialize(uint256[4])", + values: [ + [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + 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: "setBlsPublicKey", + values: [ + [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ] + ): 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: "aggregator", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "entryPoint", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "executeBatch", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getBlsPublicKey", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getDeposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "getNonce", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "initialize(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "initialize(uint256[4])", + 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: "setBlsPublicKey", + 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; + "PublicKeyChanged(uint256[4],uint256[4])": EventFragment; + "SimpleAccountInitialized(address,address)": EventFragment; + "Upgraded(address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "PublicKeyChanged"): 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 PublicKeyChangedEventObject { + oldPublicKey: [BigNumber, BigNumber, BigNumber, BigNumber]; + newPublicKey: [BigNumber, BigNumber, BigNumber, BigNumber]; +} +export type PublicKeyChangedEvent = TypedEvent< + [ + [BigNumber, BigNumber, BigNumber, BigNumber], + [BigNumber, BigNumber, BigNumber, BigNumber] + ], + PublicKeyChangedEventObject +>; + +export type PublicKeyChangedEventFilter = + 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 BLSAccount extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: BLSAccountInterface; + + 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; + + aggregator(overrides?: CallOverrides): Promise<[string]>; + + 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; + + getBlsPublicKey( + overrides?: CallOverrides + ): Promise<[[BigNumber, BigNumber, BigNumber, BigNumber]]>; + + getDeposit(overrides?: CallOverrides): Promise<[BigNumber]>; + + getNonce(overrides?: CallOverrides): Promise<[BigNumber]>; + + "initialize(address)"( + anOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "initialize(uint256[4])"( + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + 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]>; + + setBlsPublicKey( + newPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + 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; + + aggregator(overrides?: CallOverrides): 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; + + getBlsPublicKey( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; + + getDeposit(overrides?: CallOverrides): Promise; + + getNonce(overrides?: CallOverrides): Promise; + + "initialize(address)"( + anOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "initialize(uint256[4])"( + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + 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; + + setBlsPublicKey( + newPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: Overrides & { from?: PromiseOrValue } + ): 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; + + aggregator(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; + + getBlsPublicKey( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; + + getDeposit(overrides?: CallOverrides): Promise; + + getNonce(overrides?: CallOverrides): Promise; + + "initialize(address)"( + anOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "initialize(uint256[4])"( + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + 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; + + setBlsPublicKey( + newPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + 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; + + "PublicKeyChanged(uint256[4],uint256[4])"( + oldPublicKey?: null, + newPublicKey?: null + ): PublicKeyChangedEventFilter; + PublicKeyChanged( + oldPublicKey?: null, + newPublicKey?: null + ): PublicKeyChangedEventFilter; + + "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; + + aggregator(overrides?: CallOverrides): 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; + + getBlsPublicKey(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + getNonce(overrides?: CallOverrides): Promise; + + "initialize(address)"( + anOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "initialize(uint256[4])"( + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + 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; + + setBlsPublicKey( + newPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: Overrides & { from?: PromiseOrValue } + ): 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; + + aggregator(overrides?: CallOverrides): 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; + + getBlsPublicKey(overrides?: CallOverrides): Promise; + + getDeposit(overrides?: CallOverrides): Promise; + + getNonce(overrides?: CallOverrides): Promise; + + "initialize(address)"( + anOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "initialize(uint256[4])"( + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + 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; + + setBlsPublicKey( + newPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: Overrides & { from?: PromiseOrValue } + ): 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/bls/BLSAccountFactory.ts b/packages/types/src/contracts/EPv7/samples/bls/BLSAccountFactory.ts new file mode 100644 index 00000000..ed6ff9e9 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/bls/BLSAccountFactory.ts @@ -0,0 +1,239 @@ +/* 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 BLSAccountFactoryInterface extends utils.Interface { + functions: { + "accountImplementation()": FunctionFragment; + "createAccount(uint256,uint256[4])": FunctionFragment; + "getAddress(uint256,uint256[4])": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "accountImplementation" + | "createAccount" + | "getAddress" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "accountImplementation", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "createAccount", + values: [ + PromiseOrValue, + [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ] + ): string; + encodeFunctionData( + functionFragment: "getAddress", + values: [ + PromiseOrValue, + [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ] + ): string; + + decodeFunctionResult( + functionFragment: "accountImplementation", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createAccount", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getAddress", data: BytesLike): Result; + + events: {}; +} + +export interface BLSAccountFactory extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: BLSAccountFactoryInterface; + + 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( + salt: PromiseOrValue, + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAddress( + salt: PromiseOrValue, + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise<[string]>; + }; + + accountImplementation(overrides?: CallOverrides): Promise; + + createAccount( + salt: PromiseOrValue, + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAddress( + salt: PromiseOrValue, + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + + callStatic: { + accountImplementation(overrides?: CallOverrides): Promise; + + createAccount( + salt: PromiseOrValue, + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + + getAddress( + salt: PromiseOrValue, + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + accountImplementation(overrides?: CallOverrides): Promise; + + createAccount( + salt: PromiseOrValue, + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAddress( + salt: PromiseOrValue, + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + accountImplementation( + overrides?: CallOverrides + ): Promise; + + createAccount( + salt: PromiseOrValue, + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAddress( + salt: PromiseOrValue, + aPublicKey: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/samples/bls/BLSSignatureAggregator.ts b/packages/types/src/contracts/EPv7/samples/bls/BLSSignatureAggregator.ts new file mode 100644 index 00000000..b1c384d8 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/bls/BLSSignatureAggregator.ts @@ -0,0 +1,449 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + PayableOverrides, + 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + paymasterAndData: string; + signature: string; +}; + +export interface BLSSignatureAggregatorInterface extends utils.Interface { + functions: { + "BLS_DOMAIN()": FunctionFragment; + "N()": FunctionFragment; + "addStake(uint32)": FunctionFragment; + "aggregateSignatures((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[])": FunctionFragment; + "entryPoint()": FunctionFragment; + "getTrailingPublicKey(bytes)": FunctionFragment; + "getUserOpHash((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": FunctionFragment; + "getUserOpPublicKey((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": FunctionFragment; + "userOpToMessage((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": FunctionFragment; + "validateSignatures((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],bytes)": FunctionFragment; + "validateUserOpSignature((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "BLS_DOMAIN" + | "N" + | "addStake" + | "aggregateSignatures" + | "entryPoint" + | "getTrailingPublicKey" + | "getUserOpHash" + | "getUserOpPublicKey" + | "userOpToMessage" + | "validateSignatures" + | "validateUserOpSignature" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "BLS_DOMAIN", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "N", values?: undefined): string; + encodeFunctionData( + functionFragment: "addStake", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "aggregateSignatures", + values: [PackedUserOperationStruct[]] + ): string; + encodeFunctionData( + functionFragment: "entryPoint", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getTrailingPublicKey", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getUserOpHash", + values: [PackedUserOperationStruct] + ): string; + encodeFunctionData( + functionFragment: "getUserOpPublicKey", + values: [PackedUserOperationStruct] + ): string; + encodeFunctionData( + functionFragment: "userOpToMessage", + values: [PackedUserOperationStruct] + ): string; + encodeFunctionData( + functionFragment: "validateSignatures", + values: [PackedUserOperationStruct[], PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "validateUserOpSignature", + values: [PackedUserOperationStruct] + ): string; + + decodeFunctionResult(functionFragment: "BLS_DOMAIN", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "N", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "addStake", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "aggregateSignatures", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "entryPoint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getTrailingPublicKey", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getUserOpHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getUserOpPublicKey", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "userOpToMessage", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "validateSignatures", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "validateUserOpSignature", + data: BytesLike + ): Result; + + events: {}; +} + +export interface BLSSignatureAggregator extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: BLSSignatureAggregatorInterface; + + 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: { + BLS_DOMAIN(overrides?: CallOverrides): Promise<[string]>; + + N(overrides?: CallOverrides): Promise<[BigNumber]>; + + addStake( + delay: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + aggregateSignatures( + userOps: PackedUserOperationStruct[], + overrides?: CallOverrides + ): Promise<[string] & { aggregatedSignature: string }>; + + entryPoint(overrides?: CallOverrides): Promise<[string]>; + + getTrailingPublicKey( + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [[BigNumber, BigNumber, BigNumber, BigNumber]] & { + publicKey: [BigNumber, BigNumber, BigNumber, BigNumber]; + } + >; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise<[string]>; + + getUserOpPublicKey( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise< + [[BigNumber, BigNumber, BigNumber, BigNumber]] & { + publicKey: [BigNumber, BigNumber, BigNumber, BigNumber]; + } + >; + + userOpToMessage( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise<[[BigNumber, BigNumber]]>; + + validateSignatures( + userOps: PackedUserOperationStruct[], + signature: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[void]>; + + validateUserOpSignature( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise<[string] & { sigForUserOp: string }>; + }; + + BLS_DOMAIN(overrides?: CallOverrides): Promise; + + N(overrides?: CallOverrides): Promise; + + addStake( + delay: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + aggregateSignatures( + userOps: PackedUserOperationStruct[], + overrides?: CallOverrides + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getTrailingPublicKey( + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + getUserOpPublicKey( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; + + userOpToMessage( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber]>; + + validateSignatures( + userOps: PackedUserOperationStruct[], + signature: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + validateUserOpSignature( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + callStatic: { + BLS_DOMAIN(overrides?: CallOverrides): Promise; + + N(overrides?: CallOverrides): Promise; + + addStake( + delay: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + aggregateSignatures( + userOps: PackedUserOperationStruct[], + overrides?: CallOverrides + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getTrailingPublicKey( + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + getUserOpPublicKey( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; + + userOpToMessage( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber]>; + + validateSignatures( + userOps: PackedUserOperationStruct[], + signature: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + validateUserOpSignature( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + BLS_DOMAIN(overrides?: CallOverrides): Promise; + + N(overrides?: CallOverrides): Promise; + + addStake( + delay: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + aggregateSignatures( + userOps: PackedUserOperationStruct[], + overrides?: CallOverrides + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getTrailingPublicKey( + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + getUserOpPublicKey( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + userOpToMessage( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + validateSignatures( + userOps: PackedUserOperationStruct[], + signature: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + validateUserOpSignature( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + BLS_DOMAIN(overrides?: CallOverrides): Promise; + + N(overrides?: CallOverrides): Promise; + + addStake( + delay: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + aggregateSignatures( + userOps: PackedUserOperationStruct[], + overrides?: CallOverrides + ): Promise; + + entryPoint(overrides?: CallOverrides): Promise; + + getTrailingPublicKey( + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getUserOpHash( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + getUserOpPublicKey( + userOp: PackedUserOperationStruct, + overrides?: CallOverrides + ): Promise; + + userOpToMessage( + userOp: 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/samples/bls/IBLSAccount.ts b/packages/types/src/contracts/EPv7/samples/bls/IBLSAccount.ts new file mode 100644 index 00000000..bfd17b66 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/bls/IBLSAccount.ts @@ -0,0 +1,216 @@ +/* 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, + 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; + maxFeePerGas: PromiseOrValue; + maxPriorityFeePerGas: PromiseOrValue; + paymasterAndData: PromiseOrValue; + signature: PromiseOrValue; +}; + +export type PackedUserOperationStructOutput = [ + string, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string +] & { + sender: string; + nonce: BigNumber; + initCode: string; + callData: string; + accountGasLimits: string; + preVerificationGas: BigNumber; + maxFeePerGas: BigNumber; + maxPriorityFeePerGas: BigNumber; + paymasterAndData: string; + signature: string; +}; + +export interface IBLSAccountInterface extends utils.Interface { + functions: { + "getBlsPublicKey()": FunctionFragment; + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "getBlsPublicKey" | "validateUserOp" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "getBlsPublicKey", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "validateUserOp", + values: [ + PackedUserOperationStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult( + functionFragment: "getBlsPublicKey", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "validateUserOp", + data: BytesLike + ): Result; + + events: { + "PublicKeyChanged(uint256[4],uint256[4])": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "PublicKeyChanged"): EventFragment; +} + +export interface PublicKeyChangedEventObject { + oldPublicKey: [BigNumber, BigNumber, BigNumber, BigNumber]; + newPublicKey: [BigNumber, BigNumber, BigNumber, BigNumber]; +} +export type PublicKeyChangedEvent = TypedEvent< + [ + [BigNumber, BigNumber, BigNumber, BigNumber], + [BigNumber, BigNumber, BigNumber, BigNumber] + ], + PublicKeyChangedEventObject +>; + +export type PublicKeyChangedEventFilter = + TypedEventFilter; + +export interface IBLSAccount extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IBLSAccountInterface; + + 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: { + getBlsPublicKey( + overrides?: CallOverrides + ): Promise<[[BigNumber, BigNumber, BigNumber, BigNumber]]>; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + getBlsPublicKey( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + getBlsPublicKey( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "PublicKeyChanged(uint256[4],uint256[4])"( + oldPublicKey?: null, + newPublicKey?: null + ): PublicKeyChangedEventFilter; + PublicKeyChanged( + oldPublicKey?: null, + newPublicKey?: null + ): PublicKeyChangedEventFilter; + }; + + estimateGas: { + getBlsPublicKey(overrides?: CallOverrides): Promise; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + getBlsPublicKey(overrides?: CallOverrides): Promise; + + validateUserOp( + userOp: PackedUserOperationStruct, + userOpHash: PromiseOrValue, + missingAccountFunds: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/types/src/contracts/EPv7/samples/bls/index.ts b/packages/types/src/contracts/EPv7/samples/bls/index.ts new file mode 100644 index 00000000..9e2d0982 --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/bls/index.ts @@ -0,0 +1,9 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as lib from "./lib"; +export type { lib }; +export type { BLSAccount } from "./BLSAccount"; +export type { BLSAccountFactory } from "./BLSAccountFactory"; +export type { BLSSignatureAggregator } from "./BLSSignatureAggregator"; +export type { IBLSAccount } from "./IBLSAccount"; 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..3767d353 --- /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..93c1909d --- /dev/null +++ b/packages/types/src/contracts/EPv7/samples/index.ts @@ -0,0 +1,15 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as bls from "./bls"; +export type { bls }; +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..b2d3eefe --- /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..69a335b1 --- /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..58d2543a --- /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..1193f9d3 --- /dev/null +++ b/packages/types/src/contracts/UserOperation.ts @@ -0,0 +1,41 @@ +import { BigNumberish, BytesLike } from "ethers"; + +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 interface UserOperation6And7 { + sender: string; + nonce: BigNumberish; + callData: BytesLike; + callGasLimit: BigNumberish; + verificationGasLimit: BigNumberish; + preVerificationGas: BigNumberish; + maxFeePerGas: BigNumberish; + maxPriorityFeePerGas: BigNumberish; + signature: BytesLike; + + factory?: string; + factoryData?: BytesLike; + paymaster?: string; + paymasterVerificationGasLimit?: BigNumberish; + paymasterPostOpGasLimit?: BigNumberish; + paymasterData?: BytesLike; + + initCode?: BytesLike; + paymasterAndData?: BytesLike; +} diff --git a/packages/types/src/node/api.ts b/packages/types/src/node/api.ts index 54f6898c..781162e8 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 { publishUserOpsWithEntryPoint( From 80dee8414c50d489cb8152d3590a9e194ec4c7bd Mon Sep 17 00:00:00 2001 From: marie-fourier Date: Thu, 1 Feb 2024 19:39:03 +0500 Subject: [PATCH 02/12] wip: support ep7 --- packages/executor/src/executor.ts | 6 +- packages/executor/src/modules/debug.ts | 20 ++-- .../src/services/EntryPointService/service.ts | 13 +- .../EntryPointService/versions/0.0.6.ts | 111 +++++++++++++++++- .../EntryPointService/versions/0.0.7.ts | 107 ++++++++++++++++- .../EntryPointService/versions/base.ts | 10 ++ .../executor/src/services/MempoolService.ts | 7 +- .../src/services/UserOpValidation/service.ts | 9 +- .../UserOpValidation/validators/safe.ts | 56 ++++----- .../UserOpValidation/validators/unsafe.ts | 7 +- .../EPv7/factories/samples/bls/index.ts | 1 - .../src/contracts/EPv7/samples/bls/index.ts | 2 - 12 files changed, 284 insertions(+), 65 deletions(-) diff --git a/packages/executor/src/executor.ts b/packages/executor/src/executor.ts index 4a27caa0..d52df119 100644 --- a/packages/executor/src/executor.ts +++ b/packages/executor/src/executor.ts @@ -98,6 +98,7 @@ export class Executor { this.bundlingService = new BundlingService( this.chainId, this.provider, + this.entryPointService, this.mempoolService, this.userOpValidationService, this.reputationService, @@ -111,7 +112,7 @@ export class Executor { this.provider, this.logger, this.reputationService, - this.networkConfig.entryPoints, + this.networkConfig.entryPointsV6!, this.db ); this.eventsService.initEventListener(); @@ -119,12 +120,14 @@ export class Executor { 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, @@ -133,6 +136,7 @@ export class Executor { this.eth = new Eth( this.chainId, this.provider, + this.entryPointService, this.userOpValidationService, this.mempoolService, this.skandha, diff --git a/packages/executor/src/modules/debug.ts b/packages/executor/src/modules/debug.ts index 8e650832..324bb3a4 100644 --- a/packages/executor/src/modules/debug.ts +++ b/packages/executor/src/modules/debug.ts @@ -1,14 +1,12 @@ 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 { UserOperation6And7 } from "types/lib/contracts/UserOperation"; import { BundlingService, + EntryPointService, MempoolService, ReputationService, } from "../services"; @@ -22,6 +20,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 +63,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,14 +115,13 @@ export class Debug { } async setMempool(mempool: SetMempoolArgs): Promise { - const entryPointContract = IEntryPoint__factory.connect( - mempool.entryPoint, - this.provider - ); 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); + const userOpHash = await this.entryPointService.getUserOpHash( + mempool.entryPoint, + userOp + ); await this.mempoolService.addUserOp( userOp, mempool.entryPoint, diff --git a/packages/executor/src/services/EntryPointService/service.ts b/packages/executor/src/services/EntryPointService/service.ts index b02b2562..4d73a53a 100644 --- a/packages/executor/src/services/EntryPointService/service.ts +++ b/packages/executor/src/services/EntryPointService/service.ts @@ -5,7 +5,7 @@ import { UserOperation6And7, } from "types/lib/contracts/UserOperation"; import { Config } from "../../config"; -import { NetworkConfig } from "../../interfaces"; +import { NetworkConfig, UserOpValidationResult } from "../../interfaces"; import { EntryPointV7Service, EntryPointV6Service, @@ -136,4 +136,15 @@ export class EntryPointService { userOp ); } + + parseValidationResult( + entryPoint: string, + userOp: UserOperation6And7, + data: string + ): UserOpValidationResult { + return this.entryPoints[entryPoint.toLowerCase()].parseValidationResult( + userOp, + data + ); + } } diff --git a/packages/executor/src/services/EntryPointService/versions/0.0.6.ts b/packages/executor/src/services/EntryPointService/versions/0.0.6.ts index 09db3df4..827fa379 100644 --- a/packages/executor/src/services/EntryPointService/versions/0.0.6.ts +++ b/packages/executor/src/services/EntryPointService/versions/0.0.6.ts @@ -2,10 +2,21 @@ import { UserOperationStruct, IEntryPoint, } from "types/lib/contracts/EPv6/EntryPoint"; -import { IEntryPoint__factory } from "types/lib/contracts/EPv6"; -import { providers } from "ethers"; +import { + IEntryPoint__factory, + StakeManager__factory, +} from "types/lib/contracts/EPv6"; +import { BytesLike, providers } from "ethers"; import { AddressZero, BytesZero } from "params/lib"; -import { NetworkConfig } from "../../../interfaces"; +import RpcError from "types/lib/api/errors/rpc-error"; +import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; +import { IStakeManager } from "types/lib/contracts/EPv7/core/StakeManager"; +import { + NetworkConfig, + StakeInfo, + UserOpValidationResult, +} from "../../../interfaces"; +import { getAddr } from "../../../utils"; import { IEntryPointService } from "./base"; export class EntryPointV6Service implements IEntryPointService { @@ -30,11 +41,21 @@ export class EntryPointV6Service implements IEntryPointService { } async simulateValidation(userOp: UserOperationStruct): Promise { - return await this.contract + const errorResult = await this.contract .simulateValidation(userOp, { gasLimit: this.networkConfig.validationGasLimit, }) - .catch((err) => this.nonGethErrorHandler(err)); + .catch((err: any) => this.nonGethErrorHandler(err)); + return this.parseErrorResult(userOp, errorResult); + } + + getDepositInfo( + address: string + ): Promise { + return StakeManager__factory.connect( + this.address, + this.provider + ).getDepositInfo(address); } encodeHandleOps(userOps: UserOperationStruct[], beneficiary: string): string { @@ -62,6 +83,23 @@ export class EntryPointV6Service implements IEntryPointService { ]); } + parseValidationResult( + userOp: UserOperationStruct, + data: string + ): UserOpValidationResult { + const { name: errorName, args: errorArgs } = + this.contract.interface.parseError(data); + const errFullName = `${errorName}(${errorArgs.toString()})`; + const errResult = this.parseErrorResult(userOp, { + errorName, + errorArgs, + }); + if (!errorName.includes("Result")) { + throw new Error(errFullName); + } + return errResult; + } + private nonGethErrorHandler(errorResult: any): any { try { let { error } = errorResult; @@ -90,4 +128,67 @@ export class EntryPointV6Service implements IEntryPointService { } return errorResult; } + + private 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 + ), + }; + } } diff --git a/packages/executor/src/services/EntryPointService/versions/0.0.7.ts b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts index 7e2be17b..77aacdc8 100644 --- a/packages/executor/src/services/EntryPointService/versions/0.0.7.ts +++ b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts @@ -4,11 +4,20 @@ import { EntryPoint__factory, EntryPointSimulations__factory, } from "types/lib/contracts/EPv7/factories/core"; -import { providers } from "ethers"; +import { BytesLike, providers } from "ethers"; +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 { AddressZero, BytesZero } from "params/lib"; +import { StakeManager__factory } from "types/src/contracts/EPv7/factories/core"; +import { IStakeManager } from "types/lib/contracts/EPv7/interfaces"; import { packUserOp } from "../utils"; -import { NetworkConfig } from "../../../interfaces"; +import { + NetworkConfig, + StakeInfo, + UserOpValidationResult, +} from "../../../interfaces"; +import { getAddr } from "../../../utils"; import { IEntryPointService } from "./base"; export class EntryPointV7Service implements IEntryPointService { @@ -39,11 +48,21 @@ export class EntryPointV7Service implements IEntryPointService { } async simulateValidation(userOp: UserOperation): Promise { - return await this.simulationContract + const errorResult = await this.simulationContract .simulateValidation(packUserOp(userOp), { gasLimit: this.networkConfig.validationGasLimit, }) - .catch((err) => this.nonGethErrorHandler(err)); + .catch((err: any) => this.nonGethErrorHandler(err)); + return this.parseErrorResult(userOp, errorResult); + } + + getDepositInfo( + address: string + ): Promise { + return StakeManager__factory.connect( + this.address, + this.provider + ).getDepositInfo(address); } encodeHandleOps(userOps: UserOperation[], beneficiary: string): string { @@ -71,6 +90,23 @@ export class EntryPointV7Service implements IEntryPointService { ); } + parseValidationResult( + userOp: UserOperation, + data: string + ): UserOpValidationResult { + const { name: errorName, args: errorArgs } = + this.contract.interface.parseError(data); + const errFullName = `${errorName}(${errorArgs.toString()})`; + const errResult = this.parseErrorResult(userOp, { + errorName, + errorArgs, + }); + if (!errorName.includes("Result")) { + throw new Error(errFullName); + } + return errResult; + } + private nonGethErrorHandler(errorResult: any): any { try { let { error } = errorResult; @@ -99,4 +135,67 @@ export class EntryPointV7Service implements IEntryPointService { } return errorResult; } + + private parseErrorResult( + userOp: UserOperation, + 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.factory!, factoryInfo), + paymasterInfo: fillEntity(userOp.paymaster!, paymasterInfo), + aggregatorInfo: fillEntity( + aggregatorInfo?.actualAggregator, + aggregatorInfo?.stakeInfo + ), + }; + } } diff --git a/packages/executor/src/services/EntryPointService/versions/base.ts b/packages/executor/src/services/EntryPointService/versions/base.ts index 82b8b5a7..25fd5fcb 100644 --- a/packages/executor/src/services/EntryPointService/versions/base.ts +++ b/packages/executor/src/services/EntryPointService/versions/base.ts @@ -1,12 +1,17 @@ import { IEntryPoint as IEntryPointV6 } from "types/lib/contracts/EPv6"; import { EntryPoint as IEntryPointV7 } from "types/lib/contracts/EPv7/core/EntryPoint"; import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { IStakeManager } from "types/lib/contracts/EPv7/core/StakeManager"; +import { UserOpValidationResult } from "../../../interfaces"; export interface IEntryPointService { readonly contract: IEntryPointV6 | IEntryPointV7; readonly address: string; getUserOperationHash(userOp: UserOperation6And7): Promise; + getDepositInfo( + address: string + ): Promise; simulateHandleOp(userOp: UserOperation6And7): Promise; simulateValidation(userOp: UserOperation6And7): Promise; @@ -18,4 +23,9 @@ export interface IEntryPointService { targetCallData: string ): string; encodeSimulateValidation(userOp: UserOperation6And7): string; + + parseValidationResult( + userOp: UserOperation6And7, + data: string + ): UserOpValidationResult; } diff --git a/packages/executor/src/services/MempoolService.ts b/packages/executor/src/services/MempoolService.ts index 14292e46..db34ee9c 100644 --- a/packages/executor/src/services/MempoolService.ts +++ b/packages/executor/src/services/MempoolService.ts @@ -8,6 +8,7 @@ import { IWhitelistedEntities, ReputationStatus, } from "types/lib/executor"; +import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; import { getAddr, now } from "../utils"; import { MempoolEntry } from "../entities/MempoolEntry"; import { IMempoolEntry, MempoolEntrySerialized } from "../entities/interfaces"; @@ -40,7 +41,7 @@ export class MempoolService { } async addUserOp( - userOp: UserOperationStruct, + userOp: UserOperation6And7, entryPoint: string, prefund: BigNumberish, senderInfo: StakeInfo, @@ -195,7 +196,7 @@ export class MempoolService { } async validateUserOpReplaceability( - userOp: UserOperationStruct, + userOp: UserOperation6And7, entryPoint: string ): Promise { const entry = new MempoolEntry({ @@ -396,7 +397,7 @@ export class MempoolService { } private async updateSeenStatus( - userOp: UserOperationStruct, + userOp: UserOperation6And7, aggregator?: string ): Promise { const paymaster = getAddr(userOp.paymasterAndData); diff --git a/packages/executor/src/services/UserOpValidation/service.ts b/packages/executor/src/services/UserOpValidation/service.ts index 574d42d7..c372bf62 100644 --- a/packages/executor/src/services/UserOpValidation/service.ts +++ b/packages/executor/src/services/UserOpValidation/service.ts @@ -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,7 +35,11 @@ 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.reputationService, @@ -42,6 +48,7 @@ export class UserOpValidationService { this.logger ); this.unsafeValidationService = new UnsafeValidationService( + this.entryPointService, this.provider, this.networkConfig, this.logger diff --git a/packages/executor/src/services/UserOpValidation/validators/safe.ts b/packages/executor/src/services/UserOpValidation/validators/safe.ts index 8db0f555..0c64cc88 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 { UserOperation6And7 } from "types/lib/contracts/UserOperation"; import { NetworkConfig, StorageMap, @@ -20,9 +16,10 @@ import { isSlotAssociatedWith, parseCallStack, parseEntitySlots, - parseValidationResult, } from "../utils"; import { ReputationService } from "../../ReputationService"; +import { EntryPointService } from "../../EntryPointService"; +import { EntryPointVersion } from "../../EntryPointService/interfaces"; /** * Some opcodes like: @@ -56,6 +53,7 @@ export class SafeValidationService { constructor( private provider: providers.Provider, + private entryPointService: EntryPointService, private reputationService: ReputationService, private chainId: number, private networkConfig: NetworkConfig, @@ -67,24 +65,17 @@ export class SafeValidationService { } async validateSafely( - userOp: UserOperationStruct, + userOp: UserOperation6And7, entryPoint: string, codehash?: string ): Promise { - const entryPointContract = IEntryPoint__factory.connect( - entryPoint, - this.provider - ); const simulationGas = BigNumber.from(userOp.preVerificationGas) .add(userOp.verificationGasLimit) .add(userOp.callGasLimit); const tx: providers.TransactionRequest = { to: entryPoint, - data: entryPointContract.interface.encodeFunctionData( - "simulateValidation", - [userOp] - ), + data: this.entryPointService.encodeSimulateValidation(entryPoint, userOp), gasLimit: simulationGas, }; @@ -92,7 +83,7 @@ export class SafeValidationService { await this.gethTracer.debug_traceCall(tx); const validationResult = await this.validateOpcodesAndStake( traceCall, - entryPointContract, + entryPoint, userOp ); @@ -163,10 +154,9 @@ export class SafeValidationService { private async validateOpcodesAndStake( traceCall: BundlerCollectorReturn, - entryPointContract: IEntryPoint, - userOp: UserOperationStruct + entryPoint: string, + userOp: UserOperation6And7 ): Promise { - const entryPoint = entryPointContract.address.toLowerCase(); if (traceCall == null || traceCall.callsFromEntryPoint == undefined) { throw new Error( "Could not validate transaction. Tracing is not available" @@ -219,8 +209,8 @@ export class SafeValidationService { ); } const data = (lastResult as ExitInfo).data; - const validationResult = parseValidationResult( - entryPointContract, + const validationResult = this.entryPointService.parseValidationResult( + entryPoint, userOp, data ); @@ -330,16 +320,22 @@ export class SafeValidationService { let requireStakeSlot: string | undefined; for (const slot of [...Object.keys(writes), ...Object.keys(reads)]) { if (isSlotAssociatedWith(slot, sender, entitySlots)) { + const epVersion = + this.entryPointService.getEntryPointVersion(entryPoint); + const hasInitCode = + (epVersion === EntryPointVersion.SIX && + userOp.initCode!.length > 2) || + (epVersion === EntryPointVersion.SEVEN && + userOp.factory && + userOp.factory.length > 2); if ( - userOp.initCode.length > 2 && - !( - entityAddr === sender && - ( - await this.reputationService.checkStake( - stakeInfoEntities.factory - ) - ).code === 0 - ) + hasInitCode == true && + entityAddr === sender && + ( + await this.reputationService.checkStake( + stakeInfoEntities.factory + ) + ).code === 0 ) { requireStakeSlot = slot; } diff --git a/packages/executor/src/services/UserOpValidation/validators/unsafe.ts b/packages/executor/src/services/UserOpValidation/validators/unsafe.ts index 97864181..a1576eef 100644 --- a/packages/executor/src/services/UserOpValidation/validators/unsafe.ts +++ b/packages/executor/src/services/UserOpValidation/validators/unsafe.ts @@ -2,7 +2,6 @@ import { providers } from "ethers"; import { Logger } from "types/lib"; import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; import { NetworkConfig, UserOpValidationResult } from "../../../interfaces"; -import { parseErrorResult } from "../utils"; import { EntryPointService } from "../../EntryPointService"; export class UnsafeValidationService { @@ -17,10 +16,6 @@ export class UnsafeValidationService { userOp: UserOperation6And7, entryPoint: string ): Promise { - const errorResult = await this.entryPointService.simulateValidation( - entryPoint, - userOp - ); - return parseErrorResult(userOp, errorResult); + return await this.entryPointService.simulateValidation(entryPoint, userOp); } } diff --git a/packages/types/src/contracts/EPv7/factories/samples/bls/index.ts b/packages/types/src/contracts/EPv7/factories/samples/bls/index.ts index 262460a7..eaf1080b 100644 --- a/packages/types/src/contracts/EPv7/factories/samples/bls/index.ts +++ b/packages/types/src/contracts/EPv7/factories/samples/bls/index.ts @@ -1,7 +1,6 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export * as lib from "./lib"; export { BLSAccount__factory } from "./BLSAccount__factory"; export { BLSAccountFactory__factory } from "./BLSAccountFactory__factory"; export { BLSSignatureAggregator__factory } from "./BLSSignatureAggregator__factory"; diff --git a/packages/types/src/contracts/EPv7/samples/bls/index.ts b/packages/types/src/contracts/EPv7/samples/bls/index.ts index 9e2d0982..fc8bf796 100644 --- a/packages/types/src/contracts/EPv7/samples/bls/index.ts +++ b/packages/types/src/contracts/EPv7/samples/bls/index.ts @@ -1,8 +1,6 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -import type * as lib from "./lib"; -export type { lib }; export type { BLSAccount } from "./BLSAccount"; export type { BLSAccountFactory } from "./BLSAccountFactory"; export type { BLSSignatureAggregator } from "./BLSSignatureAggregator"; From 0753787b3e8983b1c2d4b17fda6952e22227d36a Mon Sep 17 00:00:00 2001 From: marie-fourier Date: Fri, 2 Feb 2024 16:47:07 +0500 Subject: [PATCH 03/12] wip: ep7 events --- packages/executor/src/modules/eth.ts | 53 +------ .../services/EntryPointService/constants.ts | 9 ++ .../src/services/EntryPointService/service.ts | 11 ++ .../EntryPointService/versions/0.0.6.ts | 135 +++++++++++++++++- .../EntryPointService/versions/0.0.7.ts | 95 ++++++++++++ .../EntryPointService/versions/base.ts | 5 + packages/executor/src/utils/index.ts | 112 +-------------- 7 files changed, 262 insertions(+), 158 deletions(-) create mode 100644 packages/executor/src/services/EntryPointService/constants.ts diff --git a/packages/executor/src/modules/eth.ts b/packages/executor/src/modules/eth.ts index 08781618..8a6477de 100644 --- a/packages/executor/src/modules/eth.ts +++ b/packages/executor/src/modules/eth.ts @@ -1,5 +1,4 @@ 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 { @@ -18,7 +17,7 @@ import { Logger } from "types/lib"; import { PerChainMetrics } from "monitoring/lib"; import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; import { UserOperationStruct } from "types/lib/contracts/EPv6/EntryPoint"; -import { deepHexlify, packUserOp } from "../utils"; +import { deepHexlify } from "../utils"; import { UserOpValidationService, MempoolService, @@ -173,7 +172,8 @@ export class Eth { .div(100) // 130% markup .toNumber(); - let preVerificationGas: BigNumberish = this.calcPreVerificationGas(userOp); + let preVerificationGas: BigNumberish = + this.entryPointService.calcPreverificationGas(entryPoint, userOp); userOpComplemented.preVerificationGas = preVerificationGas; let callGasLimit: BigNumber = BigNumber.from(0); @@ -268,7 +268,10 @@ export class Eth { const verificationGasLimit = BigNumber.from(preOpGas).toNumber(); return { - preVerificationGas: this.calcPreVerificationGas(userOp), + preVerificationGas: this.entryPointService.calcPreverificationGas( + entryPoint, + userOp + ), verificationGasLimit, verificationGas: verificationGasLimit, validAfter: BigNumber.from(validAfter), @@ -419,48 +422,6 @@ export class Eth { return this.entryPointService.isEntryPointSupported(entryPoint); } - 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]> { 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/EntryPointService/service.ts b/packages/executor/src/services/EntryPointService/service.ts index 4d73a53a..160ed74e 100644 --- a/packages/executor/src/services/EntryPointService/service.ts +++ b/packages/executor/src/services/EntryPointService/service.ts @@ -48,6 +48,17 @@ export class EntryPointService { } } + calcPreverificationGas( + entryPoint: string, + userOp: UserOperation6And7, + forSignature = true + ): number { + return this.entryPoints[entryPoint].calcPreverificationGas( + userOp, + forSignature + ); + } + isEntryPointSupported(entryPoint: string): boolean { return this.entryPoints[entryPoint.toLowerCase()] != undefined; } diff --git a/packages/executor/src/services/EntryPointService/versions/0.0.6.ts b/packages/executor/src/services/EntryPointService/versions/0.0.6.ts index 827fa379..179d7e0d 100644 --- a/packages/executor/src/services/EntryPointService/versions/0.0.6.ts +++ b/packages/executor/src/services/EntryPointService/versions/0.0.6.ts @@ -1,6 +1,7 @@ import { UserOperationStruct, IEntryPoint, + UserOperationEventEvent, } from "types/lib/contracts/EPv6/EntryPoint"; import { IEntryPoint__factory, @@ -11,12 +12,20 @@ import { AddressZero, BytesZero } from "params/lib"; import RpcError from "types/lib/api/errors/rpc-error"; import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; import { IStakeManager } from "types/lib/contracts/EPv7/core/StakeManager"; +import { + arrayify, + defaultAbiCoder, + hexlify, + keccak256, +} from "ethers/lib/utils"; +import { Logger } from "types/lib"; import { NetworkConfig, StakeInfo, UserOpValidationResult, } from "../../../interfaces"; import { getAddr } from "../../../utils"; +import { DefaultGasOverheads } from "../constants"; import { IEntryPointService } from "./base"; export class EntryPointV6Service implements IEntryPointService { @@ -25,11 +34,15 @@ export class EntryPointV6Service implements IEntryPointService { constructor( public address: string, private networkConfig: NetworkConfig, - private provider: providers.JsonRpcProvider + private provider: providers.JsonRpcProvider, + private logger: Logger ) { this.contract = IEntryPoint__factory.connect(address, provider); } + /*******************/ + /** View functions */ + async getUserOperationHash(userOp: UserOperationStruct): Promise { return await this.contract.getUserOpHash(userOp); } @@ -58,6 +71,9 @@ export class EntryPointV6Service implements IEntryPointService { ).getDepositInfo(address); } + /******************************************/ + /** Write functions (return encoded data) */ + encodeHandleOps(userOps: UserOperationStruct[], beneficiary: string): string { return this.contract.interface.encodeFunctionData("handleOps", [ userOps, @@ -83,6 +99,123 @@ export class EntryPointV6Service implements IEntryPointService { ]); } + /***********/ + /** 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; + } + + /**************/ + /** Utilities */ + + calcPreverificationGas( + userOp: Partial, + forSignature = true + ): number { + const ov = { ...DefaultGasOverheads }; + const op = { + preVerificationGas: 21000, + signature: hexlify(Buffer.alloc(ov.sigSize, 1)), + ...userOp, + } as any; + let encoded: string; + if (forSignature) { + encoded = 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 { + encoded = 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, + ] + ); + } + 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: UserOperationStruct, data: string diff --git a/packages/executor/src/services/EntryPointService/versions/0.0.7.ts b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts index 77aacdc8..7c073340 100644 --- a/packages/executor/src/services/EntryPointService/versions/0.0.7.ts +++ b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts @@ -11,6 +11,12 @@ import { UserOperation } from "types/lib/contracts/UserOperation"; import { AddressZero, BytesZero } from "params/lib"; import { StakeManager__factory } from "types/src/contracts/EPv7/factories/core"; import { IStakeManager } from "types/lib/contracts/EPv7/interfaces"; +import { + hexlify, + defaultAbiCoder, + keccak256, + arrayify, +} from "ethers/lib/utils"; import { packUserOp } from "../utils"; import { NetworkConfig, @@ -18,6 +24,7 @@ import { UserOpValidationResult, } from "../../../interfaces"; import { getAddr } from "../../../utils"; +import { DefaultGasOverheads } from "../constants"; import { IEntryPointService } from "./base"; export class EntryPointV7Service implements IEntryPointService { @@ -37,6 +44,9 @@ export class EntryPointV7Service implements IEntryPointService { ); } + /*******************/ + /** View functions */ + async getUserOperationHash(userOp: UserOperation): Promise { return await this.contract.getUserOpHash(packUserOp(userOp)); } @@ -65,6 +75,9 @@ export class EntryPointV7Service implements IEntryPointService { ).getDepositInfo(address); } + /******************************************/ + /** Write functions (return encoded data) */ + encodeHandleOps(userOps: UserOperation[], beneficiary: string): string { return this.contract.interface.encodeFunctionData("handleOps", [ userOps.map(packUserOp), @@ -90,6 +103,88 @@ export class EntryPointV7Service implements IEntryPointService { ); } + /**************/ + /** 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; + if (forSignature) { + encoded = defaultAbiCoder.encode( + [ + "address", + "uint256", + "bytes32", + "bytes32", + "bytes32", + "uint256", + "uint256", + "uint256", + "bytes32", + ], + [ + packedUserOp.sender, + packedUserOp.nonce, + keccak256(packedUserOp.initCode), + keccak256(packedUserOp.callData), + packedUserOp.accountGasLimits, + packedUserOp.preVerificationGas, + packedUserOp.maxFeePerGas, + packedUserOp.maxPriorityFeePerGas, + keccak256(packedUserOp.paymasterAndData), + ] + ); + } else { + // for the purpose of calculating gas cost encode also signature (and no keccak of bytes) + encoded = defaultAbiCoder.encode( + [ + "address", + "uint256", + "bytes", + "bytes", + "bytes32", + "uint256", + "bytes32", + "uint256", + "uint256", + "bytes", + ], + [ + packedUserOp.sender, + packedUserOp.nonce, + packedUserOp.initCode, + packedUserOp.callData, + packedUserOp.accountGasLimits, + packedUserOp.preVerificationGas, + packedUserOp.maxFeePerGas, + packedUserOp.maxPriorityFeePerGas, + packedUserOp.paymasterAndData, + packedUserOp.signature, + ] + ); + } + 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 diff --git a/packages/executor/src/services/EntryPointService/versions/base.ts b/packages/executor/src/services/EntryPointService/versions/base.ts index 25fd5fcb..840899f1 100644 --- a/packages/executor/src/services/EntryPointService/versions/base.ts +++ b/packages/executor/src/services/EntryPointService/versions/base.ts @@ -8,6 +8,11 @@ export interface IEntryPointService { readonly contract: IEntryPointV6 | IEntryPointV7; readonly address: string; + calcPreverificationGas( + userOp: Partial, + forSignature: boolean + ): number; + getUserOperationHash(userOp: UserOperation6And7): Promise; getDepositInfo( address: string 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 From 6ba0409ca87a46fac08f2bef4dd077d13abc4ae8 Mon Sep 17 00:00:00 2001 From: marie-fourier Date: Fri, 2 Feb 2024 17:52:51 +0500 Subject: [PATCH 04/12] feat: epv7 eth module --- packages/executor/src/executor.ts | 4 +- packages/executor/src/modules/eth.ts | 138 +----------------- .../src/services/EntryPointService/service.ts | 42 +++++- .../EntryPointService/versions/0.0.6.ts | 89 ++++++++++- .../EntryPointService/versions/0.0.7.ts | 130 ++++++++++++++++- .../EntryPointService/versions/base.ts | 13 ++ .../src/services/UserOpValidation/service.ts | 1 + packages/types/src/api/interfaces.ts | 4 +- 8 files changed, 272 insertions(+), 149 deletions(-) diff --git a/packages/executor/src/executor.ts b/packages/executor/src/executor.ts index d52df119..fbe9b0b0 100644 --- a/packages/executor/src/executor.ts +++ b/packages/executor/src/executor.ts @@ -71,7 +71,8 @@ export class Executor { this.entryPointService = new EntryPointService( this.config, this.networkConfig, - this.provider + this.provider, + this.logger ); this.reputationService = new ReputationService( this.db, @@ -84,6 +85,7 @@ export class Executor { ); this.userOpValidationService = new UserOpValidationService( this.provider, + this.entryPointService, this.reputationService, this.chainId, this.config, diff --git a/packages/executor/src/modules/eth.ts b/packages/executor/src/modules/eth.ts index 8a6477de..5bd97898 100644 --- a/packages/executor/src/modules/eth.ts +++ b/packages/executor/src/modules/eth.ts @@ -17,13 +17,12 @@ import { Logger } from "types/lib"; import { PerChainMetrics } from "monitoring/lib"; import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; import { UserOperationStruct } from "types/lib/contracts/EPv6/EntryPoint"; -import { deepHexlify } from "../utils"; import { UserOpValidationService, MempoolService, EntryPointService, } from "../services"; -import { GetNodeAPI, Log, NetworkConfig } from "../interfaces"; +import { GetNodeAPI, NetworkConfig } from "../interfaces"; import { EntryPointVersion } from "../services/EntryPointService/interfaces"; import { EstimateUserOperationGasArgs, @@ -315,61 +314,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); } /** @@ -380,22 +325,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); } /** @@ -421,66 +351,4 @@ export class Eth { validateEntryPoint(entryPoint: string): boolean { return this.entryPointService.isEntryPointSupported(entryPoint); } - - 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); - } } diff --git a/packages/executor/src/services/EntryPointService/service.ts b/packages/executor/src/services/EntryPointService/service.ts index 160ed74e..f76a3a8b 100644 --- a/packages/executor/src/services/EntryPointService/service.ts +++ b/packages/executor/src/services/EntryPointService/service.ts @@ -4,6 +4,11 @@ import { UserOperation, UserOperation6And7, } from "types/lib/contracts/UserOperation"; +import { Logger } from "types/lib"; +import { + UserOperationByHashResponse, + UserOperationReceipt, +} from "types/lib/api/interfaces"; import { Config } from "../../config"; import { NetworkConfig, UserOpValidationResult } from "../../interfaces"; import { @@ -21,14 +26,16 @@ export class EntryPointService { constructor( private config: Config, private networkConfig: NetworkConfig, - private provider: providers.JsonRpcProvider + private provider: providers.JsonRpcProvider, + private logger: Logger ) { if (networkConfig.entryPointsV6) { for (const addr of networkConfig.entryPointsV6) { this.entryPoints[addr.toLowerCase()] = new EntryPointV6Service( addr, this.networkConfig, - this.provider + this.provider, + this.logger ); } } @@ -42,12 +49,41 @@ export class EntryPointService { addr, networkConfig.entryPointV7Simulation, this.networkConfig, - this.provider + this.provider, + this.logger ); } } } + async getUserOperationByHash( + userOpHash: string + ): Promise { + 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 { + for (const [_, entryPoint] of Object.entries(this.entryPoints)) { + try { + const res = entryPoint.getUserOperationReceipt(userOpHash); + if (res) return res; + } catch (err) { + /* empty */ + } + } + return null; + } + calcPreverificationGas( entryPoint: string, userOp: UserOperation6And7, diff --git a/packages/executor/src/services/EntryPointService/versions/0.0.6.ts b/packages/executor/src/services/EntryPointService/versions/0.0.6.ts index 179d7e0d..5f3fc622 100644 --- a/packages/executor/src/services/EntryPointService/versions/0.0.6.ts +++ b/packages/executor/src/services/EntryPointService/versions/0.0.6.ts @@ -7,7 +7,7 @@ import { IEntryPoint__factory, StakeManager__factory, } from "types/lib/contracts/EPv6"; -import { BytesLike, providers } from "ethers"; +import { BigNumber, BytesLike, providers } from "ethers"; import { AddressZero, BytesZero } from "params/lib"; import RpcError from "types/lib/api/errors/rpc-error"; import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; @@ -20,11 +20,16 @@ import { } from "ethers/lib/utils"; import { Logger } from "types/lib"; import { + UserOperationByHashResponse, + UserOperationReceipt, +} from "types/lib/api/interfaces"; +import { + Log, NetworkConfig, StakeInfo, UserOpValidationResult, } from "../../../interfaces"; -import { getAddr } from "../../../utils"; +import { deepHexlify, getAddr } from "../../../utils"; import { DefaultGasOverheads } from "../constants"; import { IEntryPointService } from "./base"; @@ -50,7 +55,7 @@ export class EntryPointV6Service implements IEntryPointService { async simulateHandleOp(userOp: UserOperationStruct): Promise { return await this.contract .simulateHandleOp(userOp, AddressZero, BytesZero) - .catch((err) => this.nonGethErrorHandler(err)); + .catch((err: any) => this.nonGethErrorHandler(err)); } async simulateValidation(userOp: UserOperationStruct): Promise { @@ -131,6 +136,61 @@ export class EntryPointV6Service implements IEntryPointService { 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: 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"); + } + + return deepHexlify({ + userOperation: op, + entryPoint: this.address, + transactionHash: tx.hash, + blockHash: tx.blockHash ?? "", + blockNumber: tx.blockNumber ?? 0, + }); + } + /**************/ /** Utilities */ @@ -324,4 +384,27 @@ export class EntryPointV6Service implements IEntryPointService { ), }; } + + 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/0.0.7.ts b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts index 7c073340..dace7f0e 100644 --- a/packages/executor/src/services/EntryPointService/versions/0.0.7.ts +++ b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts @@ -1,15 +1,18 @@ -import { EntryPoint } from "types/lib/contracts/EPv7/core/EntryPoint"; +import { + EntryPoint, + UserOperationEventEvent, +} from "types/lib/contracts/EPv7/core/EntryPoint"; import { EntryPointSimulations } from "types/lib/contracts/EPv7/core/EntryPointSimulations"; import { EntryPoint__factory, EntryPointSimulations__factory, } from "types/lib/contracts/EPv7/factories/core"; -import { BytesLike, providers } from "ethers"; +import { BigNumber, BytesLike, providers } from "ethers"; 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 { AddressZero, BytesZero } from "params/lib"; -import { StakeManager__factory } from "types/src/contracts/EPv7/factories/core"; +import { StakeManager__factory } from "types/lib/contracts/EPv7/factories/core"; import { IStakeManager } from "types/lib/contracts/EPv7/interfaces"; import { hexlify, @@ -17,13 +20,19 @@ import { keccak256, arrayify, } from "ethers/lib/utils"; +import { Logger } from "types/lib"; +import { + UserOperationReceipt, + UserOperationByHashResponse, +} from "types/lib/api/interfaces"; import { packUserOp } from "../utils"; import { + Log, NetworkConfig, StakeInfo, UserOpValidationResult, } from "../../../interfaces"; -import { getAddr } from "../../../utils"; +import { deepHexlify, getAddr } from "../../../utils"; import { DefaultGasOverheads } from "../constants"; import { IEntryPointService } from "./base"; @@ -35,7 +44,8 @@ export class EntryPointV7Service implements IEntryPointService { public address: string, public simulationAddress: string, private networkConfig: NetworkConfig, - private provider: providers.JsonRpcProvider + private provider: providers.JsonRpcProvider, + private logger: Logger ) { this.contract = EntryPoint__factory.connect(address, provider); this.simulationContract = EntryPointSimulations__factory.connect( @@ -103,6 +113,93 @@ export class EntryPointV7Service implements IEntryPointService { ); } + /***********/ + /** 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: UserOperation[] = 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: op, + entryPoint: this.address, + transactionHash: tx.hash, + blockHash: tx.blockHash ?? "", + blockNumber: tx.blockNumber ?? 0, + }); + } + /**************/ /** Utilities */ @@ -293,4 +390,27 @@ export class EntryPointV7Service implements IEntryPointService { ), }; } + + 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 index 840899f1..b4ab4c3c 100644 --- a/packages/executor/src/services/EntryPointService/versions/base.ts +++ b/packages/executor/src/services/EntryPointService/versions/base.ts @@ -2,6 +2,11 @@ import { IEntryPoint as IEntryPointV6 } from "types/lib/contracts/EPv6"; import { EntryPoint as IEntryPointV7 } from "types/lib/contracts/EPv7/core/EntryPoint"; import { UserOperation6And7 } 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 { @@ -21,6 +26,14 @@ export interface IEntryPointService { simulateHandleOp(userOp: UserOperation6And7): Promise; simulateValidation(userOp: UserOperation6And7): Promise; + getUserOperationEvent( + userOpHash: string + ): Promise; + getUserOperationReceipt(hash: string): Promise; + getUserOperationByHash( + hash: string + ): Promise; + encodeHandleOps(userOps: UserOperation6And7[], beneficiary: string): string; encodeSimulateHandleOp( userOp: UserOperation6And7, diff --git a/packages/executor/src/services/UserOpValidation/service.ts b/packages/executor/src/services/UserOpValidation/service.ts index c372bf62..2e8c1402 100644 --- a/packages/executor/src/services/UserOpValidation/service.ts +++ b/packages/executor/src/services/UserOpValidation/service.ts @@ -42,6 +42,7 @@ export class UserOpValidationService { ); this.safeValidationService = new SafeValidationService( this.provider, + this.entryPointService, this.reputationService, this.chainId, this.networkConfig, diff --git a/packages/types/src/api/interfaces.ts b/packages/types/src/api/interfaces.ts index 82d78dda..35a9fbb2 100644 --- a/packages/types/src/api/interfaces.ts +++ b/packages/types/src/api/interfaces.ts @@ -1,6 +1,6 @@ import { BigNumberish, providers } from "ethers"; -import { UserOperationStruct } from "../contracts/EPv6/EntryPoint"; import { IWhitelistedEntities } from "../executor"; +import { UserOperation6And7 } from "../contracts/UserOperation"; export type EstimatedUserOperationGas = | { @@ -14,7 +14,7 @@ export type EstimatedUserOperationGas = | GetGasPriceResponse; export type UserOperationByHashResponse = { - userOperation: UserOperationStruct; + userOperation: UserOperation6And7; entryPoint: string; blockNumber: number; blockHash: string; From 72418953894fe6267130da0ac7bf66fa1542a69c Mon Sep 17 00:00:00 2001 From: marie-fourier Date: Mon, 5 Feb 2024 20:15:57 +0500 Subject: [PATCH 05/12] feat: events service per ep version --- .../api/src/dto/EstimateUserOperation.dto.ts | 32 ++-- packages/api/src/dto/SendUserOperation.dto.ts | 16 +- packages/api/src/dto/SetMempool.dto.ts | 4 +- packages/api/src/modules/debug.ts | 4 +- packages/api/src/utils/RpcMethodValidator.ts | 6 +- packages/executor/src/executor.ts | 31 ++-- packages/executor/src/modules/debug.ts | 20 ++- packages/executor/src/modules/eth.ts | 33 +++- packages/executor/src/modules/interfaces.ts | 9 +- .../services/BundlingService/relayers/base.ts | 4 +- .../src/services/BundlingService/service.ts | 6 +- .../eventListeners/0.0.6.ts} | 77 ++++----- .../EntryPointService/eventListeners/0.0.7.ts | 128 +++++++++++++++ .../EntryPointService/eventListeners/base.ts | 3 + .../EntryPointService/eventListeners/index.ts | 3 + .../src/services/EntryPointService/service.ts | 149 +++++++++++++----- .../EntryPointService/versions/0.0.6.ts | 4 +- .../EntryPointService/versions/0.0.7.ts | 15 +- .../executor/src/services/MempoolService.ts | 23 +-- packages/executor/src/services/P2PService.ts | 29 +++- .../src/services/UserOpValidation/utils.ts | 88 +---------- .../UserOpValidation/validators/safe.ts | 1 + packages/executor/src/services/index.ts | 1 - .../api/publishUserOpsWithEntryPointJSON.ts | 2 +- .../params/src/gas-estimation/arbitrum.ts | 31 ++-- packages/params/src/gas-estimation/mantle.ts | 30 ++-- .../params/src/gas-estimation/optimism.ts | 30 ++-- .../gas-price-oracles/oracles/interfaces.ts | 4 +- packages/params/src/types/IPVGEstimator.ts | 12 +- packages/params/src/utils/userOp.ts | 2 +- 30 files changed, 470 insertions(+), 327 deletions(-) rename packages/executor/src/services/{EventsService.ts => EntryPointService/eventListeners/0.0.6.ts} (59%) create mode 100644 packages/executor/src/services/EntryPointService/eventListeners/0.0.7.ts create mode 100644 packages/executor/src/services/EntryPointService/eventListeners/base.ts create mode 100644 packages/executor/src/services/EntryPointService/eventListeners/index.ts diff --git a/packages/api/src/dto/EstimateUserOperation.dto.ts b/packages/api/src/dto/EstimateUserOperation.dto.ts index feaa796c..823abbde 100644 --- a/packages/api/src/dto/EstimateUserOperation.dto.ts +++ b/packages/api/src/dto/EstimateUserOperation.dto.ts @@ -37,15 +37,15 @@ export class EstimateUserOperation { /** * EntryPoint v6 Properties */ - @ValidateIf((o) => o.paymasterData) + @ValidateIf((o) => o.paymasterAndData) @IsString() @IsCallData() - initCode!: BytesLike; + initCode?: BytesLike; - @ValidateIf((o) => o.paymasterData) + @ValidateIf((o) => o.paymasterAndData) @IsString() @IsCallData() - paymasterAndData!: BytesLike; + paymasterAndData?: BytesLike; /** * EntryPoint v7 Properties @@ -53,31 +53,31 @@ export class EstimateUserOperation { /** * EntryPoint v7 Properties */ - @ValidateIf((o) => o.paymasterAndData) + @ValidateIf((o) => o.paymasterData) @IsString() - factory!: string; + factory?: string; - @ValidateIf((o) => o.paymasterAndData) + @ValidateIf((o) => o.paymasterData) @IsCallData() @IsString() - factoryData!: BytesLike; + factoryData?: BytesLike; - @ValidateIf((o) => o.paymasterAndData) + @ValidateIf((o) => o.paymasterData) @IsString() - paymaster!: string; + paymaster?: string; - @ValidateIf((o) => o.paymasterAndData) + @ValidateIf((o) => o.paymasterData) @IsBigNumber() - paymasterVerificationGasLimit!: BigNumberish; + paymasterVerificationGasLimit?: BigNumberish; - @ValidateIf((o) => o.paymasterAndData) + @ValidateIf((o) => o.paymasterData) @IsBigNumber() - paymasterPostOpGasLimit!: BigNumberish; + paymasterPostOpGasLimit?: BigNumberish; - @ValidateIf((o) => o.paymasterAndData) + @ValidateIf((o) => o.paymasterData) @IsCallData() @IsString() - paymasterData!: BytesLike; + paymasterData?: BytesLike; } export class EstimateUserOperationGasArgs { diff --git a/packages/api/src/dto/SendUserOperation.dto.ts b/packages/api/src/dto/SendUserOperation.dto.ts index 95c2d361..89f3a601 100644 --- a/packages/api/src/dto/SendUserOperation.dto.ts +++ b/packages/api/src/dto/SendUserOperation.dto.ts @@ -37,12 +37,12 @@ export class SendUserOperation { /** * EntryPoint v6 Properties */ - @ValidateIf((o) => o.paymasterData) + @ValidateIf((o) => o.paymasterAndData) @IsString() @IsCallData() initCode!: BytesLike; - @ValidateIf((o) => o.paymasterData) + @ValidateIf((o) => o.paymasterAndData) @IsString() @IsCallData() paymasterAndData!: BytesLike; @@ -50,27 +50,27 @@ export class SendUserOperation { /** * EntryPoint v7 Properties */ - @ValidateIf((o) => o.paymasterAndData) + @ValidateIf((o) => o.paymasterData) @IsString() factory!: string; - @ValidateIf((o) => o.paymasterAndData) + @ValidateIf((o) => o.paymasterData) @IsString() factoryData!: BytesLike; - @ValidateIf((o) => o.paymasterAndData) + @ValidateIf((o) => o.paymasterData) @IsString() paymaster!: string; - @ValidateIf((o) => o.paymasterAndData) + @ValidateIf((o) => o.paymasterData) @IsBigNumber() paymasterVerificationGasLimit!: BigNumberish; - @ValidateIf((o) => o.paymasterAndData) + @ValidateIf((o) => o.paymasterData) @IsBigNumber() paymasterPostOpGasLimit!: BigNumberish; - @ValidateIf((o) => o.paymasterAndData) + @ValidateIf((o) => o.paymasterData) @IsString() paymasterData!: BytesLike; } 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..9bd8bf69 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 { UserOperation6And7 } 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/executor/src/executor.ts b/packages/executor/src/executor.ts index fbe9b0b0..87019891 100644 --- a/packages/executor/src/executor.ts +++ b/packages/executor/src/executor.ts @@ -11,7 +11,6 @@ import { BundlingService, ReputationService, P2PService, - EventsService, EntryPointService, } from "./services"; import { Config } from "./config"; @@ -49,7 +48,6 @@ export class Executor { public userOpValidationService: UserOpValidationService; public reputationService: ReputationService; public p2pService: P2PService; - public eventsService: EventsService; private db: IDbController; @@ -68,12 +66,6 @@ export class Executor { this.provider = this.config.getNetworkProvider(); - this.entryPointService = new EntryPointService( - this.config, - this.networkConfig, - this.provider, - this.logger - ); this.reputationService = new ReputationService( this.db, this.chainId, @@ -83,6 +75,14 @@ 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, @@ -94,6 +94,7 @@ export class Executor { this.mempoolService = new MempoolService( this.db, this.chainId, + this.entryPointService, this.reputationService, this.networkConfig ); @@ -109,15 +110,6 @@ export class Executor { this.metrics, this.networkConfig.relayingMode ); - this.eventsService = new EventsService( - this.chainId, - this.provider, - this.logger, - this.reputationService, - this.networkConfig.entryPointsV6!, - this.db - ); - this.eventsService.initEventListener(); this.web3 = new Web3(this.config, this.version); this.debug = new Debug( @@ -147,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 324bb3a4..76f1ceac 100644 --- a/packages/executor/src/modules/debug.ts +++ b/packages/executor/src/modules/debug.ts @@ -12,7 +12,6 @@ import { } 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 @@ -115,32 +114,37 @@ export class Debug { } async setMempool(mempool: SetMempoolArgs): Promise { + 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) { + for (const userOp of userOps) { + const [factory, paymaster] = [ + this.entryPointService.getFactory(entryPoint, userOp), + this.entryPointService.getPaymaster(entryPoint, userOp), + ]; const userOpHash = await this.entryPointService.getUserOpHash( - mempool.entryPoint, + 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 5bd97898..7e39959f 100644 --- a/packages/executor/src/modules/eth.ts +++ b/packages/executor/src/modules/eth.ts @@ -12,6 +12,7 @@ import { estimateArbitrumPVG, ECDSA_DUMMY_SIGNATURE, estimateMantlePVG, + AddressZero, } from "params/lib"; import { Logger } from "types/lib"; import { PerChainMetrics } from "monitoring/lib"; @@ -68,7 +69,7 @@ export class Eth { */ async sendUserOperation(args: SendUserOperationGasArgs): Promise { const userOp = args.userOp as unknown as UserOperation6And7; - const entryPoint = args.entryPoint; + const entryPoint = args.entryPoint.toLowerCase(); if (!this.validateEntryPoint(entryPoint)) { throw new RpcError("Invalid Entrypoint", RpcErrorCodes.INVALID_REQUEST); } @@ -139,7 +140,8 @@ 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); } @@ -172,7 +174,10 @@ export class Eth { .toNumber(); let preVerificationGas: BigNumberish = - this.entryPointService.calcPreverificationGas(entryPoint, userOp); + this.entryPointService.calcPreverificationGas( + entryPoint, + userOpComplemented + ); userOpComplemented.preVerificationGas = preVerificationGas; let callGasLimit: BigNumber = BigNumber.from(0); @@ -212,10 +217,22 @@ 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.initCode != null && userOp.initCode.length >= 42) + ), + userOp: userOpComplemented, + } ); } @@ -240,7 +257,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); } @@ -287,7 +305,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); } diff --git a/packages/executor/src/modules/interfaces.ts b/packages/executor/src/modules/interfaces.ts index 51f0bbf4..61b8bddf 100644 --- a/packages/executor/src/modules/interfaces.ts +++ b/packages/executor/src/modules/interfaces.ts @@ -2,7 +2,14 @@ import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; import { ReputationStatus } from "types/lib/executor"; export class EstimateUserOperationGasArgs { - userOp!: UserOperation6And7; + userOp!: Omit< + UserOperation6And7, + | "callGasLimit" + | "verificationGasLimit" + | "preVerificationGas" + | "maxFeePerGas" + | "maxPriorityFeePerGas" + >; entryPoint!: string; } diff --git a/packages/executor/src/services/BundlingService/relayers/base.ts b/packages/executor/src/services/BundlingService/relayers/base.ts index c19757f5..f7b1cfbb 100644 --- a/packages/executor/src/services/BundlingService/relayers/base.ts +++ b/packages/executor/src/services/BundlingService/relayers/base.ts @@ -6,7 +6,7 @@ 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"; @@ -95,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/service.ts b/packages/executor/src/services/BundlingService/service.ts index 7f92f128..9333be1a 100644 --- a/packages/executor/src/services/BundlingService/service.ts +++ b/packages/executor/src/services/BundlingService/service.ts @@ -20,7 +20,7 @@ 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"; @@ -159,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; diff --git a/packages/executor/src/services/EventsService.ts b/packages/executor/src/services/EntryPointService/eventListeners/0.0.6.ts similarity index 59% rename from packages/executor/src/services/EventsService.ts rename to packages/executor/src/services/EntryPointService/eventListeners/0.0.6.ts index a2d1d254..243e3207 100644 --- a/packages/executor/src/services/EventsService.ts +++ b/packages/executor/src/services/EntryPointService/eventListeners/0.0.6.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"; + IEntryPoint, +} from "types/lib/contracts/EPv6/EntryPoint"; +import { TypedEvent } from "types/lib/contracts/EPv6/common"; +import { ReputationService } from "../../ReputationService"; -export class EventsService { - private entryPoints: IEntryPoint[] = []; - private lastBlockPerEntryPoint: { - [address: string]: number; - } = {}; +export class EntryPointV6EventsService { + private lastBlock = 0; private LAST_BLOCK_KEY: string; constructor( + private entryPoint: string, private chainId: number, - private provider: providers.JsonRpcProvider, - private logger: Logger, + private contract: IEntryPoint, 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/0.0.7.ts b/packages/executor/src/services/EntryPointService/eventListeners/0.0.7.ts new file mode 100644 index 00000000..47ad39c7 --- /dev/null +++ b/packages/executor/src/services/EntryPointService/eventListeners/0.0.7.ts @@ -0,0 +1,128 @@ +import { IDbController } from "types/lib"; +import { + AccountDeployedEvent, + SignatureAggregatorChangedEvent, + UserOperationEventEvent, + EntryPoint, +} from "types/lib/contracts/EPv7/core/EntryPoint"; +import { TypedEvent } from "types/lib/contracts/EPv7/common"; +import { ReputationService } from "../../ReputationService"; + +export class EntryPointV7EventsService { + private lastBlock = 0; + private LAST_BLOCK_KEY: string; + + constructor( + private entryPoint: string, + private chainId: number, + private contract: EntryPoint, + private reputationService: ReputationService, + private db: IDbController + ) { + this.LAST_BLOCK_KEY = `${this.chainId}:LAST_PARSED_BLOCK:${this.entryPoint}`; + } + + initEventListener(): void { + this.contract.on( + this.contract.filters.UserOperationEvent(), + async (...args) => { + const ev = args[args.length - 1]; + await this.handleEvent(ev as any); + } + ); + } + + /** + * manually handle all new events since last run + */ + async handlePastEvents(): Promise { + await this.fetchLastBlockPerEntryPoints(); + 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(); + } + + async handleEvent( + ev: + | UserOperationEventEvent + | AccountDeployedEvent + | SignatureAggregatorChangedEvent + ): Promise { + switch (ev.event) { + case "UserOperationEvent": + await this.handleUserOperationEvent(ev as UserOperationEventEvent); + break; + case "AccountDeployedEvent": + await this.handleAccountDeployedEvent(ev as AccountDeployedEvent); + break; + case "SignatureAggregatorForUserOperations": + await this.handleAggregatorChangedEvent( + ev as SignatureAggregatorChangedEvent + ); + break; + } + } + + async handleAggregatorChangedEvent( + ev: SignatureAggregatorChangedEvent + ): Promise { + this.eventAggregator = ev.args.aggregator; + this.eventAggregatorTxHash = ev.transactionHash; + } + + eventAggregator: string | null = null; + eventAggregatorTxHash: string | null = null; + + // aggregator event is sent once per events bundle for all UserOperationEvents in this bundle. + // it is not sent at all if the transaction is handleOps + getEventAggregator(ev: TypedEvent): string | null { + if (ev.transactionHash !== this.eventAggregatorTxHash) { + this.eventAggregator = null; + this.eventAggregatorTxHash = ev.transactionHash; + } + return this.eventAggregator; + } + + // AccountDeployed event is sent before each UserOperationEvent that deploys a contract. + async handleAccountDeployedEvent(ev: AccountDeployedEvent): Promise { + await this.includedAddress(ev.args.factory); + } + + async handleUserOperationEvent(ev: UserOperationEventEvent): Promise { + await this.includedAddress(ev.args.sender); + await this.includedAddress(ev.args.paymaster); + await this.includedAddress(this.getEventAggregator(ev)); + } + + private async includedAddress(data: string | null): Promise { + if (data != null && data.length >= 42) { + const addr = data.slice(0, 42); + await this.reputationService.updateIncludedStatus(addr); + } + } + + private async saveLastBlockPerEntryPoints(): Promise { + await this.db.put(this.LAST_BLOCK_KEY, this.lastBlock); + } + + private async fetchLastBlockPerEntryPoints(): Promise { + const entry = await this.db + .get(this.LAST_BLOCK_KEY) + .catch(() => null); + 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..a5bd428b --- /dev/null +++ b/packages/executor/src/services/EntryPointService/eventListeners/index.ts @@ -0,0 +1,3 @@ +export * from "./0.0.6"; +export * from "./0.0.7"; +export * from "./base"; diff --git a/packages/executor/src/services/EntryPointService/service.ts b/packages/executor/src/services/EntryPointService/service.ts index f76a3a8b..fdeac13b 100644 --- a/packages/executor/src/services/EntryPointService/service.ts +++ b/packages/executor/src/services/EntryPointService/service.ts @@ -4,58 +4,92 @@ import { UserOperation, UserOperation6And7, } from "types/lib/contracts/UserOperation"; -import { Logger } from "types/lib"; +import { IDbController, Logger } from "types/lib"; import { UserOperationByHashResponse, UserOperationReceipt, } from "types/lib/api/interfaces"; -import { Config } from "../../config"; +import { IEntryPoint as EntryPointV6Contract } from "types/lib/contracts/EPv6"; +import { EntryPoint as EntryPointV7Contract } from "types/lib/contracts/EPv7/core/EntryPoint"; import { NetworkConfig, UserOpValidationResult } from "../../interfaces"; +import { getAddr } from "../../utils"; +import { ReputationService } from "../ReputationService"; import { EntryPointV7Service, EntryPointV6Service, IEntryPointService, } from "./versions"; import { EntryPointVersion } from "./interfaces"; +import { + EntryPointV6EventsService, + EntryPointV7EventsService, + IEntryPointEventsService, +} from "./eventListeners"; export class EntryPointService { private entryPoints: { [address: string]: IEntryPointService; } = {}; + private eventsService: { + [address: string]: IEntryPointEventsService; + } = {}; constructor( - private config: Config, + private chainId: number, private networkConfig: NetworkConfig, private provider: providers.JsonRpcProvider, + private reputationService: ReputationService, + private db: IDbController, private logger: Logger ) { - if (networkConfig.entryPointsV6) { + if (networkConfig.entryPointsV6 && networkConfig.entryPointsV6.length) { for (const addr of networkConfig.entryPointsV6) { - this.entryPoints[addr.toLowerCase()] = new EntryPointV6Service( + const address = addr.toLowerCase(); + this.entryPoints[address] = new EntryPointV6Service( addr, this.networkConfig, this.provider, this.logger ); + this.eventsService[address] = new EntryPointV6EventsService( + addr, + this.chainId, + this.entryPoints[address].contract as EntryPointV6Contract, + this.reputationService, + this.db + ); + this.eventsService[address].initEventListener(); } } - if (networkConfig.entryPointsV7) { + if (networkConfig.entryPointsV7 && networkConfig.entryPointsV7.length) { if (!networkConfig.entryPointV7Simulation) throw new Error("EntryPointV7Simulation not provided"); for (const addr of networkConfig.entryPointsV7) { - this.entryPoints[addr.toLowerCase()] = new EntryPointV7Service( + const address = addr.toLowerCase(); + this.entryPoints[address] = new EntryPointV7Service( addr, networkConfig.entryPointV7Simulation, 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 { @@ -84,40 +118,6 @@ export class EntryPointService { return null; } - calcPreverificationGas( - entryPoint: string, - userOp: UserOperation6And7, - forSignature = true - ): number { - return this.entryPoints[entryPoint].calcPreverificationGas( - userOp, - forSignature - ); - } - - 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; - } - const epService = this.entryPoints[entryPoint]; - if (epService instanceof EntryPointV6Service) { - return EntryPointVersion.SIX; - } - return EntryPointVersion.SEVEN; - } - - getEntryPoint(entryPoint: string): IEntryPointService { - return this.entryPoints[entryPoint]; - } - async getUserOpHash( entryPoint: string, userOp: UserOperation @@ -151,6 +151,9 @@ export class EntryPointService { ); } + /********************/ + /** Write functions */ + encodeHandleOps( entryPoint: string, userOps: UserOperation6And7[], @@ -184,6 +187,42 @@ export class EntryPointService { ); } + /**********************/ + /** 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; + } + const epService = this.entryPoints[entryPoint.toLowerCase()]; + if (epService instanceof EntryPointV6Service) { + return EntryPointVersion.SIX; + } + return EntryPointVersion.SEVEN; + } + + getEntryPoint(entryPoint: string): IEntryPointService { + return this.entryPoints[entryPoint.toLowerCase()]; + } + + calcPreverificationGas( + entryPoint: string, + userOp: UserOperation6And7, + forSignature = true + ): number { + return this.entryPoints[entryPoint.toLowerCase()].calcPreverificationGas( + userOp, + forSignature + ); + } + parseValidationResult( entryPoint: string, userOp: UserOperation6And7, @@ -194,4 +233,32 @@ export class EntryPointService { data ); } + + getFactory( + entryPoint: string, + userOp: UserOperation6And7 + ): string | undefined { + const version = this.getEntryPointVersion(entryPoint); + if (version === EntryPointVersion.SIX) { + return getAddr(userOp.initCode)?.toLowerCase(); + } + if (version === EntryPointVersion.SEVEN) { + return userOp.factory?.toLowerCase(); + } + return undefined; + } + + getPaymaster( + entryPoint: string, + userOp: UserOperation6And7 + ): string | undefined { + const version = this.getEntryPointVersion(entryPoint); + if (version === EntryPointVersion.SIX) { + return getAddr(userOp.paymasterAndData)?.toLowerCase(); + } + if (version === EntryPointVersion.SEVEN) { + return userOp.paymaster?.toLowerCase(); + } + return undefined; + } } diff --git a/packages/executor/src/services/EntryPointService/versions/0.0.6.ts b/packages/executor/src/services/EntryPointService/versions/0.0.6.ts index 5f3fc622..b242597d 100644 --- a/packages/executor/src/services/EntryPointService/versions/0.0.6.ts +++ b/packages/executor/src/services/EntryPointService/versions/0.0.6.ts @@ -104,8 +104,8 @@ export class EntryPointV6Service implements IEntryPointService { ]); } - /***********/ - /** Events */ + /******************/ + /** UserOp Events */ async getUserOperationEvent( userOpHash: string diff --git a/packages/executor/src/services/EntryPointService/versions/0.0.7.ts b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts index dace7f0e..8d61884b 100644 --- a/packages/executor/src/services/EntryPointService/versions/0.0.7.ts +++ b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts @@ -7,7 +7,7 @@ import { EntryPoint__factory, EntryPointSimulations__factory, } from "types/lib/contracts/EPv7/factories/core"; -import { BigNumber, BytesLike, providers } from "ethers"; +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 { UserOperation } from "types/lib/contracts/UserOperation"; @@ -32,7 +32,7 @@ import { StakeInfo, UserOpValidationResult, } from "../../../interfaces"; -import { deepHexlify, getAddr } from "../../../utils"; +import { deepHexlify } from "../../../utils"; import { DefaultGasOverheads } from "../constants"; import { IEntryPointService } from "./base"; @@ -113,8 +113,8 @@ export class EntryPointV7Service implements IEntryPointService { ); } - /***********/ - /** Events */ + /******************/ + /** UserOp Events */ async getUserOperationEvent( userOpHash: string @@ -364,10 +364,9 @@ export class EntryPointV7Service implements IEntryPointService { // add it as "addr" member to the "stakeinfo" struct // if no address, then return "undefined" instead of struct. function fillEntity( - data: BytesLike, + addr: string | undefined, info: StakeInfo ): StakeInfo | undefined { - const addr = getAddr(data); return addr == null ? undefined : { @@ -382,8 +381,8 @@ export class EntryPointV7Service implements IEntryPointService { ...senderInfo, addr: userOp.sender, }, - factoryInfo: fillEntity(userOp.factory!, factoryInfo), - paymasterInfo: fillEntity(userOp.paymaster!, paymasterInfo), + factoryInfo: fillEntity(userOp.factory, factoryInfo), + paymasterInfo: fillEntity(userOp.paymaster, paymasterInfo), aggregatorInfo: fillEntity( aggregatorInfo?.actualAggregator, aggregatorInfo?.stakeInfo diff --git a/packages/executor/src/services/MempoolService.ts b/packages/executor/src/services/MempoolService.ts index db34ee9c..30c95b73 100644 --- a/packages/executor/src/services/MempoolService.ts +++ b/packages/executor/src/services/MempoolService.ts @@ -14,6 +14,7 @@ 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 ) { @@ -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 { @@ -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,8 +336,8 @@ export class MempoolService { ); } - if (userOp.paymasterAndData.length >= 42) { - const paymaster = utils.getAddress(getAddr(userOp.paymasterAndData)!); + const paymaster = this.entryPointService.getPaymaster(entryPoint, userOp); + if (paymaster) { if (accounts.includes(paymaster)) { throw new RpcError( `A Paymaster at ${paymaster} in this UserOperation is used as a sender entity in another UserOperation currently in mempool.`, @@ -344,8 +346,8 @@ export class MempoolService { } } - if (userOp.initCode.length >= 42) { - const factory = utils.getAddress(getAddr(userOp.initCode)!); + const factory = this.entryPointService.getFactory(entryPoint, userOp); + if (factory) { if (accounts.includes(factory)) { throw new RpcError( `A Factory at ${factory} in this UserOperation is used as a sender entity in another UserOperation currently in mempool.`, @@ -397,11 +399,12 @@ export class MempoolService { } private async updateSeenStatus( + entryPoint: string, userOp: UserOperation6And7, 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 87a0614f..9f98ff49 100644 --- a/packages/executor/src/services/P2PService.ts +++ b/packages/executor/src/services/P2PService.ts @@ -1,5 +1,7 @@ import { UserOperationStruct } from "types/lib/contracts/EPv6/EntryPoint"; import { MempoolService } from "./MempoolService"; +import { EntryPointService } from "./EntryPointService"; +import { EntryPointVersion } from "./EntryPointService/interfaces"; export type PooledUserOpHashesResponse = { more_flag: boolean; @@ -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 { more_flag, 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/utils.ts b/packages/executor/src/services/UserOpValidation/utils.ts index 85111f26..8f75e3b5 100644 --- a/packages/executor/src/services/UserOpValidation/utils.ts +++ b/packages/executor/src/services/UserOpValidation/utils.ts @@ -1,81 +1,15 @@ 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"; +} from "types/lib/contracts/EPv6/factories"; 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 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"; export function compareBytecode( artifactBytecode: string, @@ -277,21 +211,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/safe.ts b/packages/executor/src/services/UserOpValidation/validators/safe.ts index 0c64cc88..5fdfc576 100644 --- a/packages/executor/src/services/UserOpValidation/validators/safe.ts +++ b/packages/executor/src/services/UserOpValidation/validators/safe.ts @@ -69,6 +69,7 @@ export class SafeValidationService { entryPoint: string, codehash?: string ): Promise { + entryPoint = entryPoint.toLowerCase(); const simulationGas = BigNumber.from(userOp.preVerificationGas) .add(userOp.verificationGasLimit) .add(userOp.callGasLimit); diff --git a/packages/executor/src/services/index.ts b/packages/executor/src/services/index.ts index 51233155..505926fc 100644 --- a/packages/executor/src/services/index.ts +++ b/packages/executor/src/services/index.ts @@ -2,6 +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/node/src/api/publishUserOpsWithEntryPointJSON.ts b/packages/node/src/api/publishUserOpsWithEntryPointJSON.ts index 671c46a1..484d2192 100644 --- a/packages/node/src/api/publishUserOpsWithEntryPointJSON.ts +++ b/packages/node/src/api/publishUserOpsWithEntryPointJSON.ts @@ -1,5 +1,5 @@ import { toUserOpsWithEP } 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..8cf0a240 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 { UserOperation6And7 } 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?: UserOperation6And7; + } ): 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..7533ee43 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 { UserOperation6And7 } 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?: UserOperation6And7; + } ): 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..d7c4587f 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 { UserOperation6And7 } 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?: UserOperation6And7; + } ): 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..14aff575 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 { UserOperation6And7 } 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: UserOperation6And7; }; diff --git a/packages/params/src/types/IPVGEstimator.ts b/packages/params/src/types/IPVGEstimator.ts index b6665eed..f6e87d88 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 { UserOperation6And7 } 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?: UserOperation6And7; + } ) => Promise; diff --git a/packages/params/src/utils/userOp.ts b/packages/params/src/utils/userOp.ts index 8027f719..9a27974d 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 => { From 9bb82cdebf6f5b4567b95a9fcba537354486f0a6 Mon Sep 17 00:00:00 2001 From: marie-fourier Date: Mon, 12 Feb 2024 15:18:23 +0500 Subject: [PATCH 06/12] adjust tests & some fixes --- packages/executor/src/modules/skandha.ts | 6 +++- .../EntryPointService/versions/0.0.6.ts | 33 ++++++++++++------- packages/executor/test/fixtures/getClient.ts | 2 +- packages/executor/test/fixtures/getConfig.ts | 3 +- packages/executor/test/fixtures/index.ts | 2 +- packages/executor/test/fixtures/modules.ts | 4 +++ packages/executor/test/fixtures/services.ts | 24 +++++++------- .../test/fixtures/{userOp.ts => userOpV6.ts} | 8 ++--- packages/types/src/api/interfaces.ts | 6 +++- 9 files changed, 56 insertions(+), 32 deletions(-) rename packages/executor/test/fixtures/{userOp.ts => userOpV6.ts} (94%) diff --git a/packages/executor/src/modules/skandha.ts b/packages/executor/src/modules/skandha.ts index a63c9eef..259c65b5 100644 --- a/packages/executor/src/modules/skandha.ts +++ b/packages/executor/src/modules/skandha.ts @@ -82,7 +82,9 @@ export class Skandha { testingMode: this.config.testingMode, redirectRpc: this.config.redirectRpc, }, - entryPoints: [], + entryPointsV6: this.networkConfig.entryPointsV6 || [], + entryPointsV7: this.networkConfig.entryPointsV7 || [], + entryPointV7Simulation: this.networkConfig.entryPointV7Simulation || "", beneficiary: this.networkConfig.beneficiary, relayers: walletAddresses, minInclusionDenominator: BigNumber.from( @@ -127,6 +129,8 @@ export class Skandha { bundleSize: this.networkConfig.bundleSize, minUnstakeDelay: this.networkConfig.minUnstakeDelay, pvgMarkup: this.networkConfig.pvgMarkup, + canonicalMempoolId: this.networkConfig.canonicalMempoolId, + canonicalEntryPoint: this.networkConfig.canonicalEntryPoint, }; } diff --git a/packages/executor/src/services/EntryPointService/versions/0.0.6.ts b/packages/executor/src/services/EntryPointService/versions/0.0.6.ts index b242597d..e7731122 100644 --- a/packages/executor/src/services/EntryPointService/versions/0.0.6.ts +++ b/packages/executor/src/services/EntryPointService/versions/0.0.6.ts @@ -54,12 +54,14 @@ export class EntryPointV6Service implements IEntryPointService { async simulateHandleOp(userOp: UserOperationStruct): Promise { return await this.contract + .callStatic .simulateHandleOp(userOp, AddressZero, BytesZero) .catch((err: any) => this.nonGethErrorHandler(err)); } async simulateValidation(userOp: UserOperationStruct): Promise { const errorResult = await this.contract + .callStatic .simulateValidation(userOp, { gasLimit: this.networkConfig.validationGasLimit, }) @@ -194,19 +196,12 @@ export class EntryPointV6Service implements IEntryPointService { /**************/ /** Utilities */ - calcPreverificationGas( - userOp: Partial, + static packUserOp( + op: UserOperationStruct, forSignature = true - ): number { - const ov = { ...DefaultGasOverheads }; - const op = { - preVerificationGas: 21000, - signature: hexlify(Buffer.alloc(ov.sigSize, 1)), - ...userOp, - } as any; - let encoded: string; + ): string { if (forSignature) { - encoded = defaultAbiCoder.encode( + return defaultAbiCoder.encode( [ "address", "uint256", @@ -233,7 +228,8 @@ export class EntryPointV6Service implements IEntryPointService { ] ); } else { - encoded = defaultAbiCoder.encode( + // for the purpose of calculating gas cost encode also signature (and no keccak of bytes) + return defaultAbiCoder.encode( [ "address", "uint256", @@ -262,6 +258,19 @@ export class EntryPointV6Service implements IEntryPointService { ] ); } + } + + calcPreverificationGas( + userOp: Partial, + forSignature = true + ): number { + const ov = { ...DefaultGasOverheads }; + const op = { + preVerificationGas: 21000, + signature: hexlify(Buffer.alloc(ov.sigSize, 1)), + ...userOp, + } as any; + let encoded = EntryPointV6Service.packUserOp(op, forSignature); const packed = arrayify(encoded); const lengthInWord = (packed.length + 31) / 32; const callDataCost = packed diff --git a/packages/executor/test/fixtures/getClient.ts b/packages/executor/test/fixtures/getClient.ts index 5bea4658..6bd567f1 100644 --- a/packages/executor/test/fixtures/getClient.ts +++ b/packages/executor/test/fixtures/getClient.ts @@ -1,7 +1,7 @@ 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 { IEntryPoint__factory, SimpleAccountFactory__factory } from "types/src/contracts/EPv6"; import { DefaultRpcUrl, EntryPointAddress } from "../constants"; import { Wallet, constants, providers, utils } from "ethers"; import { testAccounts } from "./accounts"; diff --git a/packages/executor/test/fixtures/getConfig.ts b/packages/executor/test/fixtures/getConfig.ts index c79fac7b..1b89a428 100644 --- a/packages/executor/test/fixtures/getConfig.ts +++ b/packages/executor/test/fixtures/getConfig.ts @@ -5,7 +5,7 @@ import { ConfigOptions, NetworkConfig } from "../../src/interfaces"; const BaseConfig: ConfigOptions = { config: { - entryPoints: [EntryPointAddress], + entryPointsV6: [EntryPointAddress], relayers: [TestAccountMnemonic], rpcEndpoint: DefaultRpcUrl, beneficiary: "", @@ -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..f40700dd 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 "./userOpV6"; 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/userOpV6.ts similarity index 94% rename from packages/executor/test/fixtures/userOp.ts rename to packages/executor/test/fixtures/userOpV6.ts index 4eaccb20..4abd3844 100644 --- a/packages/executor/test/fixtures/userOp.ts +++ b/packages/executor/test/fixtures/userOpV6.ts @@ -1,11 +1,11 @@ -import { IEntryPoint__factory, SimpleAccountFactory__factory, SimpleAccount__factory } from "types/src/executor/contracts" +import { IEntryPoint__factory, SimpleAccountFactory__factory, SimpleAccount__factory } from "types/src/contracts/EPv6" 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 { UserOperationStruct } from "types/src/contracts/EPv6/EntryPoint"; import { applyEstimatedUserOp, randomAddress } from "../utils"; -import { packUserOp } from "../../src/utils"; import { Eth } from "../../src/modules"; +import { EntryPointV6Service } from "../../src/services/EntryPointService/versions"; // Creates random simple transfer userop export async function createRandomUnsignedUserOp( @@ -81,7 +81,7 @@ async function isAccountDeployed(ownerAddress: string, salt: number = 0): Promis } export function getUserOpHash(userOp: UserOperationStruct): string { - const userOpHash = keccak256(packUserOp(userOp, true)); + const userOpHash = keccak256(EntryPointV6Service.packUserOp(userOp, true)); const enc = defaultAbiCoder.encode(['bytes32', 'address', 'uint256'], [userOpHash, EntryPointAddress, ChainId]); return keccak256(enc); } diff --git a/packages/types/src/api/interfaces.ts b/packages/types/src/api/interfaces.ts index 82ccb74c..6e61b86d 100644 --- a/packages/types/src/api/interfaces.ts +++ b/packages/types/src/api/interfaces.ts @@ -51,7 +51,9 @@ export type GetConfigResponse = { redirectRpc: boolean; testingMode: boolean; }; - entryPoints: string[]; + entryPointsV6: string[]; + entryPointsV7: string[]; + entryPointV7Simulation: string; beneficiary: string; relayers: string[]; minInclusionDenominator: number; @@ -78,6 +80,8 @@ export type GetConfigResponse = { bundleSize: number; minUnstakeDelay: number; pvgMarkup: number; + canonicalMempoolId: string; + canonicalEntryPoint: string; }; export type SupportedEntryPoints = string[]; From 8eafb0f9c7667f6bf8c72ac83375a156a38074f0 Mon Sep 17 00:00:00 2001 From: marie-fourier Date: Mon, 26 Feb 2024 13:18:46 +0500 Subject: [PATCH 07/12] wip: ep7 simulations --- .../api/src/dto/EstimateUserOperation.dto.ts | 37 +- packages/api/src/dto/SendUserOperation.dto.ts | 44 +- packages/api/src/modules/debug.ts | 4 +- packages/executor/src/config.ts | 19 +- .../executor/src/entities/MempoolEntry.ts | 8 +- packages/executor/src/entities/interfaces.ts | 4 +- packages/executor/src/interfaces.ts | 4 +- packages/executor/src/modules/debug.ts | 4 +- packages/executor/src/modules/eth.ts | 13 +- packages/executor/src/modules/interfaces.ts | 8 +- packages/executor/src/modules/skandha.ts | 4 +- .../EntryPointService/eventListeners/0.0.6.ts | 128 --- .../EntryPointService/eventListeners/index.ts | 1 - .../services/EntryPointService/interfaces.ts | 6 + .../src/services/EntryPointService/service.ts | 109 +- .../utils/decodeRevertReason.ts | 71 ++ .../utils/packedUserOpUtils.ts | 251 +++-- .../EntryPointService/versions/0.0.6.ts | 419 -------- .../EntryPointService/versions/0.0.7.ts | 136 +-- .../EntryPointService/versions/base.ts | 20 +- .../EntryPointService/versions/index.ts | 1 - .../executor/src/services/MempoolService.ts | 8 +- .../services/UserOpValidation/GethTracer.ts | 25 +- .../src/services/UserOpValidation/service.ts | 10 +- .../src/services/UserOpValidation/utils.ts | 12 +- .../UserOpValidation/validators/estimation.ts | 4 +- .../UserOpValidation/validators/safe.ts | 33 +- .../UserOpValidation/validators/unsafe.ts | 4 +- .../params/src/gas-estimation/arbitrum.ts | 4 +- packages/params/src/gas-estimation/mantle.ts | 4 +- .../params/src/gas-estimation/optimism.ts | 4 +- .../gas-price-oracles/oracles/interfaces.ts | 4 +- packages/params/src/types/IPVGEstimator.ts | 4 +- packages/types/src/api/interfaces.ts | 8 +- .../src/contracts/EPv7/core/BaseAccount.ts | 13 +- .../src/contracts/EPv7/core/BasePaymaster.ts | 13 +- .../src/contracts/EPv7/core/EntryPoint.ts | 43 +- .../EPv7/core/EntryPointSimulations.ts | 47 +- .../src/contracts/EPv7/core/NonceManager.ts | 2 +- .../src/contracts/EPv7/core/SenderCreator.ts | 2 +- .../src/contracts/EPv7/core/StakeManager.ts | 2 +- .../contracts/EPv7/core/UserOperationLib.ts | 2 +- .../factories/core/BaseAccount__factory.ts | 11 +- .../factories/core/BasePaymaster__factory.ts | 11 +- .../core/EntryPointSimulations__factory.ts | 86 +- .../factories/core/EntryPoint__factory.ts | 62 +- .../factories/core/SenderCreator__factory.ts | 4 +- .../core/UserOperationLib__factory.ts | 4 +- .../src/contracts/EPv7/factories/index.ts | 1 - .../interfaces/IAccountExecute__factory.ts | 11 +- .../factories/interfaces/IAccount__factory.ts | 11 +- .../interfaces/IAggregator__factory.ts | 33 +- .../IEntryPointSimulations__factory.ts | 80 +- .../interfaces/IEntryPoint__factory.ts | 58 +- .../interfaces/IPaymaster__factory.ts | 11 +- .../samples/LegacyTokenPaymaster__factory.ts | 15 +- .../samples/SimpleAccountFactory__factory.ts | 4 +- .../samples/SimpleAccount__factory.ts | 15 +- .../samples/TokenPaymaster__factory.ts | 74 +- .../samples/VerifyingPaymaster__factory.ts | 26 +- .../samples/bls/BLSAccountFactory__factory.ts | 148 --- .../samples/bls/BLSAccount__factory.ts | 661 ------------ .../bls/BLSSignatureAggregator__factory.ts | 612 ----------- .../samples/bls/IBLSAccount__factory.ts | 139 --- .../EPv7/factories/samples/bls/index.ts | 7 - .../contracts/EPv7/factories/samples/index.ts | 1 - .../samples/utils/OracleHelper__factory.ts | 2 +- .../src/contracts/EPv7/interfaces/IAccount.ts | 13 +- .../EPv7/interfaces/IAccountExecute.ts | 13 +- .../contracts/EPv7/interfaces/IAggregator.ts | 17 +- .../contracts/EPv7/interfaces/IEntryPoint.ts | 43 +- .../EPv7/interfaces/IEntryPointSimulations.ts | 47 +- .../EPv7/interfaces/INonceManager.ts | 2 +- .../contracts/EPv7/interfaces/IPaymaster.ts | 13 +- .../EPv7/interfaces/IStakeManager.ts | 2 +- .../src/contracts/EPv7/samples/IOracle.ts | 2 +- .../EPv7/samples/LegacyTokenPaymaster.ts | 13 +- .../contracts/EPv7/samples/SimpleAccount.ts | 13 +- .../EPv7/samples/SimpleAccountFactory.ts | 2 +- .../contracts/EPv7/samples/TokenPaymaster.ts | 115 ++- .../EPv7/samples/VerifyingPaymaster.ts | 15 +- .../contracts/EPv7/samples/bls/BLSAccount.ts | 972 ------------------ .../EPv7/samples/bls/BLSAccountFactory.ts | 239 ----- .../samples/bls/BLSSignatureAggregator.ts | 449 -------- .../contracts/EPv7/samples/bls/IBLSAccount.ts | 216 ---- .../src/contracts/EPv7/samples/bls/index.ts | 7 - .../samples/callback/TokenCallbackHandler.ts | 2 +- .../types/src/contracts/EPv7/samples/index.ts | 2 - .../contracts/EPv7/samples/utils/IOracle.ts | 2 +- .../EPv7/samples/utils/OracleHelper.ts | 2 +- .../EPv7/samples/utils/UniswapHelper.ts | 2 +- packages/types/src/contracts/UserOperation.ts | 27 +- .../types/src/contracts/{EPv7 => }/common.ts | 2 +- test/docker-compose.yml | 18 - test/geth-dev/Dockerfile | 5 +- 95 files changed, 1009 insertions(+), 4872 deletions(-) delete mode 100644 packages/executor/src/services/EntryPointService/eventListeners/0.0.6.ts create mode 100644 packages/executor/src/services/EntryPointService/utils/decodeRevertReason.ts delete mode 100644 packages/executor/src/services/EntryPointService/versions/0.0.6.ts delete mode 100644 packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccountFactory__factory.ts delete mode 100644 packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccount__factory.ts delete mode 100644 packages/types/src/contracts/EPv7/factories/samples/bls/BLSSignatureAggregator__factory.ts delete mode 100644 packages/types/src/contracts/EPv7/factories/samples/bls/IBLSAccount__factory.ts delete mode 100644 packages/types/src/contracts/EPv7/factories/samples/bls/index.ts delete mode 100644 packages/types/src/contracts/EPv7/samples/bls/BLSAccount.ts delete mode 100644 packages/types/src/contracts/EPv7/samples/bls/BLSAccountFactory.ts delete mode 100644 packages/types/src/contracts/EPv7/samples/bls/BLSSignatureAggregator.ts delete mode 100644 packages/types/src/contracts/EPv7/samples/bls/IBLSAccount.ts delete mode 100644 packages/types/src/contracts/EPv7/samples/bls/index.ts rename packages/types/src/contracts/{EPv7 => }/common.ts (93%) diff --git a/packages/api/src/dto/EstimateUserOperation.dto.ts b/packages/api/src/dto/EstimateUserOperation.dto.ts index 823abbde..f01b4e78 100644 --- a/packages/api/src/dto/EstimateUserOperation.dto.ts +++ b/packages/api/src/dto/EstimateUserOperation.dto.ts @@ -2,14 +2,13 @@ import { IsDefined, IsEthereumAddress, IsObject, + IsOptional, IsString, - ValidateIf, 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 EstimateUserOperation { /** @@ -34,49 +33,31 @@ export class EstimateUserOperation { @IsString() signature!: BytesLike; - /** - * EntryPoint v6 Properties - */ - @ValidateIf((o) => o.paymasterAndData) - @IsString() - @IsCallData() - initCode?: BytesLike; - - @ValidateIf((o) => o.paymasterAndData) - @IsString() - @IsCallData() - paymasterAndData?: BytesLike; - /** * EntryPoint v7 Properties */ - /** - * EntryPoint v7 Properties - */ - @ValidateIf((o) => o.paymasterData) - @IsString() + @IsEthereumAddress() + @IsOptional() factory?: string; - @ValidateIf((o) => o.paymasterData) - @IsCallData() @IsString() + @IsOptional() factoryData?: BytesLike; - @ValidateIf((o) => o.paymasterData) - @IsString() + @IsEthereumAddress() + @IsOptional() paymaster?: string; - @ValidateIf((o) => o.paymasterData) @IsBigNumber() + @IsOptional() paymasterVerificationGasLimit?: BigNumberish; - @ValidateIf((o) => o.paymasterData) @IsBigNumber() + @IsOptional() paymasterPostOpGasLimit?: BigNumberish; - @ValidateIf((o) => o.paymasterData) - @IsCallData() @IsString() + @IsOptional() paymasterData?: BytesLike; } diff --git a/packages/api/src/dto/SendUserOperation.dto.ts b/packages/api/src/dto/SendUserOperation.dto.ts index 89f3a601..826a8f23 100644 --- a/packages/api/src/dto/SendUserOperation.dto.ts +++ b/packages/api/src/dto/SendUserOperation.dto.ts @@ -2,14 +2,13 @@ import { IsDefined, IsEthereumAddress, IsObject, + IsOptional, IsString, - ValidateIf, 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 SendUserOperation { /** @@ -34,45 +33,32 @@ export class SendUserOperation { @IsString() signature!: BytesLike; - /** - * EntryPoint v6 Properties - */ - @ValidateIf((o) => o.paymasterAndData) - @IsString() - @IsCallData() - initCode!: BytesLike; - - @ValidateIf((o) => o.paymasterAndData) - @IsString() - @IsCallData() - paymasterAndData!: BytesLike; - /** * EntryPoint v7 Properties */ - @ValidateIf((o) => o.paymasterData) - @IsString() - factory!: string; + @IsEthereumAddress() + @IsOptional() + factory?: string; - @ValidateIf((o) => o.paymasterData) @IsString() - factoryData!: BytesLike; + @IsOptional() + factoryData?: BytesLike; - @ValidateIf((o) => o.paymasterData) - @IsString() - paymaster!: string; + @IsEthereumAddress() + @IsOptional() + paymaster?: string; - @ValidateIf((o) => o.paymasterData) @IsBigNumber() - paymasterVerificationGasLimit!: BigNumberish; + @IsOptional() + paymasterVerificationGasLimit?: BigNumberish; - @ValidateIf((o) => o.paymasterData) @IsBigNumber() - paymasterPostOpGasLimit!: BigNumberish; + @IsOptional() + paymasterPostOpGasLimit?: BigNumberish; - @ValidateIf((o) => o.paymasterData) @IsString() - paymasterData!: BytesLike; + @IsOptional() + paymasterData?: BytesLike; } export class SendUserOperationGasArgs { diff --git a/packages/api/src/modules/debug.ts b/packages/api/src/modules/debug.ts index 9bd8bf69..f551cb15 100644 --- a/packages/api/src/modules/debug.ts +++ b/packages/api/src/modules/debug.ts @@ -1,4 +1,4 @@ -import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +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/executor/src/config.ts b/packages/executor/src/config.ts index 9a85069e..755fe59a 100644 --- a/packages/executor/src/config.ts +++ b/packages/executor/src/config.ts @@ -73,29 +73,18 @@ export class Config { } isEntryPointSupported(entryPoint: string): boolean { - const ep6 = this.config.entryPointsV6 || []; - const ep7 = this.config.entryPointsV7 || []; - return [...ep6, ...ep7].some( + return this.config.entryPoints.some( (addr) => addr.toLowerCase() === entryPoint.toLowerCase() ); } private getDefaultNetworkConfig(config: NetworkConfig | null): NetworkConfig { if (config == null) config = {} as NetworkConfig; - config.entryPointsV6 = fromEnvVar( - "EP6", - config.entryPointsV6 || [], + config.entryPoints = fromEnvVar( + "ENTRYPOINTS", + config.entryPoints || [], true ) as string[]; - config.entryPointsV7 = fromEnvVar( - "EP7", - config.entryPointsV7 || [], - true - ) as string[]; - config.entryPointV7Simulation = fromEnvVar( - "EP7_SIMULATION", - config.entryPointV7Simulation || "" - ) as string; config.relayers = fromEnvVar("RELAYERS", config.relayers, true) as string[]; diff --git a/packages/executor/src/entities/MempoolEntry.ts b/packages/executor/src/entities/MempoolEntry.ts index 77943f25..aa2b04be 100644 --- a/packages/executor/src/entities/MempoolEntry.ts +++ b/packages/executor/src/entities/MempoolEntry.ts @@ -3,13 +3,13 @@ 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 { MempoolEntryStatus } from "types/lib/executor"; -import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { now } from "../utils"; import { IMempoolEntry, MempoolEntrySerialized } from "./interfaces"; export class MempoolEntry implements IMempoolEntry { chainId: number; - userOp: UserOperation6And7; + userOp: UserOperation; entryPoint: string; prefund: BigNumberish; aggregator?: string; @@ -38,7 +38,7 @@ export class MempoolEntry implements IMempoolEntry { submitAttempts, }: { chainId: number; - userOp: UserOperation6And7; + userOp: UserOperation; entryPoint: string; prefund: BigNumberish; aggregator?: string | undefined; @@ -166,14 +166,12 @@ 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, diff --git a/packages/executor/src/entities/interfaces.ts b/packages/executor/src/entities/interfaces.ts index ff28d4ff..449ee746 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 { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { MempoolEntryStatus, ReputationStatus } from "types/lib/executor"; export interface IMempoolEntry { chainId: number; - userOp: UserOperation6And7; + userOp: UserOperation; entryPoint: string; prefund: BigNumberish; aggregator?: string; diff --git a/packages/executor/src/interfaces.ts b/packages/executor/src/interfaces.ts index 5cad8f18..579dc1c6 100644 --- a/packages/executor/src/interfaces.ts +++ b/packages/executor/src/interfaces.ts @@ -74,9 +74,7 @@ export type BundlingMode = "auto" | "manual"; export type GetNodeAPI = () => INodeAPI | null; export interface NetworkConfig { - entryPointsV6?: string[]; - entryPointsV7?: string[]; - entryPointV7Simulation?: string; + entryPoints: string[]; relayers: string[]; beneficiary: string; rpcEndpoint: string; diff --git a/packages/executor/src/modules/debug.ts b/packages/executor/src/modules/debug.ts index 76f1ceac..b93c02f1 100644 --- a/packages/executor/src/modules/debug.ts +++ b/packages/executor/src/modules/debug.ts @@ -3,7 +3,7 @@ import RpcError from "types/lib/api/errors/rpc-error"; import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; import { StakeManager__factory } from "types/lib/contracts/EPv6"; import { MempoolEntryStatus } from "types/lib/executor"; -import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { BundlingService, EntryPointService, @@ -62,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) diff --git a/packages/executor/src/modules/eth.ts b/packages/executor/src/modules/eth.ts index 4b387029..3bd22adb 100644 --- a/packages/executor/src/modules/eth.ts +++ b/packages/executor/src/modules/eth.ts @@ -17,7 +17,7 @@ import { } from "params/lib"; import { Logger } from "types/lib"; import { PerChainMetrics } from "monitoring/lib"; -import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { UserOpValidationService, MempoolService, @@ -69,7 +69,7 @@ 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 UserOperation6And7; + 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); @@ -151,7 +151,7 @@ export class Eth { throw new RpcError("Invalid Entrypoint", RpcErrorCodes.INVALID_REQUEST); } - const userOpComplemented: UserOperation6And7 = { + const userOpComplemented: UserOperation = { ...userOp, callGasLimit: BigNumber.from(10e6), preVerificationGas: BigNumber.from(1e6), @@ -210,7 +210,7 @@ export class Eth { //> // Binary search gas limits - const userOpToEstimate: UserOperation6And7 = { + const userOpToEstimate: UserOperation = { ...userOpComplemented, preVerificationGas, verificationGasLimit, @@ -232,10 +232,7 @@ export class Eth { data, preVerificationGas, { - contractCreation: Boolean( - userOp.factory || - (userOp.initCode != null && userOp.initCode.length >= 42) - ), + contractCreation: Boolean(userOp.factory && userOp.factory.length > 2), userOp: userOpComplemented, } ); diff --git a/packages/executor/src/modules/interfaces.ts b/packages/executor/src/modules/interfaces.ts index 61b8bddf..17703815 100644 --- a/packages/executor/src/modules/interfaces.ts +++ b/packages/executor/src/modules/interfaces.ts @@ -1,9 +1,9 @@ -import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { ReputationStatus } from "types/lib/executor"; export class EstimateUserOperationGasArgs { userOp!: Omit< - UserOperation6And7, + UserOperation, | "callGasLimit" | "verificationGasLimit" | "preVerificationGas" @@ -14,7 +14,7 @@ export class EstimateUserOperationGasArgs { } export class SendUserOperationGasArgs { - userOp!: UserOperation6And7; + userOp!: UserOperation; entryPoint!: string; } @@ -30,6 +30,6 @@ export class SetReputationArgs { } export class SetMempoolArgs { - userOps!: UserOperation6And7[]; + userOps!: UserOperation[]; entryPoint!: string; } diff --git a/packages/executor/src/modules/skandha.ts b/packages/executor/src/modules/skandha.ts index 259c65b5..3254e1c2 100644 --- a/packages/executor/src/modules/skandha.ts +++ b/packages/executor/src/modules/skandha.ts @@ -82,9 +82,7 @@ export class Skandha { testingMode: this.config.testingMode, redirectRpc: this.config.redirectRpc, }, - entryPointsV6: this.networkConfig.entryPointsV6 || [], - entryPointsV7: this.networkConfig.entryPointsV7 || [], - entryPointV7Simulation: this.networkConfig.entryPointV7Simulation || "", + entryPoints: this.networkConfig.entryPoints || [], beneficiary: this.networkConfig.beneficiary, relayers: walletAddresses, minInclusionDenominator: BigNumber.from( diff --git a/packages/executor/src/services/EntryPointService/eventListeners/0.0.6.ts b/packages/executor/src/services/EntryPointService/eventListeners/0.0.6.ts deleted file mode 100644 index 243e3207..00000000 --- a/packages/executor/src/services/EntryPointService/eventListeners/0.0.6.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { IDbController } from "types/lib"; -import { - AccountDeployedEvent, - SignatureAggregatorChangedEvent, - UserOperationEventEvent, - IEntryPoint, -} from "types/lib/contracts/EPv6/EntryPoint"; -import { TypedEvent } from "types/lib/contracts/EPv6/common"; -import { ReputationService } from "../../ReputationService"; - -export class EntryPointV6EventsService { - private lastBlock = 0; - private LAST_BLOCK_KEY: string; - - constructor( - private entryPoint: string, - private chainId: number, - private contract: IEntryPoint, - private reputationService: ReputationService, - private db: IDbController - ) { - this.LAST_BLOCK_KEY = `${this.chainId}:LAST_PARSED_BLOCK:${this.entryPoint}`; - } - - initEventListener(): void { - this.contract.on( - this.contract.filters.UserOperationEvent(), - async (...args) => { - const ev = args[args.length - 1]; - await this.handleEvent(ev as any); - } - ); - } - - /** - * manually handle all new events since last run - */ - async handlePastEvents(): Promise { - await this.fetchLastBlockPerEntryPoints(); - 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(); - } - - async handleEvent( - ev: - | UserOperationEventEvent - | AccountDeployedEvent - | SignatureAggregatorChangedEvent - ): Promise { - switch (ev.event) { - case "UserOperationEvent": - await this.handleUserOperationEvent(ev as UserOperationEventEvent); - break; - case "AccountDeployedEvent": - await this.handleAccountDeployedEvent(ev as AccountDeployedEvent); - break; - case "SignatureAggregatorForUserOperations": - await this.handleAggregatorChangedEvent( - ev as SignatureAggregatorChangedEvent - ); - break; - } - } - - async handleAggregatorChangedEvent( - ev: SignatureAggregatorChangedEvent - ): Promise { - this.eventAggregator = ev.args.aggregator; - this.eventAggregatorTxHash = ev.transactionHash; - } - - eventAggregator: string | null = null; - eventAggregatorTxHash: string | null = null; - - // aggregator event is sent once per events bundle for all UserOperationEvents in this bundle. - // it is not sent at all if the transaction is handleOps - getEventAggregator(ev: TypedEvent): string | null { - if (ev.transactionHash !== this.eventAggregatorTxHash) { - this.eventAggregator = null; - this.eventAggregatorTxHash = ev.transactionHash; - } - return this.eventAggregator; - } - - // AccountDeployed event is sent before each UserOperationEvent that deploys a contract. - async handleAccountDeployedEvent(ev: AccountDeployedEvent): Promise { - await this.includedAddress(ev.args.factory); - } - - async handleUserOperationEvent(ev: UserOperationEventEvent): Promise { - await this.includedAddress(ev.args.sender); - await this.includedAddress(ev.args.paymaster); - await this.includedAddress(this.getEventAggregator(ev)); - } - - private async includedAddress(data: string | null): Promise { - if (data != null && data.length >= 42) { - const addr = data.slice(0, 42); - await this.reputationService.updateIncludedStatus(addr); - } - } - - private async saveLastBlockPerEntryPoints(): Promise { - await this.db.put(this.LAST_BLOCK_KEY, this.lastBlock); - } - - private async fetchLastBlockPerEntryPoints(): Promise { - const entry = await this.db - .get(this.LAST_BLOCK_KEY) - .catch(() => null); - if (entry != null) { - this.lastBlock = entry; - } - } -} diff --git a/packages/executor/src/services/EntryPointService/eventListeners/index.ts b/packages/executor/src/services/EntryPointService/eventListeners/index.ts index a5bd428b..757a9986 100644 --- a/packages/executor/src/services/EntryPointService/eventListeners/index.ts +++ b/packages/executor/src/services/EntryPointService/eventListeners/index.ts @@ -1,3 +1,2 @@ -export * from "./0.0.6"; export * from "./0.0.7"; export * from "./base"; diff --git a/packages/executor/src/services/EntryPointService/interfaces.ts b/packages/executor/src/services/EntryPointService/interfaces.ts index fd4f953b..2f91a620 100644 --- a/packages/executor/src/services/EntryPointService/interfaces.ts +++ b/packages/executor/src/services/EntryPointService/interfaces.ts @@ -3,3 +3,9 @@ export enum EntryPointVersion { 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 index fdeac13b..e9c85921 100644 --- a/packages/executor/src/services/EntryPointService/service.ts +++ b/packages/executor/src/services/EntryPointService/service.ts @@ -1,27 +1,22 @@ /* eslint-disable @typescript-eslint/strict-boolean-expressions */ import { BigNumber, providers } from "ethers"; import { - UserOperation, - UserOperation6And7, + UserOperation } from "types/lib/contracts/UserOperation"; import { IDbController, Logger } from "types/lib"; import { UserOperationByHashResponse, UserOperationReceipt, } from "types/lib/api/interfaces"; -import { IEntryPoint as EntryPointV6Contract } from "types/lib/contracts/EPv6"; import { EntryPoint as EntryPointV7Contract } from "types/lib/contracts/EPv7/core/EntryPoint"; import { NetworkConfig, UserOpValidationResult } from "../../interfaces"; -import { getAddr } from "../../utils"; import { ReputationService } from "../ReputationService"; import { EntryPointV7Service, - EntryPointV6Service, IEntryPointService, } from "./versions"; import { EntryPointVersion } from "./interfaces"; import { - EntryPointV6EventsService, EntryPointV7EventsService, IEntryPointEventsService, } from "./eventListeners"; @@ -42,48 +37,22 @@ export class EntryPointService { private db: IDbController, private logger: Logger ) { - if (networkConfig.entryPointsV6 && networkConfig.entryPointsV6.length) { - for (const addr of networkConfig.entryPointsV6) { - const address = addr.toLowerCase(); - this.entryPoints[address] = new EntryPointV6Service( - addr, - this.networkConfig, - this.provider, - this.logger - ); - this.eventsService[address] = new EntryPointV6EventsService( - addr, - this.chainId, - this.entryPoints[address].contract as EntryPointV6Contract, - this.reputationService, - this.db - ); - this.eventsService[address].initEventListener(); - } - } - - if (networkConfig.entryPointsV7 && networkConfig.entryPointsV7.length) { - if (!networkConfig.entryPointV7Simulation) - throw new Error("EntryPointV7Simulation not provided"); - - for (const addr of networkConfig.entryPointsV7) { - const address = addr.toLowerCase(); - this.entryPoints[address] = new EntryPointV7Service( - addr, - networkConfig.entryPointV7Simulation, - 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(); - } + 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(); } } @@ -135,7 +104,7 @@ export class EntryPointService { async simulateHandleOp( entryPoint: string, - userOp: UserOperation6And7 + userOp: UserOperation ): Promise { return await this.entryPoints[entryPoint.toLowerCase()].simulateHandleOp( userOp @@ -144,7 +113,7 @@ export class EntryPointService { async simulateValidation( entryPoint: string, - userOp: UserOperation6And7 + userOp: UserOperation ): Promise { return await this.entryPoints[entryPoint.toLowerCase()].simulateValidation( userOp @@ -156,7 +125,7 @@ export class EntryPointService { encodeHandleOps( entryPoint: string, - userOps: UserOperation6And7[], + userOps: UserOperation[], beneficiary: string ): string { return this.entryPoints[entryPoint.toLowerCase()].encodeHandleOps( @@ -167,10 +136,10 @@ export class EntryPointService { encodeSimulateHandleOp( entryPoint: string, - userOp: UserOperation6And7, + userOp: UserOperation, target: string, targetCallData: string - ): string { + ): any { return this.entryPoints[entryPoint.toLowerCase()].encodeSimulateHandleOp( userOp, target, @@ -180,8 +149,8 @@ export class EntryPointService { encodeSimulateValidation( entryPoint: string, - userOp: UserOperation6And7 - ): string { + userOp: UserOperation + ): any { return this.entryPoints[entryPoint.toLowerCase()].encodeSimulateValidation( userOp ); @@ -201,10 +170,6 @@ export class EntryPointService { if (!this.isEntryPointSupported(entryPoint)) { return EntryPointVersion.UNKNOWN; } - const epService = this.entryPoints[entryPoint.toLowerCase()]; - if (epService instanceof EntryPointV6Service) { - return EntryPointVersion.SIX; - } return EntryPointVersion.SEVEN; } @@ -214,7 +179,7 @@ export class EntryPointService { calcPreverificationGas( entryPoint: string, - userOp: UserOperation6And7, + userOp: UserOperation, forSignature = true ): number { return this.entryPoints[entryPoint.toLowerCase()].calcPreverificationGas( @@ -225,7 +190,7 @@ export class EntryPointService { parseValidationResult( entryPoint: string, - userOp: UserOperation6And7, + userOp: UserOperation, data: string ): UserOpValidationResult { return this.entryPoints[entryPoint.toLowerCase()].parseValidationResult( @@ -236,29 +201,15 @@ export class EntryPointService { getFactory( entryPoint: string, - userOp: UserOperation6And7 + userOp: UserOperation ): string | undefined { - const version = this.getEntryPointVersion(entryPoint); - if (version === EntryPointVersion.SIX) { - return getAddr(userOp.initCode)?.toLowerCase(); - } - if (version === EntryPointVersion.SEVEN) { - return userOp.factory?.toLowerCase(); - } - return undefined; + return userOp.factory?.toLowerCase(); } getPaymaster( entryPoint: string, - userOp: UserOperation6And7 + userOp: UserOperation ): string | undefined { - const version = this.getEntryPointVersion(entryPoint); - if (version === EntryPointVersion.SIX) { - return getAddr(userOp.paymasterAndData)?.toLowerCase(); - } - if (version === EntryPointVersion.SEVEN) { - return userOp.paymaster?.toLowerCase(); - } - return 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..bfbe55a3 --- /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/src/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/packedUserOpUtils.ts b/packages/executor/src/services/EntryPointService/utils/packedUserOpUtils.ts index ce9c416c..1670dc8a 100644 --- a/packages/executor/src/services/EntryPointService/utils/packedUserOpUtils.ts +++ b/packages/executor/src/services/EntryPointService/utils/packedUserOpUtils.ts @@ -4,107 +4,143 @@ import { hexDataLength, hexDataSlice, hexConcat, + defaultAbiCoder, + keccak256, } from "ethers/lib/utils"; -import { PackedUserOperationStruct } from "types/lib/contracts/EPv7/core/EntryPoint"; -import { UserOperation } from "types/lib/contracts/UserOperation"; - -export function packAccountGasLimits( - validationGasLimit: BigNumberish, - callGasLimit: BigNumberish -): string { - return hexZeroPad( - BigNumber.from(validationGasLimit).shl(128).add(callGasLimit).toHexString(), - 32 - ); +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; +export function unpackAccountGasLimits (accountGasLimits: BytesLike): { + verificationGasLimit: BigNumber + callGasLimit: BigNumber } { - const limits: BigNumber = BigNumber.from(accountGasLimits); - return { - verificationGasLimit: limits.shr(128), - callGasLimit: limits.and(BigNumber.from(1).shl(128).sub(1)), - }; + 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 { +export function packPaymasterData (paymaster: string, paymasterVerificationGasLimit: BigNumberish, postOpGasLimit: BigNumberish, paymasterData?: BytesLike): BytesLike { return ethers.utils.hexConcat([ paymaster, - packAccountGasLimits(paymasterVerificationGasLimit, postOpGasLimit), - paymasterData ?? "0x", - ]); + 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 unpackPaymasterAndData(paymasterAndData: BytesLike): { - paymaster: string; - paymasterVerificationGas: BigNumber; - postOpGasLimit: BigNumber; - paymasterData: BytesLike; +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 (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}`); + throw new Error(`invalid PaymasterAndData: ${paymasterAndData as string}`) } - const { - verificationGasLimit: paymasterVerificationGas, - callGasLimit: postOpGasLimit, - } = unpackAccountGasLimits(hexDataSlice(paymasterAndData, 20, 52)); + const [paymasterVerificationGas, postOpGasLimit] = unpackUint(hexDataSlice(paymasterAndData, 20, 52)) return { paymaster: hexDataSlice(paymasterAndData, 0, 20), paymasterVerificationGas, postOpGasLimit, - paymasterData: hexDataSlice(paymasterAndData, 52), - }; + paymasterData: hexDataSlice(paymasterAndData, 52) + } } -export function packUserOp(op: UserOperation): PackedUserOperationStruct { - let paymasterAndData: BytesLike; +export function packUserOp (op: UserOperation): PackedUserOperation { + let paymasterAndData: BytesLike if (op.paymaster == null) { - paymasterAndData = "0x"; + paymasterAndData = '0x' } else { - if ( - op.paymasterVerificationGasLimit == null || - op.paymasterPostOpGasLimit == null - ) { - throw new Error("paymaster with no gas limits"); + 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 - ); + 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 ?? ""]), + initCode: op.factory == null ? '0x' : hexConcat([op.factory, op.factoryData ?? '']), callData: op.callData, - accountGasLimits: packAccountGasLimits( - op.verificationGasLimit, - op.callGasLimit - ), + accountGasLimits: packUint(op.verificationGasLimit, op.callGasLimit), preVerificationGas: BigNumber.from(op.preVerificationGas).toHexString(), - maxFeePerGas: BigNumber.from(op.maxFeePerGas).toHexString(), - maxPriorityFeePerGas: BigNumber.from(op.maxPriorityFeePerGas).toHexString(), + gasFees: packUint(op.maxPriorityFeePerGas, op.maxFeePerGas), paymasterAndData, - signature: op.signature, - }; + signature: op.signature + } } -export function unpackUserOp(packed: PackedUserOperationStruct): UserOperation { - const { callGasLimit, verificationGasLimit } = unpackAccountGasLimits( - packed.accountGasLimits - ); +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, @@ -112,24 +148,79 @@ export function unpackUserOp(packed: PackedUserOperationStruct): UserOperation { preVerificationGas: packed.preVerificationGas, verificationGasLimit, callGasLimit, - maxFeePerGas: packed.maxFeePerGas, - maxPriorityFeePerGas: packed.maxFeePerGas, - signature: packed.signature, - }; + 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 factory = hexDataSlice(packed.initCode, 0, 20) + const factoryData = hexDataSlice(packed.initCode, 20) + ret = { + ...ret, + factory, + factoryData + } } - const pmData = unpackPaymasterAndData(packed.paymasterAndData); + const pmData = unpackPaymasterAndData(packed.paymasterAndData) if (pmData != null) { ret = { ...ret, paymaster: pmData.paymaster, paymasterVerificationGasLimit: pmData.paymasterVerificationGas, paymasterPostOpGasLimit: pmData.postOpGasLimit, - paymasterData: pmData.paymasterData, - }; + 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 } - return ret; + 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.6.ts b/packages/executor/src/services/EntryPointService/versions/0.0.6.ts deleted file mode 100644 index e7731122..00000000 --- a/packages/executor/src/services/EntryPointService/versions/0.0.6.ts +++ /dev/null @@ -1,419 +0,0 @@ -import { - UserOperationStruct, - IEntryPoint, - UserOperationEventEvent, -} from "types/lib/contracts/EPv6/EntryPoint"; -import { - IEntryPoint__factory, - StakeManager__factory, -} from "types/lib/contracts/EPv6"; -import { BigNumber, BytesLike, providers } from "ethers"; -import { AddressZero, BytesZero } from "params/lib"; -import RpcError from "types/lib/api/errors/rpc-error"; -import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; -import { IStakeManager } from "types/lib/contracts/EPv7/core/StakeManager"; -import { - arrayify, - defaultAbiCoder, - hexlify, - keccak256, -} from "ethers/lib/utils"; -import { Logger } from "types/lib"; -import { - UserOperationByHashResponse, - UserOperationReceipt, -} from "types/lib/api/interfaces"; -import { - Log, - NetworkConfig, - StakeInfo, - UserOpValidationResult, -} from "../../../interfaces"; -import { deepHexlify, getAddr } from "../../../utils"; -import { DefaultGasOverheads } from "../constants"; -import { IEntryPointService } from "./base"; - -export class EntryPointV6Service implements IEntryPointService { - contract: IEntryPoint; - - constructor( - public address: string, - private networkConfig: NetworkConfig, - private provider: providers.JsonRpcProvider, - private logger: Logger - ) { - this.contract = IEntryPoint__factory.connect(address, provider); - } - - /*******************/ - /** View functions */ - - async getUserOperationHash(userOp: UserOperationStruct): Promise { - return await this.contract.getUserOpHash(userOp); - } - - async simulateHandleOp(userOp: UserOperationStruct): Promise { - return await this.contract - .callStatic - .simulateHandleOp(userOp, AddressZero, BytesZero) - .catch((err: any) => this.nonGethErrorHandler(err)); - } - - async simulateValidation(userOp: UserOperationStruct): Promise { - const errorResult = await this.contract - .callStatic - .simulateValidation(userOp, { - gasLimit: this.networkConfig.validationGasLimit, - }) - .catch((err: any) => this.nonGethErrorHandler(err)); - return this.parseErrorResult(userOp, errorResult); - } - - getDepositInfo( - address: string - ): Promise { - return StakeManager__factory.connect( - this.address, - this.provider - ).getDepositInfo(address); - } - - /******************************************/ - /** Write functions (return encoded data) */ - - encodeHandleOps(userOps: UserOperationStruct[], beneficiary: string): string { - return this.contract.interface.encodeFunctionData("handleOps", [ - userOps, - beneficiary, - ]); - } - - encodeSimulateHandleOp( - userOp: UserOperationStruct, - target: string, - targetCallData: string - ): string { - return this.contract.interface.encodeFunctionData("simulateHandleOp", [ - userOp, - target, - targetCallData, - ]); - } - - encodeSimulateValidation(userOp: UserOperationStruct): string { - return this.contract.interface.encodeFunctionData("simulateValidation", [ - userOp, - ]); - } - - /******************/ - /** 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: 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"); - } - - return deepHexlify({ - userOperation: op, - entryPoint: this.address, - transactionHash: tx.hash, - blockHash: tx.blockHash ?? "", - blockNumber: tx.blockNumber ?? 0, - }); - } - - /**************/ - /** Utilities */ - - static 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, - ] - ); - } - } - - calcPreverificationGas( - userOp: Partial, - forSignature = true - ): number { - const ov = { ...DefaultGasOverheads }; - const op = { - preVerificationGas: 21000, - signature: hexlify(Buffer.alloc(ov.sigSize, 1)), - ...userOp, - } as any; - let encoded = EntryPointV6Service.packUserOp(op, 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: UserOperationStruct, - data: string - ): UserOpValidationResult { - const { name: errorName, args: errorArgs } = - this.contract.interface.parseError(data); - const errFullName = `${errorName}(${errorArgs.toString()})`; - const errResult = this.parseErrorResult(userOp, { - errorName, - errorArgs, - }); - if (!errorName.includes("Result")) { - throw new Error(errFullName); - } - return errResult; - } - - 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 */ - } - return errorResult; - } - - private 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 - ), - }; - } - - 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/0.0.7.ts b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts index 8d61884b..8ec9edba 100644 --- a/packages/executor/src/services/EntryPointService/versions/0.0.7.ts +++ b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts @@ -2,10 +2,9 @@ import { EntryPoint, UserOperationEventEvent, } from "types/lib/contracts/EPv7/core/EntryPoint"; -import { EntryPointSimulations } from "types/lib/contracts/EPv7/core/EntryPointSimulations"; +import { _deployedBytecode } from "types/lib/contracts/EPv7/factories/core/EntryPointSimulations__factory"; import { - EntryPoint__factory, - EntryPointSimulations__factory, + EntryPoint__factory } from "types/lib/contracts/EPv7/factories/core"; import { BigNumber, providers } from "ethers"; import RpcError from "types/lib/api/errors/rpc-error"; @@ -13,11 +12,9 @@ import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; import { UserOperation } from "types/lib/contracts/UserOperation"; import { AddressZero, BytesZero } from "params/lib"; import { StakeManager__factory } from "types/lib/contracts/EPv7/factories/core"; -import { IStakeManager } from "types/lib/contracts/EPv7/interfaces"; +import { IEntryPointSimulations, IStakeManager } from "types/lib/contracts/EPv7/interfaces"; import { hexlify, - defaultAbiCoder, - keccak256, arrayify, } from "ethers/lib/utils"; import { Logger } from "types/lib"; @@ -25,7 +22,7 @@ import { UserOperationReceipt, UserOperationByHashResponse, } from "types/lib/api/interfaces"; -import { packUserOp } from "../utils"; +import { encodeUserOp, packUserOp } from "../utils"; import { Log, NetworkConfig, @@ -35,23 +32,21 @@ import { import { deepHexlify } from "../../../utils"; import { DefaultGasOverheads } from "../constants"; import { IEntryPointService } from "./base"; +import { IEntryPointSimulations__factory } from "types/lib/contracts/EPv7/factories/interfaces"; +import { StateOverrides } from "../interfaces"; + +const entryPointSimulations = IEntryPointSimulations__factory.createInterface() export class EntryPointV7Service implements IEntryPointService { contract: EntryPoint; - simulationContract: EntryPointSimulations; constructor( public address: string, - public simulationAddress: string, private networkConfig: NetworkConfig, private provider: providers.JsonRpcProvider, private logger: Logger ) { this.contract = EntryPoint__factory.connect(address, provider); - this.simulationContract = EntryPointSimulations__factory.connect( - simulationAddress, - provider - ); } /*******************/ @@ -62,17 +57,25 @@ export class EntryPointV7Service implements IEntryPointService { } async simulateHandleOp(userOp: UserOperation): Promise { - return await this.simulationContract - .simulateHandleOp(packUserOp(userOp), AddressZero, BytesZero) + const [data, stateOverrides] = this.encodeSimulateHandleOp(userOp, AddressZero, BytesZero); + const tx: providers.TransactionRequest = { + to: this.address, + data + } + return await this.provider + .send('eth_call', [tx, "latest", stateOverrides]) .catch((err) => this.nonGethErrorHandler(err)); } async simulateValidation(userOp: UserOperation): Promise { - const errorResult = await this.simulationContract - .simulateValidation(packUserOp(userOp), { - gasLimit: this.networkConfig.validationGasLimit, - }) - .catch((err: any) => this.nonGethErrorHandler(err)); + const [data, stateOverrides] = this.encodeSimulateValidation(userOp); + const tx: providers.TransactionRequest = { + to: this.address, + data + } + const errorResult = await this.provider + .send('eth_call', [tx, "latest", stateOverrides]) + .catch((err) => this.nonGethErrorHandler(err)); return this.parseErrorResult(userOp, errorResult); } @@ -99,18 +102,32 @@ export class EntryPointV7Service implements IEntryPointService { userOp: UserOperation, target: string, targetCallData: string - ): string { - return this.simulationContract.interface.encodeFunctionData( - "simulateHandleOp", - [packUserOp(userOp), target, targetCallData] - ); + ): [string, StateOverrides] { + return [ + entryPointSimulations.encodeFunctionData( + "simulateHandleOp", + [packUserOp(userOp), target, targetCallData] + ), + { + [this.address]: { + code: _deployedBytecode + } + } + ] } - encodeSimulateValidation(userOp: UserOperation): string { - return this.simulationContract.interface.encodeFunctionData( - "simulateValidation", - [packUserOp(userOp)] - ); + encodeSimulateValidation(userOp: UserOperation): [string, StateOverrides] { + return [ + entryPointSimulations.encodeFunctionData( + "simulateValidation", + [packUserOp(userOp)] + ), + { + [this.address]: { + code: _deployedBytecode + } + } + ] } /******************/ @@ -213,61 +230,7 @@ export class EntryPointV7Service implements IEntryPointService { signature: hexlify(Buffer.alloc(ov.sigSize, 1)), ...userOp, } as any); - let encoded: string; - if (forSignature) { - encoded = defaultAbiCoder.encode( - [ - "address", - "uint256", - "bytes32", - "bytes32", - "bytes32", - "uint256", - "uint256", - "uint256", - "bytes32", - ], - [ - packedUserOp.sender, - packedUserOp.nonce, - keccak256(packedUserOp.initCode), - keccak256(packedUserOp.callData), - packedUserOp.accountGasLimits, - packedUserOp.preVerificationGas, - packedUserOp.maxFeePerGas, - packedUserOp.maxPriorityFeePerGas, - keccak256(packedUserOp.paymasterAndData), - ] - ); - } else { - // for the purpose of calculating gas cost encode also signature (and no keccak of bytes) - encoded = defaultAbiCoder.encode( - [ - "address", - "uint256", - "bytes", - "bytes", - "bytes32", - "uint256", - "bytes32", - "uint256", - "uint256", - "bytes", - ], - [ - packedUserOp.sender, - packedUserOp.nonce, - packedUserOp.initCode, - packedUserOp.callData, - packedUserOp.accountGasLimits, - packedUserOp.preVerificationGas, - packedUserOp.maxFeePerGas, - packedUserOp.maxPriorityFeePerGas, - packedUserOp.paymasterAndData, - packedUserOp.signature, - ] - ); - } + let encoded: string = encodeUserOp(packedUserOp, forSignature); const packed = arrayify(encoded); const lengthInWord = (packed.length + 31) / 32; const callDataCost = packed @@ -286,6 +249,9 @@ export class EntryPointV7Service implements IEntryPointService { userOp: UserOperation, data: string ): UserOpValidationResult { + const [decodedSimulations]: + [IEntryPointSimulations.ValidationResultStructOutput] = entryPointSimulations + .decodeFunctionResult("simulateValidation", data); const { name: errorName, args: errorArgs } = this.contract.interface.parseError(data); const errFullName = `${errorName}(${errorArgs.toString()})`; diff --git a/packages/executor/src/services/EntryPointService/versions/base.ts b/packages/executor/src/services/EntryPointService/versions/base.ts index b4ab4c3c..2c0e5153 100644 --- a/packages/executor/src/services/EntryPointService/versions/base.ts +++ b/packages/executor/src/services/EntryPointService/versions/base.ts @@ -1,6 +1,6 @@ import { IEntryPoint as IEntryPointV6 } from "types/lib/contracts/EPv6"; import { EntryPoint as IEntryPointV7 } from "types/lib/contracts/EPv7/core/EntryPoint"; -import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +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 { @@ -14,17 +14,17 @@ export interface IEntryPointService { readonly address: string; calcPreverificationGas( - userOp: Partial, + userOp: Partial, forSignature: boolean ): number; - getUserOperationHash(userOp: UserOperation6And7): Promise; + getUserOperationHash(userOp: UserOperation): Promise; getDepositInfo( address: string ): Promise; - simulateHandleOp(userOp: UserOperation6And7): Promise; - simulateValidation(userOp: UserOperation6And7): Promise; + simulateHandleOp(userOp: UserOperation): Promise; + simulateValidation(userOp: UserOperation): Promise; getUserOperationEvent( userOpHash: string @@ -34,16 +34,16 @@ export interface IEntryPointService { hash: string ): Promise; - encodeHandleOps(userOps: UserOperation6And7[], beneficiary: string): string; + encodeHandleOps(userOps: UserOperation[], beneficiary: string): any; encodeSimulateHandleOp( - userOp: UserOperation6And7, + userOp: UserOperation, target: string, targetCallData: string - ): string; - encodeSimulateValidation(userOp: UserOperation6And7): string; + ): any; + encodeSimulateValidation(userOp: UserOperation): any; parseValidationResult( - userOp: UserOperation6And7, + 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 index a5bd428b..757a9986 100644 --- a/packages/executor/src/services/EntryPointService/versions/index.ts +++ b/packages/executor/src/services/EntryPointService/versions/index.ts @@ -1,3 +1,2 @@ -export * from "./0.0.6"; 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 30c95b73..4f2453a2 100644 --- a/packages/executor/src/services/MempoolService.ts +++ b/packages/executor/src/services/MempoolService.ts @@ -8,7 +8,7 @@ import { IWhitelistedEntities, ReputationStatus, } from "types/lib/executor"; -import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { getAddr, now } from "../utils"; import { MempoolEntry } from "../entities/MempoolEntry"; import { IMempoolEntry, MempoolEntrySerialized } from "../entities/interfaces"; @@ -43,7 +43,7 @@ export class MempoolService { } async addUserOp( - userOp: UserOperation6And7, + userOp: UserOperation, entryPoint: string, prefund: BigNumberish, senderInfo: StakeInfo, @@ -198,7 +198,7 @@ export class MempoolService { } async validateUserOpReplaceability( - userOp: UserOperation6And7, + userOp: UserOperation, entryPoint: string ): Promise { const entry = new MempoolEntry({ @@ -400,7 +400,7 @@ export class MempoolService { private async updateSeenStatus( entryPoint: string, - userOp: UserOperation6And7, + userOp: UserOperation, aggregator?: string ): Promise { const paymaster = this.entryPointService.getPaymaster(entryPoint, userOp); 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 2e8c1402..1f54704a 100644 --- a/packages/executor/src/services/UserOpValidation/service.ts +++ b/packages/executor/src/services/UserOpValidation/service.ts @@ -2,7 +2,7 @@ import { BigNumber, providers } from "ethers"; import { Logger } from "types/lib"; import RpcError from "types/lib/api/errors/rpc-error"; import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; -import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { Config } from "../../config"; import { ExecutionResult, @@ -57,14 +57,14 @@ export class UserOpValidationService { } async validateForEstimation( - userOp: UserOperation6And7, + userOp: UserOperation, entryPoint: string ): Promise { return await this.estimationService.estimateUserOp(userOp, entryPoint); } async validateForEstimationWithSignature( - userOp: UserOperation6And7, + userOp: UserOperation, entryPoint: string ): Promise { return await this.unsafeValidationService.validateUnsafely( @@ -74,7 +74,7 @@ export class UserOpValidationService { } async simulateValidation( - userOp: UserOperation6And7, + userOp: UserOperation, entryPoint: string, codehash?: string ): Promise { @@ -91,7 +91,7 @@ export class UserOpValidationService { ); } - async validateGasFee(userOp: UserOperation6And7): Promise { + async validateGasFee(userOp: UserOperation): Promise { const block = await this.provider.getBlock("latest"); const { baseFeePerGas } = block; let { maxFeePerGas, maxPriorityFeePerGas } = userOp; diff --git a/packages/executor/src/services/UserOpValidation/utils.ts b/packages/executor/src/services/UserOpValidation/utils.ts index 8f75e3b5..a2cd7b62 100644 --- a/packages/executor/src/services/UserOpValidation/utils.ts +++ b/packages/executor/src/services/UserOpValidation/utils.ts @@ -1,15 +1,9 @@ import { BigNumber, BytesLike } from "ethers"; -import { - IEntryPoint__factory, - IAccount__factory, - IAggregatedAccount__factory, - IAggregator__factory, - IPaymaster__factory, - SenderCreator__factory, -} from "types/lib/contracts/EPv6/factories"; import { Interface, hexZeroPad, hexlify, keccak256 } from "ethers/lib/utils"; import { BundlerCollectorReturn, CallEntry } from "types/lib/executor"; 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, @@ -53,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 diff --git a/packages/executor/src/services/UserOpValidation/validators/estimation.ts b/packages/executor/src/services/UserOpValidation/validators/estimation.ts index f07dd5e8..6cc86434 100644 --- a/packages/executor/src/services/UserOpValidation/validators/estimation.ts +++ b/packages/executor/src/services/UserOpValidation/validators/estimation.ts @@ -2,7 +2,7 @@ import RpcError from "types/lib/api/errors/rpc-error"; import * as RpcErrorCodes from "types/lib/api/errors/rpc-error-codes"; import { providers } from "ethers"; import { Logger } from "types/lib"; -import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { ExecutionResult } from "../../../interfaces"; import { EntryPointService } from "../../EntryPointService"; @@ -14,7 +14,7 @@ export class EstimationService { ) {} async estimateUserOp( - userOp: UserOperation6And7, + userOp: UserOperation, entryPoint: string ): Promise { const errorResult = await this.entryPointService.simulateHandleOp( diff --git a/packages/executor/src/services/UserOpValidation/validators/safe.ts b/packages/executor/src/services/UserOpValidation/validators/safe.ts index 5fdfc576..101ddab2 100644 --- a/packages/executor/src/services/UserOpValidation/validators/safe.ts +++ b/packages/executor/src/services/UserOpValidation/validators/safe.ts @@ -4,7 +4,7 @@ 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 { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { NetworkConfig, StorageMap, @@ -19,7 +19,8 @@ import { } from "../utils"; import { ReputationService } from "../../ReputationService"; import { EntryPointService } from "../../EntryPointService"; -import { EntryPointVersion } from "../../EntryPointService/interfaces"; +import { AddressZero } from "params/lib"; +import { decodeRevertReason } from "../../EntryPointService/utils/decodeRevertReason"; /** * Some opcodes like: @@ -65,7 +66,7 @@ export class SafeValidationService { } async validateSafely( - userOp: UserOperation6And7, + userOp: UserOperation, entryPoint: string, codehash?: string ): Promise { @@ -74,14 +75,16 @@ export class SafeValidationService { .add(userOp.verificationGasLimit) .add(userOp.callGasLimit); + const [data, stateOverrides] = this.entryPointService.encodeSimulateValidation(entryPoint, userOp); const tx: providers.TransactionRequest = { to: entryPoint, - data: this.entryPointService.encodeSimulateValidation(entryPoint, 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, entryPoint, @@ -117,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) ); @@ -156,7 +159,7 @@ export class SafeValidationService { private async validateOpcodesAndStake( traceCall: BundlerCollectorReturn, entryPoint: string, - userOp: UserOperation6And7 + userOp: UserOperation ): Promise { if (traceCall == null || traceCall.callsFromEntryPoint == undefined) { throw new Error( @@ -203,11 +206,8 @@ 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 = this.entryPointService.parseValidationResult( @@ -323,12 +323,7 @@ export class SafeValidationService { if (isSlotAssociatedWith(slot, sender, entitySlots)) { const epVersion = this.entryPointService.getEntryPointVersion(entryPoint); - const hasInitCode = - (epVersion === EntryPointVersion.SIX && - userOp.initCode!.length > 2) || - (epVersion === EntryPointVersion.SEVEN && - userOp.factory && - userOp.factory.length > 2); + const hasInitCode = userOp.factory && userOp.factory.length > 2 if ( hasInitCode == true && entityAddr === sender && diff --git a/packages/executor/src/services/UserOpValidation/validators/unsafe.ts b/packages/executor/src/services/UserOpValidation/validators/unsafe.ts index a1576eef..f4aa7534 100644 --- a/packages/executor/src/services/UserOpValidation/validators/unsafe.ts +++ b/packages/executor/src/services/UserOpValidation/validators/unsafe.ts @@ -1,6 +1,6 @@ import { providers } from "ethers"; import { Logger } from "types/lib"; -import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { NetworkConfig, UserOpValidationResult } from "../../../interfaces"; import { EntryPointService } from "../../EntryPointService"; @@ -13,7 +13,7 @@ export class UnsafeValidationService { ) {} async validateUnsafely( - userOp: UserOperation6And7, + userOp: UserOperation, entryPoint: string ): Promise { return await this.entryPointService.simulateValidation(entryPoint, userOp); diff --git a/packages/params/src/gas-estimation/arbitrum.ts b/packages/params/src/gas-estimation/arbitrum.ts index 8cf0a240..ab346569 100644 --- a/packages/params/src/gas-estimation/arbitrum.ts +++ b/packages/params/src/gas-estimation/arbitrum.ts @@ -1,7 +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 { BigNumber, BigNumberish } from "ethers"; -import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { IPVGEstimator, IPVGEstimatorWrapper } from "../types/IPVGEstimator"; export const estimateArbitrumPVG: IPVGEstimatorWrapper = ( @@ -17,7 +17,7 @@ export const estimateArbitrumPVG: IPVGEstimatorWrapper = ( initial: BigNumberish, options?: { contractCreation?: boolean; - userOp?: UserOperation6And7; + userOp?: UserOperation; } ): Promise => { try { diff --git a/packages/params/src/gas-estimation/mantle.ts b/packages/params/src/gas-estimation/mantle.ts index 7533ee43..d9a71d54 100644 --- a/packages/params/src/gas-estimation/mantle.ts +++ b/packages/params/src/gas-estimation/mantle.ts @@ -1,6 +1,6 @@ import { BigNumber, BigNumberish } from "ethers"; import mantleSDK from "@mantleio/sdk"; -import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { IPVGEstimator, IPVGEstimatorWrapper } from "../types/IPVGEstimator"; export const estimateMantlePVG: IPVGEstimatorWrapper = ( @@ -12,7 +12,7 @@ export const estimateMantlePVG: IPVGEstimatorWrapper = ( initial: BigNumberish, options?: { contractCreation?: boolean; - userOp?: UserOperation6And7; + userOp?: UserOperation; } ): Promise => { try { diff --git a/packages/params/src/gas-estimation/optimism.ts b/packages/params/src/gas-estimation/optimism.ts index d7c4587f..035a302a 100644 --- a/packages/params/src/gas-estimation/optimism.ts +++ b/packages/params/src/gas-estimation/optimism.ts @@ -1,6 +1,6 @@ import { BigNumber, BigNumberish } from "ethers"; import { estimateL1GasCost } from "@eth-optimism/sdk"; -import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperation } from "types/lib/contracts/UserOperation"; import { IPVGEstimator, IPVGEstimatorWrapper } from "../types/IPVGEstimator"; export const estimateOptimismPVG: IPVGEstimatorWrapper = ( @@ -12,7 +12,7 @@ export const estimateOptimismPVG: IPVGEstimatorWrapper = ( initial: BigNumberish, options?: { contractCreation?: boolean; - userOp?: UserOperation6And7; + userOp?: UserOperation; } ): Promise => { try { diff --git a/packages/params/src/gas-price-oracles/oracles/interfaces.ts b/packages/params/src/gas-price-oracles/oracles/interfaces.ts index 14aff575..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 { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +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: UserOperation6And7; + userOp: UserOperation; }; diff --git a/packages/params/src/types/IPVGEstimator.ts b/packages/params/src/types/IPVGEstimator.ts index f6e87d88..0c69b40c 100644 --- a/packages/params/src/types/IPVGEstimator.ts +++ b/packages/params/src/types/IPVGEstimator.ts @@ -1,5 +1,5 @@ import { BigNumber, BigNumberish, providers } from "ethers"; -import { UserOperation6And7 } from "types/lib/contracts/UserOperation"; +import { UserOperation } from "types/lib/contracts/UserOperation"; export type IPVGEstimatorWrapper = ( provider: providers.StaticJsonRpcProvider @@ -11,6 +11,6 @@ export type IPVGEstimator = ( initial: BigNumberish, // initial amount of gas. It will be added to the estimated gas options?: { contractCreation?: boolean; - userOp?: UserOperation6And7; + userOp?: UserOperation; } ) => Promise; diff --git a/packages/types/src/api/interfaces.ts b/packages/types/src/api/interfaces.ts index 6e61b86d..122ea89e 100644 --- a/packages/types/src/api/interfaces.ts +++ b/packages/types/src/api/interfaces.ts @@ -1,6 +1,6 @@ import { BigNumberish, providers } from "ethers"; import { IWhitelistedEntities } from "../executor"; -import { UserOperation6And7 } from "../contracts/UserOperation"; +import { UserOperation } from "../contracts/UserOperation"; export type EstimatedUserOperationGas = | { @@ -14,7 +14,7 @@ export type EstimatedUserOperationGas = | GetGasPriceResponse; export type UserOperationByHashResponse = { - userOperation: UserOperation6And7; + userOperation: UserOperation; entryPoint: string; blockNumber: number; blockHash: string; @@ -51,9 +51,7 @@ export type GetConfigResponse = { redirectRpc: boolean; testingMode: boolean; }; - entryPointsV6: string[]; - entryPointsV7: string[]; - entryPointV7Simulation: string; + entryPoints: string[]; beneficiary: string; relayers: string[]; minInclusionDenominator: number; diff --git a/packages/types/src/contracts/EPv7/core/BaseAccount.ts b/packages/types/src/contracts/EPv7/core/BaseAccount.ts index 603933dc..efd6c45a 100644 --- a/packages/types/src/contracts/EPv7/core/BaseAccount.ts +++ b/packages/types/src/contracts/EPv7/core/BaseAccount.ts @@ -21,7 +21,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export type PackedUserOperationStruct = { sender: PromiseOrValue; @@ -30,8 +30,7 @@ export type PackedUserOperationStruct = { callData: PromiseOrValue; accountGasLimits: PromiseOrValue; preVerificationGas: PromiseOrValue; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; + gasFees: PromiseOrValue; paymasterAndData: PromiseOrValue; signature: PromiseOrValue; }; @@ -43,8 +42,7 @@ export type PackedUserOperationStructOutput = [ string, string, BigNumber, - BigNumber, - BigNumber, + string, string, string ] & { @@ -54,8 +52,7 @@ export type PackedUserOperationStructOutput = [ callData: string; accountGasLimits: string; preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; + gasFees: string; paymasterAndData: string; signature: string; }; @@ -64,7 +61,7 @@ export interface BaseAccountInterface extends utils.Interface { functions: { "entryPoint()": FunctionFragment; "getNonce()": FunctionFragment; - "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": FunctionFragment; + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; }; getFunction( diff --git a/packages/types/src/contracts/EPv7/core/BasePaymaster.ts b/packages/types/src/contracts/EPv7/core/BasePaymaster.ts index 138f9f98..80fd290b 100644 --- a/packages/types/src/contracts/EPv7/core/BasePaymaster.ts +++ b/packages/types/src/contracts/EPv7/core/BasePaymaster.ts @@ -26,7 +26,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export type PackedUserOperationStruct = { sender: PromiseOrValue; @@ -35,8 +35,7 @@ export type PackedUserOperationStruct = { callData: PromiseOrValue; accountGasLimits: PromiseOrValue; preVerificationGas: PromiseOrValue; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; + gasFees: PromiseOrValue; paymasterAndData: PromiseOrValue; signature: PromiseOrValue; }; @@ -48,8 +47,7 @@ export type PackedUserOperationStructOutput = [ string, string, BigNumber, - BigNumber, - BigNumber, + string, string, string ] & { @@ -59,8 +57,7 @@ export type PackedUserOperationStructOutput = [ callData: string; accountGasLimits: string; preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; + gasFees: string; paymasterAndData: string; signature: string; }; @@ -76,7 +73,7 @@ export interface BasePaymasterInterface extends utils.Interface { "renounceOwnership()": FunctionFragment; "transferOwnership(address)": FunctionFragment; "unlockStake()": FunctionFragment; - "validatePaymasterUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": FunctionFragment; + "validatePaymasterUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; "withdrawStake(address)": FunctionFragment; "withdrawTo(address,uint256)": FunctionFragment; }; diff --git a/packages/types/src/contracts/EPv7/core/EntryPoint.ts b/packages/types/src/contracts/EPv7/core/EntryPoint.ts index 66bd3cce..650fbe6e 100644 --- a/packages/types/src/contracts/EPv7/core/EntryPoint.ts +++ b/packages/types/src/contracts/EPv7/core/EntryPoint.ts @@ -26,7 +26,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export type PackedUserOperationStruct = { sender: PromiseOrValue; @@ -35,8 +35,7 @@ export type PackedUserOperationStruct = { callData: PromiseOrValue; accountGasLimits: PromiseOrValue; preVerificationGas: PromiseOrValue; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; + gasFees: PromiseOrValue; paymasterAndData: PromiseOrValue; signature: PromiseOrValue; }; @@ -48,8 +47,7 @@ export type PackedUserOperationStructOutput = [ string, string, BigNumber, - BigNumber, - BigNumber, + string, string, string ] & { @@ -59,8 +57,7 @@ export type PackedUserOperationStructOutput = [ callData: string; accountGasLimits: string; preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; + gasFees: string; paymasterAndData: string; signature: string; }; @@ -178,9 +175,9 @@ export interface EntryPointInterface extends utils.Interface { "getDepositInfo(address)": FunctionFragment; "getNonce(address,uint192)": FunctionFragment; "getSenderAddress(bytes)": FunctionFragment; - "getUserOpHash((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": FunctionFragment; - "handleAggregatedOps(((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)": FunctionFragment; - "handleOps((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],address)": 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; @@ -351,6 +348,7 @@ export interface EntryPointInterface extends utils.Interface { "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; }; @@ -364,6 +362,7 @@ export interface EntryPointInterface extends utils.Interface { getEvent(nameOrSignatureOrTopic: "StakeUnlocked"): EventFragment; getEvent(nameOrSignatureOrTopic: "StakeWithdrawn"): EventFragment; getEvent(nameOrSignatureOrTopic: "UserOperationEvent"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationPrefundTooLow"): EventFragment; getEvent(nameOrSignatureOrTopic: "UserOperationRevertReason"): EventFragment; getEvent(nameOrSignatureOrTopic: "Withdrawn"): EventFragment; } @@ -474,6 +473,19 @@ export type UserOperationEventEvent = TypedEvent< 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; @@ -943,6 +955,17 @@ export interface EntryPoint extends BaseContract { 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, diff --git a/packages/types/src/contracts/EPv7/core/EntryPointSimulations.ts b/packages/types/src/contracts/EPv7/core/EntryPointSimulations.ts index 2e2ad3cf..c09186ae 100644 --- a/packages/types/src/contracts/EPv7/core/EntryPointSimulations.ts +++ b/packages/types/src/contracts/EPv7/core/EntryPointSimulations.ts @@ -26,7 +26,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export type PackedUserOperationStruct = { sender: PromiseOrValue; @@ -35,8 +35,7 @@ export type PackedUserOperationStruct = { callData: PromiseOrValue; accountGasLimits: PromiseOrValue; preVerificationGas: PromiseOrValue; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; + gasFees: PromiseOrValue; paymasterAndData: PromiseOrValue; signature: PromiseOrValue; }; @@ -48,8 +47,7 @@ export type PackedUserOperationStructOutput = [ string, string, BigNumber, - BigNumber, - BigNumber, + string, string, string ] & { @@ -59,8 +57,7 @@ export type PackedUserOperationStructOutput = [ callData: string; accountGasLimits: string; preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; + gasFees: string; paymasterAndData: string; signature: string; }; @@ -270,14 +267,14 @@ export interface EntryPointSimulationsInterface extends utils.Interface { "getDepositInfo(address)": FunctionFragment; "getNonce(address,uint192)": FunctionFragment; "getSenderAddress(bytes)": FunctionFragment; - "getUserOpHash((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": FunctionFragment; - "handleAggregatedOps(((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)": FunctionFragment; - "handleOps((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],address)": 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,uint256,uint256,bytes,bytes),address,bytes)": FunctionFragment; - "simulateValidation((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": 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; @@ -480,6 +477,7 @@ export interface EntryPointSimulationsInterface extends utils.Interface { "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; }; @@ -493,6 +491,7 @@ export interface EntryPointSimulationsInterface extends utils.Interface { getEvent(nameOrSignatureOrTopic: "StakeUnlocked"): EventFragment; getEvent(nameOrSignatureOrTopic: "StakeWithdrawn"): EventFragment; getEvent(nameOrSignatureOrTopic: "UserOperationEvent"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationPrefundTooLow"): EventFragment; getEvent(nameOrSignatureOrTopic: "UserOperationRevertReason"): EventFragment; getEvent(nameOrSignatureOrTopic: "Withdrawn"): EventFragment; } @@ -603,6 +602,19 @@ export type UserOperationEventEvent = TypedEvent< 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; @@ -1129,6 +1141,17 @@ export interface EntryPointSimulations extends BaseContract { 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, diff --git a/packages/types/src/contracts/EPv7/core/NonceManager.ts b/packages/types/src/contracts/EPv7/core/NonceManager.ts index 7e408b65..ba297877 100644 --- a/packages/types/src/contracts/EPv7/core/NonceManager.ts +++ b/packages/types/src/contracts/EPv7/core/NonceManager.ts @@ -21,7 +21,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export interface NonceManagerInterface extends utils.Interface { functions: { diff --git a/packages/types/src/contracts/EPv7/core/SenderCreator.ts b/packages/types/src/contracts/EPv7/core/SenderCreator.ts index 77ec8c1e..8ed463e0 100644 --- a/packages/types/src/contracts/EPv7/core/SenderCreator.ts +++ b/packages/types/src/contracts/EPv7/core/SenderCreator.ts @@ -20,7 +20,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export interface SenderCreatorInterface extends utils.Interface { functions: { diff --git a/packages/types/src/contracts/EPv7/core/StakeManager.ts b/packages/types/src/contracts/EPv7/core/StakeManager.ts index c98c4540..94185694 100644 --- a/packages/types/src/contracts/EPv7/core/StakeManager.ts +++ b/packages/types/src/contracts/EPv7/core/StakeManager.ts @@ -26,7 +26,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export declare namespace IStakeManager { export type DepositInfoStruct = { diff --git a/packages/types/src/contracts/EPv7/core/UserOperationLib.ts b/packages/types/src/contracts/EPv7/core/UserOperationLib.ts index 505033e0..aa5ca53f 100644 --- a/packages/types/src/contracts/EPv7/core/UserOperationLib.ts +++ b/packages/types/src/contracts/EPv7/core/UserOperationLib.ts @@ -17,7 +17,7 @@ import type { TypedEvent, TypedListener, OnEvent, -} from "../common"; +} from "../../common"; export interface UserOperationLibInterface extends utils.Interface { functions: { diff --git a/packages/types/src/contracts/EPv7/factories/core/BaseAccount__factory.ts b/packages/types/src/contracts/EPv7/factories/core/BaseAccount__factory.ts index 05aec576..f0ee419b 100644 --- a/packages/types/src/contracts/EPv7/factories/core/BaseAccount__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/core/BaseAccount__factory.ts @@ -71,14 +71,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", diff --git a/packages/types/src/contracts/EPv7/factories/core/BasePaymaster__factory.ts b/packages/types/src/contracts/EPv7/factories/core/BasePaymaster__factory.ts index 03b57116..e03546c6 100644 --- a/packages/types/src/contracts/EPv7/factories/core/BasePaymaster__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/core/BasePaymaster__factory.ts @@ -200,14 +200,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", diff --git a/packages/types/src/contracts/EPv7/factories/core/EntryPointSimulations__factory.ts b/packages/types/src/contracts/EPv7/factories/core/EntryPointSimulations__factory.ts index 7aee60a6..467274e8 100644 --- a/packages/types/src/contracts/EPv7/factories/core/EntryPointSimulations__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/core/EntryPointSimulations__factory.ts @@ -3,7 +3,7 @@ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../common"; +import type { PromiseOrValue } from "../../../common"; import type { EntryPointSimulations, EntryPointSimulationsInterface, @@ -324,6 +324,31 @@ const _abi = [ 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: [ @@ -623,14 +648,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -696,14 +716,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -781,14 +796,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -996,14 +1006,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -1109,14 +1114,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -1323,7 +1323,9 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040526040516200001290620000f2565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b0390811660805260408051808201825260008082528251808401909352808352602080840191825282018390529051600380546001600160a01b031916919094161790925551600455516005553480156200009157600080fd5b50600160025560644310620000ec5760405162461bcd60e51b815260206004820152601660248201527f73686f756c64206e6f74206265206465706c6f79656400000000000000000000604482015260640160405180910390fd5b62000100565b61023380620052d883390190565b6080516151bf62000119600039600050506151bf6000f3fe60806040526004361061016d5760003560e01c806370a08231116100cb578063b760faf91161007f578063d5dfedfc11610059578063d5dfedfc146105ac578063ea8ad612146105d9578063fc7e286d146105f957600080fd5b8063b760faf914610564578063bb9fe6bf14610577578063c23a5cea1461058c57600080fd5b8063850aaf62116100b0578063850aaf6214610504578063957122ab146105245780639b249f691461054457600080fd5b806370a082311461049457806373e3259f146104d757600080fd5b80631b2e01b81161012257806335567e1a1161010757806335567e1a146102905780635287ce12146103255780636b21db511461047457600080fd5b80631b2e01b814610238578063205c28781461027057600080fd5b806302101e491161015357806302101e49146101e55780630396cb60146102055780630bd28e3b1461021857600080fd5b806242dc531461018257806301ffc9a7146101b557600080fd5b3661017d5761017b336106cb565b005b600080fd5b34801561018e57600080fd5b506101a261019d366004614143565b6106ec565b6040519081526020015b60405180910390f35b3480156101c157600080fd5b506101d56101d0366004614209565b6108b9565b60405190151581526020016101ac565b3480156101f157600080fd5b506101a2610200366004614264565b610a36565b61017b610213366004614299565b610a78565b34801561022457600080fd5b5061017b6102333660046142e7565b610e0e565b34801561024457600080fd5b506101a2610253366004614302565b600160209081526000928352604080842090915290825290205481565b34801561027c57600080fd5b5061017b61028b366004614337565b610e56565b34801561029c57600080fd5b506101a26102ab366004614302565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff8516845290915290819020549082901b7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000161792915050565b34801561033157600080fd5b50610412610340366004614363565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525073ffffffffffffffffffffffffffffffffffffffff1660009081526020818152604091829020825160a0810184528154815260019091015460ff811615159282019290925261010082046dffffffffffffffffffffffffffff16928101929092526f01000000000000000000000000000000810463ffffffff166060830152730100000000000000000000000000000000000000900465ffffffffffff16608082015290565b6040516101ac9190600060a082019050825182526020830151151560208301526dffffffffffffffffffffffffffff604084015116604083015263ffffffff606084015116606083015265ffffffffffff608084015116608083015292915050565b34801561048057600080fd5b5061017b61048f3660046143c5565b611000565b3480156104a057600080fd5b506101a26104af366004614363565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b3480156104e357600080fd5b506104f76104f236600461441c565b61117d565b6040516101ac91906144ec565b34801561051057600080fd5b5061017b61051f36600461453b565b6112c9565b34801561053057600080fd5b5061017b61053f366004614590565b61136e565b34801561055057600080fd5b5061017b61055f366004614615565b6114c6565b61017b610572366004614363565b6106cb565b34801561058357600080fd5b5061017b6115b1565b34801561059857600080fd5b5061017b6105a7366004614363565b611791565b3480156105b857600080fd5b506105cc6105c7366004614264565b611a7e565b6040516101ac9190614657565b3480156105e557600080fd5b5061017b6105f43660046143c5565b611d82565b34801561060557600080fd5b50610681610614366004614363565b6000602081905290815260409020805460019091015460ff81169061010081046dffffffffffffffffffffffffffff16906f01000000000000000000000000000000810463ffffffff1690730100000000000000000000000000000000000000900465ffffffffffff1685565b6040805195865293151560208601526dffffffffffffffffffffffffffff9092169284019290925263ffffffff909116606083015265ffffffffffff16608082015260a0016101ac565b60015b60058110156106df576001016106ce565b6106e88261222e565b5050565b6000805a9050333014610760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c7900000000000000000060448201526064015b60405180910390fd5b8451606081015160a082015181016127100160405a603f028161078557610785614737565b0410156107b6577fdeaddead0000000000000000000000000000000000000000000000000000000060005260206000fd5b8751600090156108575760006107d3846000015160008c86612284565b9050806108555760006107e761080061229c565b80519091501561084f57846000015173ffffffffffffffffffffffffffffffffffffffff168a602001517f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a201876020015184604051610846929190614766565b60405180910390a35b60019250505b505b600088608001515a86030190506108a96000838b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508892506122c8915050565b955050505050505b949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6c393cb700000000000000000000000000000000000000000000000000000000148061094c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d95230100000000000000000000000000000000000000000000000000000000145b8061099857507fffffffff0000000000000000000000000000000000000000000000000000000082167fcf28ef9700000000000000000000000000000000000000000000000000000000145b806109e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f3e84f02100000000000000000000000000000000000000000000000000000000145b80610a3057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610a4182612582565b6040805160208101929092523090820152466060820152608001604051602081830303815290604052805190602001209050919050565b33600090815260208190526040902063ffffffff8216610af4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152606401610757565b600181015463ffffffff6f0100000000000000000000000000000090910481169083161015610b7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152606401610757565b6001810154600090610ba790349061010090046dffffffffffffffffffffffffffff166147ae565b905060008111610c13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152606401610757565b6dffffffffffffffffffffffffffff811115610c8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152606401610757565b6040805160a08101825283548152600160208083018281526dffffffffffffffffffffffffffff86811685870190815263ffffffff8a811660608801818152600060808a0181815233808352828a52918c90209a518b55965199909801805494519151965165ffffffffffff16730100000000000000000000000000000000000000027fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff979094166f0100000000000000000000000000000002969096167fffffffffffffff00000000000000000000ffffffffffffffffffffffffffffff91909516610100027fffffffffffffffffffffffffffffffffff0000000000000000000000000000ff991515999099167fffffffffffffffffffffffffffffffffff00000000000000000000000000000090941693909317979097179190911691909117179055835185815290810192909252917fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01910160405180910390a2505050565b33600090815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff851684529091528120805491610e4e836147c1565b919050555050565b3360009081526020819052604090208054821115610ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152606401610757565b8054610edd9083906147f9565b81556040805173ffffffffffffffffffffffffffffffffffffffff851681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb910160405180910390a260008373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114610f8a576040519150601f19603f3d011682016040523d82523d6000602084013e610f8f565b606091505b5050905080610ffa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152606401610757565b50505050565b61100861259b565b8160008167ffffffffffffffff81111561102457611024613ed6565b60405190808252806020026020018201604052801561105d57816020015b61104a613d2a565b8152602001906001900390816110425790505b50905060005b828110156110d657600082828151811061107f5761107f61480c565b602002602001015190506000806110ba848a8a878181106110a2576110a261480c565b90506020028101906110b4919061483b565b856125dc565b915091506110cb8483836000612850565b505050600101611063565b506040516000907fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972908290a160005b8381101561116057611154818888848181106111235761112361480c565b9050602002810190611135919061483b565b8584815181106111475761114761480c565b6020026020010151612aa5565b90910190600101611105565b5061116b8482612e11565b5050506111786001600255565b505050565b6111b86040518060c0016040528060008152602001600081526020016000815260200160008152602001600015158152602001606081525090565b6111c061259b565b6111c8613d2a565b6111d186612f58565b6000806111e0600089856125dc565b9150915060006111f260008a86612aa5565b90506000606073ffffffffffffffffffffffffffffffffffffffff8a1615611284578973ffffffffffffffffffffffffffffffffffffffff16898960405161123b929190614879565b6000604051808303816000865af19150503d8060008114611278576040519150601f19603f3d011682016040523d82523d6000602084013e61127d565b606091505b5090925090505b6040518060c001604052808760800151815260200184815260200186815260200185815260200183151581526020018281525096505050505050506108b16001600255565b6000808473ffffffffffffffffffffffffffffffffffffffff1684846040516112f3929190614879565b600060405180830381855af49150503d806000811461132e576040519150601f19603f3d011682016040523d82523d6000602084013e611333565b606091505b509150915081816040517f99410554000000000000000000000000000000000000000000000000000000008152600401610757929190614889565b83158015611391575073ffffffffffffffffffffffffffffffffffffffff83163b155b156113f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f41413230206163636f756e74206e6f74206465706c6f796564000000000000006044820152606401610757565b6014811061148a57600061140f60148284866148a4565b611418916148ce565b60601c9050803b600003611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f41413330207061796d6173746572206e6f74206465706c6f79656400000000006044820152606401610757565b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610757565b60006114e760065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663570e1a3684846040518363ffffffff1660e01b815260040161152192919061495f565b6020604051808303816000875af1158015611540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115649190614973565b6040517f6ca7b80600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152909150602401610757565b336000908152602081905260408120600181015490916f0100000000000000000000000000000090910463ffffffff169003611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152606401610757565b600181015460ff166116b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152606401610757565b60018101546000906116e2906f01000000000000000000000000000000900463ffffffff1642614990565b6001830180547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001673010000000000000000000000000000000000000065ffffffffffff84169081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169190911790915560405190815290915033907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a906020015b60405180910390a25050565b336000908152602081905260409020600181015461010090046dffffffffffffffffffffffffffff1680611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152606401610757565b6001820154730100000000000000000000000000000000000000900465ffffffffffff166118ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152606401610757565b60018201544273010000000000000000000000000000000000000090910465ffffffffffff161115611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152606401610757565b6001820180547fffffffffffffff000000000000000000000000000000000000000000000000ff1690556040805173ffffffffffffffffffffffffffffffffffffffff851681526020810183905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda3910160405180910390a260008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611a0e576040519150601f19603f3d011682016040523d82523d6000602084013e611a13565b606091505b5050905080610ffa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152606401610757565b611a86613ddc565b611a8e613d2a565b611a9783612f58565b600080611aa6600086856125dc565b845160e001516040805180820182526000808252602080830182815273ffffffffffffffffffffffffffffffffffffffff95861683528282528483206001908101546dffffffffffffffffffffffffffff6101008083048216885263ffffffff6f010000000000000000000000000000009384900481169095528e51518951808b018b5288815280880189815291909b168852878752898820909401549081049091168952049091169052835180850190945281845283015293955091935090366000611b7660408b018b6149b6565b909250905060006014821015611b8d576000611ba8565b611b9b6014600084866148a4565b611ba4916148ce565b60601c5b6040805180820182526000808252602080830182815273ffffffffffffffffffffffffffffffffffffffff86168352908290529290206001015461010081046dffffffffffffffffffffffffffff1682526f01000000000000000000000000000000900463ffffffff169091529091509350505050600085905060006040518060a001604052808960800151815260200189604001518152602001888152602001878152602001611c5a8a6060015190565b905260408051808201825260035473ffffffffffffffffffffffffffffffffffffffff908116825282518084019093526004548352600554602084810191909152820192909252919250831615801590611ccb575060018373ffffffffffffffffffffffffffffffffffffffff1614155b15611d4f5760408051808201825273ffffffffffffffffffffffffffffffffffffffff851680825282518084018452600080825260208083018281529382528181529490206001015461010081046dffffffffffffffffffffffffffff1682526f01000000000000000000000000000000900463ffffffff16909152909182015290505b6040805160a081018252928352602083019590955293810192909252506060810192909252608082015295945050505050565b611d8a61259b565b816000805b82811015611f7c5736868683818110611daa57611daa61480c565b9050602002810190611dbc9190614a1b565b9050366000611dcb8380614a4f565b90925090506000611de26040850160208601614363565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff821601611e83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152606401610757565b73ffffffffffffffffffffffffffffffffffffffff811615611f605773ffffffffffffffffffffffffffffffffffffffff811663fe96cf238484611eca60408901896149b6565b6040518563ffffffff1660e01b8152600401611ee99493929190614c13565b60006040518083038186803b158015611f0157600080fd5b505afa925050508015611f12575060015b611f60576040517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610757565b611f6a82876147ae565b95505060019093019250611d8f915050565b5060008167ffffffffffffffff811115611f9857611f98613ed6565b604051908082528060200260200182016040528015611fd157816020015b611fbe613d2a565b815260200190600190039081611fb65790505b5090506000805b848110156120ae5736888883818110611ff357611ff361480c565b90506020028101906120059190614a1b565b90503660006120148380614a4f565b9092509050600061202b6040850160208601614363565b90508160005b8181101561209c57600089898151811061204d5761204d61480c565b602002602001015190506000806120708b8989878181106110a2576110a261480c565b9150915061208084838389612850565b8a61208a816147c1565b9b505060019093019250612031915050565b505060019094019350611fd892505050565b506040517fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f97290600090a150600080805b858110156121e957368989838181106120f9576120f961480c565b905060200281019061210b9190614a1b565b905061211d6040820160208301614363565b73ffffffffffffffffffffffffffffffffffffffff167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d60405160405180910390a236600061216c8380614a4f565b90925090508060005b818110156121d8576121b7888585848181106121935761219361480c565b90506020028101906121a5919061483b565b8b8b815181106111475761114761480c565b6121c190886147ae565b9650876121cd816147c1565b985050600101612175565b5050600190930192506120de915050565b506040516000907f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d908290a261221f8682612e11565b50505050506111786001600255565b600061223a8234613147565b90508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c48260405161178591815260200190565b6000806000845160208601878987f195945050505050565b60603d828111156122aa5750815b604051602082018101604052818152816000602083013e9392505050565b6000805a8551909150600090816122de82613187565b60e083015190915073ffffffffffffffffffffffffffffffffffffffff811661230a5782519350612405565b80935060008851111561240557868202955060028a600281111561233057612330614cca565b146124055760a08301516040517f7c627b2100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691637c627b2191612392908e908d908c908990600401614cf9565b600060405180830381600088803b1580156123ac57600080fd5b5087f1935050505080156123be575060015b6124055760006123cf61080061229c565b9050806040517fad7954bc0000000000000000000000000000000000000000000000000000000081526004016107579190614d5c565b5a60a0840151606085015160808c015192880399909901980190880380821115612438576064600a828403020498909801975b5050818702955085896040015110156124b5578a6040517f220266b600000000000000000000000000000000000000000000000000000000815260040161075791815260406020808301829052908201527f414135312070726566756e642062656c6f772061637475616c476173436f7374606082015260800190565b60408901518690036124c78582613147565b506000808c60028111156124dd576124dd614cca565b1490508460e0015173ffffffffffffffffffffffffffffffffffffffff16856000015173ffffffffffffffffffffffffffffffffffffffff168c602001517f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f8860200151858d8f60405161256a949392919093845291151560208401526040830152606082015260800190565b60405180910390a45050505050505095945050505050565b600061258d826131b1565b805190602001209050919050565b60028054036125d6576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b60008060005a84519091506125f18682613282565b6125fa86610a36565b85602001818152505060008660e001358760c001358360a001518460800151856060015186604001518760c0015117171717171790506effffffffffffffffffffffffffffff80168111156126ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152606401610757565b60006126da8360c081015160a08201516080830151606084015160408501516101009095015194010101010290565b90506126e8898989846133d2565b95506126fc83600001518460200151613615565b61276b57886040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601a908201527f4141323520696e76616c6964206163636f756e74206e6f6e6365000000000000606082015260800190565b60e083015160609073ffffffffffffffffffffffffffffffffffffffff161561279f5761279a8a8a8a85613670565b965090505b60005a860390508085608001518660400151011015612823578a6040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601e908201527f41413430206f76657220766572696669636174696f6e4761734c696d69740000606082015260800190565b604089018390528160608a015260a08a01355a870301896080018181525050505050505050935093915050565b60008061285c85613831565b915091508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146128fe57856040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526014908201527f41413234207369676e6174757265206572726f72000000000000000000000000606082015260800190565b801561296f57856040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526017908201527f414132322065787069726564206f72206e6f7420647565000000000000000000606082015260800190565b600061297a85613831565b9250905073ffffffffffffffffffffffffffffffffffffffff811615612a0557866040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526014908201527f41413334207369676e6174757265206572726f72000000000000000000000000606082015260800190565b8115612a9c57866040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526021908201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560608201527f6500000000000000000000000000000000000000000000000000000000000000608082015260a00190565b50505050505050565b6000805a90506000612ab8846060015190565b6040519091506000903682612ad060608a018a6149b6565b9150915060606000826003811115612ae757843591505b507fe752d1ee000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601612c275760008b8b60200151604051602401612b4a929190614d6f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18ad2e12000000000000000000000000000000000000000000000000000000001790525190915030906242dc5390612bdd9084908f908d90602401614e55565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050925050612c9e565b3073ffffffffffffffffffffffffffffffffffffffff166242dc5385858d8b604051602401612c599493929190614e95565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505091505b602060008351602085016000305af19550600051985084604052505050505080612e075760003d80602003612cd95760206000803e60005191505b507fdeaddead000000000000000000000000000000000000000000000000000000008103612d6c57876040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052600f908201527f41413935206f7574206f66206761730000000000000000000000000000000000606082015260800190565b8551805160208089015192015173ffffffffffffffffffffffffffffffffffffffff90911691907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f479290612dc061080061229c565b604051612dce929190614766565b60405180910390a3600086608001515a612de890876147f9565b612df291906147ae565b9050612e028960028987856122c8565b955050505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8216612e8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152606401610757565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612ee8576040519150601f19603f3d011682016040523d82523d6000602084013e612eed565b606091505b5050905080611178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152606401610757565b6130586040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f01000000000000000000000000000000000000000000000000000000000000006036820152600090603701604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529190528051602090910120600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905550565b3063957122ab61306b60408401846149b6565b6130786020860186614363565b6130866101008701876149b6565b6040518663ffffffff1660e01b81526004016130a6959493929190614ecc565b60006040518083038186803b1580156130be57600080fd5b505afa9250505080156130cf575060015b613144576130db614f1b565b806308c379a00361313857506130ef614f37565b806130fa575061313a565b8051156106e8576000816040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757929190614766565b505b3d6000803e3d6000fd5b50565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054829061317b9085906147ae565b91829055509392505050565b610100810151610120820151600091908082036131a5575092915050565b6108b182488301613884565b60608135602083013560006131d16131cc60408701876149b6565b61389c565b905060006131e56131cc60608801886149b6565b9050608086013560a087013560c088013560e0890135600061320e6131cc6101008d018d6149b6565b6040805173ffffffffffffffffffffffffffffffffffffffff9b909b1660208c01528a81019990995260608a019790975250608088019490945260a087019290925260c086015260e08501526101008401526101208084019190915281518084039091018152610140909201905292915050565b61328f6020830183614363565b73ffffffffffffffffffffffffffffffffffffffff168152602082810135908201526fffffffffffffffffffffffffffffffff60808084013591821660608401521c604082015260a082013560c0808301919091528201356101008083019190915260e0830135610120830152369060009061330d908501856149b6565b909250905080156133b7576034811015613383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152606401610757565b61338d82826138af565b60a0860152608085015273ffffffffffffffffffffffffffffffffffffffff1660e0840152610ffa565b600060e084018190526080840181905260a084015250505050565b81518051600091906133f187866133ec60408a018a6149b6565b613920565b60e0820151600073ffffffffffffffffffffffffffffffffffffffff821661344f5773ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548681116134485780870361344b565b60005b9150505b604080850151602089015191517f8803e45100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861692638803e45192916134ae918d918790600401614fdf565b60206040518083038160008887f193505050508015613508575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261350591810190615004565b60015b61354c578861351861080061229c565b6040517f65c8fd4d00000000000000000000000000000000000000000000000000000000815260040161075792919061501d565b945073ffffffffffffffffffffffffffffffffffffffff82166136095773ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020805480881115613603578a6040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526017908201527f41413231206469646e2774207061792070726566756e64000000000000000000606082015260800190565b87900390555b50505050949350505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832084821c808552925282208054849167ffffffffffffffff8316919085613662836147c1565b909155501495945050505050565b815160e081015173ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604081208054606094929391908681101561371857896040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601e908201527f41413331207061796d6173746572206465706f73697420746f6f206c6f770000606082015260800190565b8681038255608084015160208901516040517f703ae88f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169263703ae88f92909161377d918e918d90600401614fdf565b60006040518083038160008887f1935050505080156137dc57506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526137d9919081019061506a565b60015b61382057896137ec61080061229c565b6040517f65c8fd4d0000000000000000000000000000000000000000000000000000000081526004016107579291906150f6565b909b909a5098505050505050505050565b6000808260000361384757506000928392509050565b600061385284613cac565b9050806040015165ffffffffffff164211806138795750806020015165ffffffffffff1642105b905194909350915050565b60008183106138935781613895565b825b9392505050565b6000604051828085833790209392505050565b600080806138c060148286886148a4565b6138c9916148ce565b60601c6138da6024601487896148a4565b6138e391615143565b60801c6138f460346024888a6148a4565b6138fd91615143565b9194506fffffffffffffffffffffffffffffffff16925060801c90509250925092565b8015610ffa5782515173ffffffffffffffffffffffffffffffffffffffff81163b156139b157846040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601f908201527f414131302073656e64657220616c726561647920636f6e737472756374656400606082015260800190565b60006139d260065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663570e1a3686600001516040015186866040518463ffffffff1660e01b8152600401613a1592919061495f565b60206040518083038160008887f1158015613a34573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a599190614973565b905073ffffffffffffffffffffffffffffffffffffffff8116613ae157856040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601b908201527f4141313320696e6974436f6465206661696c6564206f72204f4f470000000000606082015260800190565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613b7e57856040517f220266b600000000000000000000000000000000000000000000000000000000815260040161075791815260406020808301829052908201527f4141313420696e6974436f6465206d7573742072657475726e2073656e646572606082015260800190565b8073ffffffffffffffffffffffffffffffffffffffff163b600003613c0757856040517f220266b600000000000000000000000000000000000000000000000000000000815260040161075791815260406020808301829052908201527f4141313520696e6974436f6465206d757374206372656174652073656e646572606082015260800190565b6000613c1660148286886148a4565b613c1f916148ce565b60601c90508273ffffffffffffffffffffffffffffffffffffffff1686602001517fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d83896000015160e00151604051613c9b92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b60405180910390a350505050505050565b60408051606081018252600080825260208201819052918101919091528160a081901c65ffffffffffff8116600003613ce8575065ffffffffffff5b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff909316835260d09490941c602083015265ffffffffffff16928101929092525090565b6040518060a00160405280613db7604051806101400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b8152602001600080191681526020016000815260200160008152602001600081525090565b6040518060a00160405280613e196040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b8152602001613e3b604051806040016040528060008152602001600081525090565b8152602001613e5d604051806040016040528060008152602001600081525090565b8152602001613e7f604051806040016040528060008152602001600081525090565b8152602001613e8c613e91565b905290565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001613e8c604051806040016040528060008152602001600081525090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810181811067ffffffffffffffff82111715613f2557613f25613ed6565b60405250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715613f6f57613f6f613ed6565b6040525050565b604051610140810167ffffffffffffffff81118282101715613f9a57613f9a613ed6565b60405290565b600067ffffffffffffffff821115613fba57613fba613ed6565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461314457600080fd5b803561401381613fe6565b919050565b60008183036101c081121561402c57600080fd5b60405161403881613f05565b8092506101408083121561404b57600080fd5b614053613f76565b925061405e85614008565b83526020850135602084015260408501356040840152606085013560608401526080850135608084015260a085013560a084015260c085013560c08401526140a860e08601614008565b60e084015261010085810135908401526101208086013590840152918152908301356020820152610160830135604082015261018083013560608201526101a090920135608090920191909152919050565b60008083601f84011261410c57600080fd5b50813567ffffffffffffffff81111561412457600080fd5b60208301915083602082850101111561413c57600080fd5b9250929050565b600080600080610200858703121561415a57600080fd5b843567ffffffffffffffff8082111561417257600080fd5b818701915087601f83011261418657600080fd5b813561419181613fa0565b60405161419e8282613f2b565b8281528a60208487010111156141b357600080fd5b826020860160208301376000602084830101528098505050506141d98860208901614018565b94506101e08701359150808211156141f057600080fd5b506141fd878288016140fa565b95989497509550505050565b60006020828403121561421b57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461389557600080fd5b6000610140828403121561425e57600080fd5b50919050565b60006020828403121561427657600080fd5b813567ffffffffffffffff81111561428d57600080fd5b6108b18482850161424b565b6000602082840312156142ab57600080fd5b813563ffffffff8116811461389557600080fd5b803577ffffffffffffffffffffffffffffffffffffffffffffffff8116811461401357600080fd5b6000602082840312156142f957600080fd5b613895826142bf565b6000806040838503121561431557600080fd5b823561432081613fe6565b915061432e602084016142bf565b90509250929050565b6000806040838503121561434a57600080fd5b823561435581613fe6565b946020939093013593505050565b60006020828403121561437557600080fd5b813561389581613fe6565b60008083601f84011261439257600080fd5b50813567ffffffffffffffff8111156143aa57600080fd5b6020830191508360208260051b850101111561413c57600080fd5b6000806000604084860312156143da57600080fd5b833567ffffffffffffffff8111156143f157600080fd5b6143fd86828701614380565b909450925050602084013561441181613fe6565b809150509250925092565b6000806000806060858703121561443257600080fd5b843567ffffffffffffffff8082111561444a57600080fd5b6144568883890161424b565b95506020870135915061446882613fe6565b909350604086013590808211156141f057600080fd5b60005b83811015614499578181015183820152602001614481565b50506000910152565b600081518084526144ba81602086016020860161447e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152815160208201526020820151604082015260408201516060820152606082015160808201526080820151151560a0820152600060a083015160c0808401526108b160e08401826144a2565b60008060006040848603121561455057600080fd5b833561455b81613fe6565b9250602084013567ffffffffffffffff81111561457757600080fd5b614583868287016140fa565b9497909650939450505050565b6000806000806000606086880312156145a857600080fd5b853567ffffffffffffffff808211156145c057600080fd5b6145cc89838a016140fa565b9097509550602088013591506145e182613fe6565b909350604087013590808211156145f757600080fd5b50614604888289016140fa565b969995985093965092949392505050565b6000806020838503121561462857600080fd5b823567ffffffffffffffff81111561463f57600080fd5b61464b858286016140fa565b90969095509350505050565b602080825282516101408383015280516101608401529081015161018083015260408101516101a083015260608101516101c08301526080015160a06101e08301526000906146aa6102008401826144a2565b905060208401516146c8604085018280518252602090810151910152565b506040840151805160808581019190915260209182015160a08601526060860151805160c087015282015160e0860152850151805173ffffffffffffffffffffffffffffffffffffffff1661010086015280820151805161012087015290910151610140850152509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8281526040602082015260006108b160408301846144a2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610a3057610a3061477f565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147f2576147f261477f565b5060010190565b81810381811115610a3057610a3061477f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec183360301811261486f57600080fd5b9190910192915050565b8183823760009101908152919050565b82151581526040602082015260006108b160408301846144a2565b600080858511156148b457600080fd5b838611156148c157600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000813581811691601485101561490e5780818660140360031b1b83161692505b505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006108b1602083018486614916565b60006020828403121561498557600080fd5b815161389581613fe6565b65ffffffffffff8181168382160190808211156149af576149af61477f565b5092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126149eb57600080fd5b83018035915067ffffffffffffffff821115614a0657600080fd5b60200191503681900382131561413c57600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261486f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a8457600080fd5b83018035915067ffffffffffffffff821115614a9f57600080fd5b6020019150600581901b360382131561413c57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614aec57600080fd5b830160208101925035905067ffffffffffffffff811115614b0c57600080fd5b80360382131561413c57600080fd5b6000610140614b4784614b2d85614008565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208301356020850152614b5e6040840184614ab7565b826040870152614b718387018284614916565b92505050614b826060840184614ab7565b8583036060870152614b95838284614916565b925050506080830135608085015260a083013560a085015260c083013560c085015260e083013560e0850152610100614bd081850185614ab7565b86840383880152614be2848284614916565b9350505050610120614bf681850185614ab7565b86840383880152614c08848284614916565b979650505050505050565b6040808252810184905260006060600586901b830181019083018783805b89811015614cb3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec18c3603018112614c91578283fd5b614c9d868d8301614b1b565b9550506020938401939290920191600101614c31565b505050508281036020840152614c08818587614916565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060038610614d32577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b85825260806020830152614d4960808301866144a2565b6040830194909452506060015292915050565b60208152600061389560208301846144a2565b604081526000614d826040830185614b1b565b90508260208301529392505050565b8051805173ffffffffffffffffffffffffffffffffffffffff1683526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c084015260e0810151614e1060e085018273ffffffffffffffffffffffffffffffffffffffff169052565b5061010081810151908401526101209081015190830152602081015161014083015260408101516101608301526060810151610180830152608001516101a090910152565b6000610200808352614e69818401876144a2565b9050614e786020840186614d91565b8281036101e0840152614e8b81856144a2565b9695505050505050565b6000610200808352614eaa8184018789614916565b9050614eb96020840186614d91565b8281036101e0840152614c0881856144a2565b606081526000614ee0606083018789614916565b73ffffffffffffffffffffffffffffffffffffffff861660208401528281036040840152614f0f818587614916565b98975050505050505050565b600060033d1115614f345760046000803e5060005160e01c5b90565b600060443d1015614f455790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff8160248401118184111715614f9357505050505090565b8285019150815181811115614fab5750505050505090565b843d8701016020828501011115614fc55750505050505090565b614fd460208286010187613f2b565b509095945050505050565b606081526000614ff26060830186614b1b565b60208301949094525060400152919050565b60006020828403121561501657600080fd5b5051919050565b82815260606020820152600d60608201527f4141323320726576657274656400000000000000000000000000000000000000608082015260a0604082015260006108b160a08301846144a2565b6000806040838503121561507d57600080fd5b825167ffffffffffffffff81111561509457600080fd5b8301601f810185136150a557600080fd5b80516150b081613fa0565b6040516150bd8282613f2b565b8281528760208486010111156150d257600080fd5b6150e383602083016020870161447e565b6020969096015195979596505050505050565b82815260606020820152600d60608201527f4141333320726576657274656400000000000000000000000000000000000000608082015260a0604082015260006108b160a08301846144a2565b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000813581811691601085101561490e5760109490940360031b84901b169092169291505056fea26469706673582212205dd851229a159a5fc6fb90631555676c166d87d1b98af57452e19ebd56c1ec2f64736f6c63430008170033608060405234801561001057600080fd5b50610213806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063570e1a3614610030575b600080fd5b61004361003e3660046100f9565b61006c565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60008061007c601482858761016b565b61008591610195565b60601c90506000610099846014818861016b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525084519495509360209350849250905082850182875af190506000519350806100f057600093505b50505092915050565b6000806020838503121561010c57600080fd5b823567ffffffffffffffff8082111561012457600080fd5b818501915085601f83011261013857600080fd5b81358181111561014757600080fd5b86602082850101111561015957600080fd5b60209290920196919550909350505050565b6000808585111561017b57600080fd5b8386111561018857600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156101d55780818660140360031b1b83161692505b50509291505056fea264697066735822122066dd15b95e9110ee66d566d2a2c0e40e2cafbd78e21fd830b6f62cf2974a7c2664736f6c63430008170033"; + "0x60a06040526040516200001290620000f2565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b0390811660805260408051808201825260008082528251808401909352808352602080840191825282018390529051600380546001600160a01b031916919094161790925551600455516005553480156200009157600080fd5b50600160025560644310620000ec5760405162461bcd60e51b815260206004820152601660248201527f73686f756c64206e6f74206265206465706c6f79656400000000000000000000604482015260640160405180910390fd5b62000100565b61023380620053f383390190565b6080516152da62000119600039600050506152da6000f3fe60806040526004361061016d5760003560e01c8063765e827f116100cb578063b760faf91161007f578063c3bce00911610059578063c3bce009146105ac578063dbed18e0146105d9578063fc7e286d146105f957600080fd5b8063b760faf914610564578063bb9fe6bf14610577578063c23a5cea1461058c57600080fd5b8063957122ab116100b0578063957122ab146104f757806397b2dcb9146105175780639b249f691461054457600080fd5b8063765e827f146104b7578063850aaf62146104d757600080fd5b8063205c28781161012257806335567e1a1161010757806335567e1a146102905780635287ce121461032557806370a082311461047457600080fd5b8063205c28781461025057806322cdde4c1461027057600080fd5b80630396cb60116101535780630396cb60146101e55780630bd28e3b146101f85780631b2e01b81461021857600080fd5b806242dc531461018257806301ffc9a7146101b557600080fd5b3661017d5761017b336106cb565b005b600080fd5b34801561018e57600080fd5b506101a261019d36600461426a565b6106ec565b6040519081526020015b60405180910390f35b3480156101c157600080fd5b506101d56101d0366004614330565b6108b7565b60405190151581526020016101ac565b61017b6101f3366004614372565b610a34565b34801561020457600080fd5b5061017b6102133660046143c0565b610dca565b34801561022457600080fd5b506101a26102333660046143db565b600160209081526000928352604080842090915290825290205481565b34801561025c57600080fd5b5061017b61026b366004614410565b610e12565b34801561027c57600080fd5b506101a261028b366004614455565b610fbc565b34801561029c57600080fd5b506101a26102ab3660046143db565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff8516845290915290819020549082901b7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000161792915050565b34801561033157600080fd5b5061041261034036600461448a565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525073ffffffffffffffffffffffffffffffffffffffff1660009081526020818152604091829020825160a0810184528154815260019091015460ff811615159282019290925261010082046dffffffffffffffffffffffffffff16928101929092526f01000000000000000000000000000000810463ffffffff166060830152730100000000000000000000000000000000000000900465ffffffffffff16608082015290565b6040516101ac9190600060a082019050825182526020830151151560208301526dffffffffffffffffffffffffffff604084015116604083015263ffffffff606084015116606083015265ffffffffffff608084015116608083015292915050565b34801561048057600080fd5b506101a261048f36600461448a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b3480156104c357600080fd5b5061017b6104d23660046144ec565b610ffe565b3480156104e357600080fd5b5061017b6104f2366004614543565b61117b565b34801561050357600080fd5b5061017b610512366004614598565b611220565b34801561052357600080fd5b5061053761053236600461461d565b611378565b6040516101ac91906146ed565b34801561055057600080fd5b5061017b61055f36600461473c565b6114c4565b61017b61057236600461448a565b6106cb565b34801561058357600080fd5b5061017b6115af565b34801561059857600080fd5b5061017b6105a736600461448a565b61178f565b3480156105b857600080fd5b506105cc6105c7366004614455565b611a7c565b6040516101ac919061477e565b3480156105e557600080fd5b5061017b6105f43660046144ec565b611d80565b34801561060557600080fd5b5061068161061436600461448a565b6000602081905290815260409020805460019091015460ff81169061010081046dffffffffffffffffffffffffffff16906f01000000000000000000000000000000810463ffffffff1690730100000000000000000000000000000000000000900465ffffffffffff1685565b6040805195865293151560208601526dffffffffffffffffffffffffffff9092169284019290925263ffffffff909116606083015265ffffffffffff16608082015260a0016101ac565b60015b60058110156106df576001016106ce565b6106e88261222c565b5050565b6000805a9050333014610760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c7900000000000000000060448201526064015b60405180910390fd5b8451606081015160a082015181016127100160405a603f02816107855761078561485e565b0410156107b6577fdeaddead0000000000000000000000000000000000000000000000000000000060005260206000fd5b8751600090156108575760006107d3846000015160008c86612282565b9050806108555760006107e761080061229a565b80519091501561084f57846000015173ffffffffffffffffffffffffffffffffffffffff168a602001517f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a20187602001518460405161084692919061488d565b60405180910390a35b60019250505b505b600088608001515a86030190506108a7828a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506122c6915050565b955050505050505b949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f60fc6b6e00000000000000000000000000000000000000000000000000000000148061094a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f915074d800000000000000000000000000000000000000000000000000000000145b8061099657507fffffffff0000000000000000000000000000000000000000000000000000000082167fcf28ef9700000000000000000000000000000000000000000000000000000000145b806109e257507fffffffff0000000000000000000000000000000000000000000000000000000082167f3e84f02100000000000000000000000000000000000000000000000000000000145b80610a2e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b33600090815260208190526040902063ffffffff8216610ab0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152606401610757565b600181015463ffffffff6f0100000000000000000000000000000090910481169083161015610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152606401610757565b6001810154600090610b6390349061010090046dffffffffffffffffffffffffffff166148d5565b905060008111610bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152606401610757565b6dffffffffffffffffffffffffffff811115610c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152606401610757565b6040805160a08101825283548152600160208083018281526dffffffffffffffffffffffffffff86811685870190815263ffffffff8a811660608801818152600060808a0181815233808352828a52918c90209a518b55965199909801805494519151965165ffffffffffff16730100000000000000000000000000000000000000027fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff979094166f0100000000000000000000000000000002969096167fffffffffffffff00000000000000000000ffffffffffffffffffffffffffffff91909516610100027fffffffffffffffffffffffffffffffffff0000000000000000000000000000ff991515999099167fffffffffffffffffffffffffffffffffff00000000000000000000000000000090941693909317979097179190911691909117179055835185815290810192909252917fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01910160405180910390a2505050565b33600090815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff851684529091528120805491610e0a836148e8565b919050555050565b3360009081526020819052604090208054821115610e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152606401610757565b8054610e99908390614920565b81556040805173ffffffffffffffffffffffffffffffffffffffff851681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb910160405180910390a260008373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114610f46576040519150601f19603f3d011682016040523d82523d6000602084013e610f4b565b606091505b5050905080610fb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152606401610757565b50505050565b6000610fc7826124ee565b6040805160208101929092523090820152466060820152608001604051602081830303815290604052805190602001209050919050565b611006612507565b8160008167ffffffffffffffff81111561102257611022613ffd565b60405190808252806020026020018201604052801561105b57816020015b611048613e51565b8152602001906001900390816110405790505b50905060005b828110156110d457600082828151811061107d5761107d614933565b602002602001015190506000806110b8848a8a878181106110a0576110a0614933565b90506020028101906110b29190614962565b85612548565b915091506110c984838360006127a7565b505050600101611061565b506040516000907fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972908290a160005b8381101561115e576111528188888481811061112157611121614933565b90506020028101906111339190614962565b85848151811061114557611145614933565b60200260200101516129fc565b90910190600101611103565b506111698482612dd2565b5050506111766001600255565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1684846040516111a59291906149a0565b600060405180830381855af49150503d80600081146111e0576040519150601f19603f3d011682016040523d82523d6000602084013e6111e5565b606091505b509150915081816040517f994105540000000000000000000000000000000000000000000000000000000081526004016107579291906149b0565b83158015611243575073ffffffffffffffffffffffffffffffffffffffff83163b155b156112aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f41413230206163636f756e74206e6f74206465706c6f796564000000000000006044820152606401610757565b6014811061133c5760006112c160148284866149cb565b6112ca916149f5565b60601c9050803b60000361133a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f41413330207061796d6173746572206e6f74206465706c6f79656400000000006044820152606401610757565b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610757565b6113b36040518060c0016040528060008152602001600081526020016000815260200160008152602001600015158152602001606081525090565b6113bb612507565b6113c3613e51565b6113cc86612f19565b6000806113db60008985612548565b9150915060006113ed60008a866129fc565b90506000606073ffffffffffffffffffffffffffffffffffffffff8a161561147f578973ffffffffffffffffffffffffffffffffffffffff1689896040516114369291906149a0565b6000604051808303816000865af19150503d8060008114611473576040519150601f19603f3d011682016040523d82523d6000602084013e611478565b606091505b5090925090505b6040518060c001604052808760800151815260200184815260200186815260200185815260200183151581526020018281525096505050505050506108af6001600255565b60006114e560065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663570e1a3684846040518363ffffffff1660e01b815260040161151f929190614a86565b6020604051808303816000875af115801561153e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115629190614a9a565b6040517f6ca7b80600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152909150602401610757565b336000908152602081905260408120600181015490916f0100000000000000000000000000000090910463ffffffff169003611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152606401610757565b600181015460ff166116b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152606401610757565b60018101546000906116e0906f01000000000000000000000000000000900463ffffffff1642614ab7565b6001830180547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001673010000000000000000000000000000000000000065ffffffffffff84169081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169190911790915560405190815290915033907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a906020015b60405180910390a25050565b336000908152602081905260409020600181015461010090046dffffffffffffffffffffffffffff168061181f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152606401610757565b6001820154730100000000000000000000000000000000000000900465ffffffffffff166118a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152606401610757565b60018201544273010000000000000000000000000000000000000090910465ffffffffffff161115611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152606401610757565b6001820180547fffffffffffffff000000000000000000000000000000000000000000000000ff1690556040805173ffffffffffffffffffffffffffffffffffffffff851681526020810183905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda3910160405180910390a260008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611a0c576040519150601f19603f3d011682016040523d82523d6000602084013e611a11565b606091505b5050905080610fb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152606401610757565b611a84613f03565b611a8c613e51565b611a9583612f19565b600080611aa460008685612548565b845160e001516040805180820182526000808252602080830182815273ffffffffffffffffffffffffffffffffffffffff95861683528282528483206001908101546dffffffffffffffffffffffffffff6101008083048216885263ffffffff6f010000000000000000000000000000009384900481169095528e51518951808b018b5288815280880189815291909b168852878752898820909401549081049091168952049091169052835180850190945281845283015293955091935090366000611b7460408b018b614add565b909250905060006014821015611b8b576000611ba6565b611b996014600084866149cb565b611ba2916149f5565b60601c5b6040805180820182526000808252602080830182815273ffffffffffffffffffffffffffffffffffffffff86168352908290529290206001015461010081046dffffffffffffffffffffffffffff1682526f01000000000000000000000000000000900463ffffffff169091529091509350505050600085905060006040518060a001604052808960800151815260200189604001518152602001888152602001878152602001611c588a6060015190565b905260408051808201825260035473ffffffffffffffffffffffffffffffffffffffff908116825282518084019093526004548352600554602084810191909152820192909252919250831615801590611cc9575060018373ffffffffffffffffffffffffffffffffffffffff1614155b15611d4d5760408051808201825273ffffffffffffffffffffffffffffffffffffffff851680825282518084018452600080825260208083018281529382528181529490206001015461010081046dffffffffffffffffffffffffffff1682526f01000000000000000000000000000000900463ffffffff16909152909182015290505b6040805160a081018252928352602083019590955293810192909252506060810192909252608082015295945050505050565b611d88612507565b816000805b82811015611f7a5736868683818110611da857611da8614933565b9050602002810190611dba9190614b42565b9050366000611dc98380614b76565b90925090506000611de0604085016020860161448a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff821601611e81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152606401610757565b73ffffffffffffffffffffffffffffffffffffffff811615611f5e5773ffffffffffffffffffffffffffffffffffffffff8116632dd811338484611ec86040890189614add565b6040518563ffffffff1660e01b8152600401611ee79493929190614d2e565b60006040518083038186803b158015611eff57600080fd5b505afa925050508015611f10575060015b611f5e576040517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610757565b611f6882876148d5565b95505060019093019250611d8d915050565b5060008167ffffffffffffffff811115611f9657611f96613ffd565b604051908082528060200260200182016040528015611fcf57816020015b611fbc613e51565b815260200190600190039081611fb45790505b5090506000805b848110156120ac5736888883818110611ff157611ff1614933565b90506020028101906120039190614b42565b90503660006120128380614b76565b90925090506000612029604085016020860161448a565b90508160005b8181101561209a57600089898151811061204b5761204b614933565b6020026020010151905060008061206e8b8989878181106110a0576110a0614933565b9150915061207e848383896127a7565b8a612088816148e8565b9b50506001909301925061202f915050565b505060019094019350611fd692505050565b506040517fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f97290600090a150600080805b858110156121e757368989838181106120f7576120f7614933565b90506020028101906121099190614b42565b905061211b604082016020830161448a565b73ffffffffffffffffffffffffffffffffffffffff167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d60405160405180910390a236600061216a8380614b76565b90925090508060005b818110156121d6576121b58885858481811061219157612191614933565b90506020028101906121a39190614962565b8b8b8151811061114557611145614933565b6121bf90886148d5565b9650876121cb816148e8565b985050600101612173565b5050600190930192506120dc915050565b506040516000907f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d908290a261221d8682612dd2565b50505050506111766001600255565b60006122388234613107565b90508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c48260405161178391815260200190565b6000806000845160208601878987f195945050505050565b60603d828111156122a85750815b604051602082018101604052818152816000602083013e9392505050565b6000805a8551909150600090816122dc82613147565b60e083015190915073ffffffffffffffffffffffffffffffffffffffff81166123085782519350612403565b80935060008851111561240357868202955060028a600281111561232e5761232e614de5565b146124035760a08301516040517f7c627b2100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691637c627b2191612390908e908d908c908990600401614e14565b600060405180830381600088803b1580156123aa57600080fd5b5087f1935050505080156123bc575060015b6124035760006123cd61080061229a565b9050806040517fad7954bc0000000000000000000000000000000000000000000000000000000081526004016107579190614e77565b5a60a0840151606085015160808c015192880399909901980190880380821115612436576064600a828403020498909801975b505060408901518783029650868110156124ab5760028b600281111561245e5761245e614de5565b036124815780965061246f8a613171565b61247c8a6000898b6131cd565b6124e0565b7fdeadaa510000000000000000000000000000000000000000000000000000000060005260206000fd5b8681036124b88682613107565b506000808d60028111156124ce576124ce614de5565b1490506124dd8c828b8d6131cd565b50505b505050505050949350505050565b60006124f982613255565b805190602001209050919050565b6002805403612542576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b60008060005a845190915061255d868261331a565b61256686610fbc565b6020860152604081015161012082015161010083015160a08401516080850151606086015160c0870151861717171717176effffffffffffffffffffffffffffff811115612610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152606401610757565b600061263f8460c081015160a08201516080830151606084015160408501516101009095015194010101010290565b905061264e8a8a8a8487613465565b9650612662846000015185602001516136a6565b6126d157896040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601a908201527f4141323520696e76616c6964206163636f756e74206e6f6e6365000000000000606082015260800190565b825a8603111561274657896040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601e908201527f41413236206f76657220766572696669636174696f6e4761734c696d69740000606082015260800190565b60e084015160609073ffffffffffffffffffffffffffffffffffffffff161561277a576127758b8b8b85613701565b975090505b604089018290528060608a015260a08a01355a870301896080018181525050505050505050935093915050565b6000806127b385613958565b915091508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461285557856040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526014908201527f41413234207369676e6174757265206572726f72000000000000000000000000606082015260800190565b80156128c657856040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526017908201527f414132322065787069726564206f72206e6f7420647565000000000000000000606082015260800190565b60006128d185613958565b9250905073ffffffffffffffffffffffffffffffffffffffff81161561295c57866040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526014908201527f41413334207369676e6174757265206572726f72000000000000000000000000606082015260800190565b81156129f357866040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526021908201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560608201527f6500000000000000000000000000000000000000000000000000000000000000608082015260a00190565b50505050505050565b6000805a90506000612a0f846060015190565b6040519091506000903682612a2760608a018a614add565b9150915060606000826003811115612a3e57843591505b507f72288ed1000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601612b7e5760008b8b60200151604051602401612aa1929190614e8a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8dd7712f000000000000000000000000000000000000000000000000000000001790525190915030906242dc5390612b349084908f908d90602401614f70565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050925050612bf5565b3073ffffffffffffffffffffffffffffffffffffffff166242dc5385858d8b604051602401612bb09493929190614fb0565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505091505b602060008351602085016000305af19550600051985084604052505050505080612dc85760003d80602003612c305760206000803e60005191505b507fdeaddead000000000000000000000000000000000000000000000000000000008103612cc357876040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052600f908201527f41413935206f7574206f66206761730000000000000000000000000000000000606082015260800190565b7fdeadaa51000000000000000000000000000000000000000000000000000000008103612d2d57600086608001515a612cfc9087614920565b612d0691906148d5565b6040880151909150612d1788613171565b612d2488600083856131cd565b9550612dc69050565b8551805160208089015192015173ffffffffffffffffffffffffffffffffffffffff90911691907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f479290612d8161080061229a565b604051612d8f92919061488d565b60405180910390a3600086608001515a612da99087614920565b612db391906148d5565b9050612dc260028886846122c6565b9550505b505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8216612e4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152606401610757565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612ea9576040519150601f19603f3d011682016040523d82523d6000602084013e612eae565b606091505b5050905080611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152606401610757565b6130196040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f01000000000000000000000000000000000000000000000000000000000000006036820152600090603701604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529190528051602090910120600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905550565b3063957122ab61302c6040840184614add565b613039602086018661448a565b61304660e0870187614add565b6040518663ffffffff1660e01b8152600401613066959493929190614fe7565b60006040518083038186803b15801561307e57600080fd5b505afa92505050801561308f575060015b6131045761309b615036565b806308c379a0036130f857506130af615052565b806130ba57506130fa565b8051156106e8576000816040517f220266b600000000000000000000000000000000000000000000000000000000815260040161075792919061488d565b505b3d6000803e3d6000fd5b50565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054829061313b9085906148d5565b91829055509392505050565b61010081015161012082015160009190808203613165575092915050565b6108af824883016139ab565b805180516020808401519281015160405190815273ffffffffffffffffffffffffffffffffffffffff90921692917f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e910160405180910390a350565b835160e0810151815160208088015193015160405173ffffffffffffffffffffffffffffffffffffffff9384169492909316927f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f916132479189908990899093845291151560208401526040830152606082015260800190565b60405180910390a450505050565b60608135602083013560006132756132706040870187614add565b6139c3565b905060006132896132706060880188614add565b9050608086013560a087013560c088013560006132ac61327060e08c018c614add565b6040805173ffffffffffffffffffffffffffffffffffffffff9a909a1660208b015289810198909852606089019690965250608087019390935260a086019190915260c085015260e08401526101008084019190915281518084039091018152610120909201905292915050565b613327602083018361448a565b73ffffffffffffffffffffffffffffffffffffffff168152602082810135908201526fffffffffffffffffffffffffffffffff6080808401358281166060850152811c604084015260a084013560c0808501919091528401359182166101008401521c6101208201523660006133a060e0850185614add565b9092509050801561344a576034811015613416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152606401610757565b61342082826139d6565b60a0860152608085015273ffffffffffffffffffffffffffffffffffffffff1660e0840152610fb6565b600060e084018190526080840181905260a084015250505050565b8251805160009190613484888761347f60408b018b614add565b613a47565b60e0820151600073ffffffffffffffffffffffffffffffffffffffff82166134e25773ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548781116134db578088036134de565b60005b9150505b60208801516040517f19822f7c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516916319822f7c91899161353e918e919087906004016150fa565b60206040518083038160008887f193505050508015613598575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526135959181019061511f565b60015b6135dc57896135a861080061229a565b6040517f65c8fd4d000000000000000000000000000000000000000000000000000000008152600401610757929190615138565b945073ffffffffffffffffffffffffffffffffffffffff82166136995773ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020805480891115613693578b6040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526017908201527f41413231206469646e2774207061792070726566756e64000000000000000000606082015260800190565b88900390555b5050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832084821c808552925282208054849167ffffffffffffffff83169190856136f3836148e8565b909155501495945050505050565b60606000805a855160e081015173ffffffffffffffffffffffffffffffffffffffff8116600090815260208190526040902080549394509192909190878110156137b0578a6040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601e908201527f41413331207061796d6173746572206465706f73697420746f6f206c6f770000606082015260800190565b87810382600001819055506000846080015190508373ffffffffffffffffffffffffffffffffffffffff166352b7512c828d8d602001518d6040518563ffffffff1660e01b8152600401613806939291906150fa565b60006040518083038160008887f19350505050801561386557506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526138629190810190615185565b60015b6138a9578b61387561080061229a565b6040517f65c8fd4d000000000000000000000000000000000000000000000000000000008152600401610757929190615211565b9098509650805a87031115613949578b6040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526027908201527f41413336206f766572207061796d6173746572566572696669636174696f6e4760608201527f61734c696d697400000000000000000000000000000000000000000000000000608082015260a00190565b50505050505094509492505050565b6000808260000361396e57506000928392509050565b600061397984613dd3565b9050806040015165ffffffffffff164211806139a05750806020015165ffffffffffff1642105b905194909350915050565b60008183106139ba57816139bc565b825b9392505050565b6000604051828085833790209392505050565b600080806139e760148286886149cb565b6139f0916149f5565b60601c613a016024601487896149cb565b613a0a9161525e565b60801c613a1b60346024888a6149cb565b613a249161525e565b9194506fffffffffffffffffffffffffffffffff16925060801c90509250925092565b8015610fb65782515173ffffffffffffffffffffffffffffffffffffffff81163b15613ad857846040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601f908201527f414131302073656e64657220616c726561647920636f6e737472756374656400606082015260800190565b6000613af960065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663570e1a3686600001516040015186866040518463ffffffff1660e01b8152600401613b3c929190614a86565b60206040518083038160008887f1158015613b5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b809190614a9a565b905073ffffffffffffffffffffffffffffffffffffffff8116613c0857856040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601b908201527f4141313320696e6974436f6465206661696c6564206f72204f4f470000000000606082015260800190565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613ca557856040517f220266b600000000000000000000000000000000000000000000000000000000815260040161075791815260406020808301829052908201527f4141313420696e6974436f6465206d7573742072657475726e2073656e646572606082015260800190565b8073ffffffffffffffffffffffffffffffffffffffff163b600003613d2e57856040517f220266b600000000000000000000000000000000000000000000000000000000815260040161075791815260406020808301829052908201527f4141313520696e6974436f6465206d757374206372656174652073656e646572606082015260800190565b6000613d3d60148286886149cb565b613d46916149f5565b60601c90508273ffffffffffffffffffffffffffffffffffffffff1686602001517fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d83896000015160e00151604051613dc292919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b60405180910390a350505050505050565b60408051606081018252600080825260208201819052918101919091528160a081901c65ffffffffffff8116600003613e0f575065ffffffffffff5b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff909316835260d09490941c602083015265ffffffffffff16928101929092525090565b6040518060a00160405280613ede604051806101400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b8152602001600080191681526020016000815260200160008152602001600081525090565b6040518060a00160405280613f406040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b8152602001613f62604051806040016040528060008152602001600081525090565b8152602001613f84604051806040016040528060008152602001600081525090565b8152602001613fa6604051806040016040528060008152602001600081525090565b8152602001613fb3613fb8565b905290565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001613fb3604051806040016040528060008152602001600081525090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810181811067ffffffffffffffff8211171561404c5761404c613ffd565b60405250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561409657614096613ffd565b6040525050565b604051610140810167ffffffffffffffff811182821017156140c1576140c1613ffd565b60405290565b600067ffffffffffffffff8211156140e1576140e1613ffd565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461310457600080fd5b803561413a8161410d565b919050565b60008183036101c081121561415357600080fd5b60405161415f8161402c565b8092506101408083121561417257600080fd5b61417a61409d565b92506141858561412f565b83526020850135602084015260408501356040840152606085013560608401526080850135608084015260a085013560a084015260c085013560c08401526141cf60e0860161412f565b60e084015261010085810135908401526101208086013590840152918152908301356020820152610160830135604082015261018083013560608201526101a090920135608090920191909152919050565b60008083601f84011261423357600080fd5b50813567ffffffffffffffff81111561424b57600080fd5b60208301915083602082850101111561426357600080fd5b9250929050565b600080600080610200858703121561428157600080fd5b843567ffffffffffffffff8082111561429957600080fd5b818701915087601f8301126142ad57600080fd5b81356142b8816140c7565b6040516142c58282614052565b8281528a60208487010111156142da57600080fd5b82602086016020830137600060208483010152809850505050614300886020890161413f565b94506101e087013591508082111561431757600080fd5b5061432487828801614221565b95989497509550505050565b60006020828403121561434257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146139bc57600080fd5b60006020828403121561438457600080fd5b813563ffffffff811681146139bc57600080fd5b803577ffffffffffffffffffffffffffffffffffffffffffffffff8116811461413a57600080fd5b6000602082840312156143d257600080fd5b6139bc82614398565b600080604083850312156143ee57600080fd5b82356143f98161410d565b915061440760208401614398565b90509250929050565b6000806040838503121561442357600080fd5b823561442e8161410d565b946020939093013593505050565b6000610120828403121561444f57600080fd5b50919050565b60006020828403121561446757600080fd5b813567ffffffffffffffff81111561447e57600080fd5b6108af8482850161443c565b60006020828403121561449c57600080fd5b81356139bc8161410d565b60008083601f8401126144b957600080fd5b50813567ffffffffffffffff8111156144d157600080fd5b6020830191508360208260051b850101111561426357600080fd5b60008060006040848603121561450157600080fd5b833567ffffffffffffffff81111561451857600080fd5b614524868287016144a7565b90945092505060208401356145388161410d565b809150509250925092565b60008060006040848603121561455857600080fd5b83356145638161410d565b9250602084013567ffffffffffffffff81111561457f57600080fd5b61458b86828701614221565b9497909650939450505050565b6000806000806000606086880312156145b057600080fd5b853567ffffffffffffffff808211156145c857600080fd5b6145d489838a01614221565b9097509550602088013591506145e98261410d565b909350604087013590808211156145ff57600080fd5b5061460c88828901614221565b969995985093965092949392505050565b6000806000806060858703121561463357600080fd5b843567ffffffffffffffff8082111561464b57600080fd5b6146578883890161443c565b9550602087013591506146698261410d565b9093506040860135908082111561431757600080fd5b60005b8381101561469a578181015183820152602001614682565b50506000910152565b600081518084526146bb81602086016020860161467f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152815160208201526020820151604082015260408201516060820152606082015160808201526080820151151560a0820152600060a083015160c0808401526108af60e08401826146a3565b6000806020838503121561474f57600080fd5b823567ffffffffffffffff81111561476657600080fd5b61477285828601614221565b90969095509350505050565b602080825282516101408383015280516101608401529081015161018083015260408101516101a083015260608101516101c08301526080015160a06101e08301526000906147d16102008401826146a3565b905060208401516147ef604085018280518252602090810151910152565b506040840151805160808581019190915260209182015160a08601526060860151805160c087015282015160e0860152850151805173ffffffffffffffffffffffffffffffffffffffff1661010086015280820151805161012087015290910151610140850152509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8281526040602082015260006108af60408301846146a3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610a2e57610a2e6148a6565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614919576149196148a6565b5060010190565b81810381811115610a2e57610a2e6148a6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee183360301811261499657600080fd5b9190910192915050565b8183823760009101908152919050565b82151581526040602082015260006108af60408301846146a3565b600080858511156149db57600080fd5b838611156149e857600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008135818116916014851015614a355780818660140360031b1b83161692505b505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006108af602083018486614a3d565b600060208284031215614aac57600080fd5b81516139bc8161410d565b65ffffffffffff818116838216019080821115614ad657614ad66148a6565b5092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614b1257600080fd5b83018035915067ffffffffffffffff821115614b2d57600080fd5b60200191503681900382131561426357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261499657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614bab57600080fd5b83018035915067ffffffffffffffff821115614bc657600080fd5b6020019150600581901b360382131561426357600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614c1357600080fd5b830160208101925035905067ffffffffffffffff811115614c3357600080fd5b80360382131561426357600080fd5b6000610120614c6e84614c548561412f565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208301356020850152614c856040840184614bde565b826040870152614c988387018284614a3d565b92505050614ca96060840184614bde565b8583036060870152614cbc838284614a3d565b925050506080830135608085015260a083013560a085015260c083013560c0850152614ceb60e0840184614bde565b85830360e0870152614cfe838284614a3d565b92505050610100614d1181850185614bde565b86840383880152614d23848284614a3d565b979650505050505050565b6040808252810184905260006060600586901b830181019083018783805b89811015614dce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18c3603018112614dac578283fd5b614db8868d8301614c42565b9550506020938401939290920191600101614d4c565b505050508281036020840152614d23818587614a3d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060038610614e4d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b85825260806020830152614e6460808301866146a3565b6040830194909452506060015292915050565b6020815260006139bc60208301846146a3565b604081526000614e9d6040830185614c42565b90508260208301529392505050565b8051805173ffffffffffffffffffffffffffffffffffffffff1683526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c084015260e0810151614f2b60e085018273ffffffffffffffffffffffffffffffffffffffff169052565b5061010081810151908401526101209081015190830152602081015161014083015260408101516101608301526060810151610180830152608001516101a090910152565b6000610200808352614f84818401876146a3565b9050614f936020840186614eac565b8281036101e0840152614fa681856146a3565b9695505050505050565b6000610200808352614fc58184018789614a3d565b9050614fd46020840186614eac565b8281036101e0840152614d2381856146a3565b606081526000614ffb606083018789614a3d565b73ffffffffffffffffffffffffffffffffffffffff86166020840152828103604084015261502a818587614a3d565b98975050505050505050565b600060033d111561504f5760046000803e5060005160e01c5b90565b600060443d10156150605790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156150ae57505050505090565b82850191508151818111156150c65750505050505090565b843d87010160208285010111156150e05750505050505090565b6150ef60208286010187614052565b509095945050505050565b60608152600061510d6060830186614c42565b60208301949094525060400152919050565b60006020828403121561513157600080fd5b5051919050565b82815260606020820152600d60608201527f4141323320726576657274656400000000000000000000000000000000000000608082015260a0604082015260006108af60a08301846146a3565b6000806040838503121561519857600080fd5b825167ffffffffffffffff8111156151af57600080fd5b8301601f810185136151c057600080fd5b80516151cb816140c7565b6040516151d88282614052565b8281528760208486010111156151ed57600080fd5b6151fe83602083016020870161467f565b6020969096015195979596505050505050565b82815260606020820152600d60608201527f4141333320726576657274656400000000000000000000000000000000000000608082015260a0604082015260006108af60a08301846146a3565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008135818116916010851015614a355760109490940360031b84901b169092169291505056fea2646970667358221220de05860bb0e7d51602d68c6a114b6a6b1814d59585e487c28be89f0d4af007a364736f6c63430008170033608060405234801561001057600080fd5b50610213806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063570e1a3614610030575b600080fd5b61004361003e3660046100f9565b61006c565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60008061007c601482858761016b565b61008591610195565b60601c90506000610099846014818861016b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525084519495509360209350849250905082850182875af190506000519350806100f057600093505b50505092915050565b6000806020838503121561010c57600080fd5b823567ffffffffffffffff8082111561012457600080fd5b818501915085601f83011261013857600080fd5b81358181111561014757600080fd5b86602082850101111561015957600080fd5b60209290920196919550909350505050565b6000808585111561017b57600080fd5b8386111561018857600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156101d55780818660140360031b1b83161692505b50509291505056fea26469706673582212204d4d792be653535745d2f0897b9fc8feed690aae4dea5ee45c439a5e15a06dc564736f6c63430008170033"; + +export const _deployedBytecode = "0x60806040526004361061012d5760003560e01c8063765e827f116100ab578063b760faf91161006f578063b760faf9146104ab578063bb9fe6bf146104be578063c23a5cea146104d3578063c3bce009146104f3578063dbed18e014610520578063fc7e286d1461054057600080fd5b8063765e827f146103fe578063850aaf621461041e578063957122ab1461043e57806397b2dcb91461045e5780639b249f691461048b57600080fd5b8063205c2878116100f2578063205c28781461021057806322cdde4c1461023057806335567e1a146102505780635287ce12146102b057806370a08231146103c857600080fd5b806242dc531461014257806301ffc9a7146101755780630396cb60146101a55780630bd28e3b146101b85780631b2e01b8146101d857600080fd5b3661013d5761013b336105e8565b005b600080fd5b34801561014e57600080fd5b5061016261015d366004613417565b610609565b6040519081526020015b60405180910390f35b34801561018157600080fd5b506101956101903660046134dc565b610794565b604051901515815260200161016c565b61013b6101b3366004613506565b61081c565b3480156101c457600080fd5b5061013b6101d3366004613543565b610aab565b3480156101e457600080fd5b506101626101f336600461355e565b600160209081526000928352604080842090915290825290205481565b34801561021c57600080fd5b5061013b61022b366004613593565b610ae2565b34801561023c57600080fd5b5061016261024b3660046135d8565b610c33565b34801561025c57600080fd5b5061016261026b36600461355e565b6001600160a01b03821660009081526001602090815260408083206001600160c01b038516845290915290819020549082901b67ffffffffffffffff19161792915050565b3480156102bc57600080fd5b5061036d6102cb36600461360c565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b031660009081526020818152604091829020825160a0810184528154815260019091015460ff811615159282019290925261010082046001600160701b031692810192909252600160781b810463ffffffff166060830152600160981b900465ffffffffffff16608082015290565b60405161016c9190600060a082019050825182526020830151151560208301526001600160701b03604084015116604083015263ffffffff606084015116606083015265ffffffffffff608084015116608083015292915050565b3480156103d457600080fd5b506101626103e336600461360c565b6001600160a01b031660009081526020819052604090205490565b34801561040a57600080fd5b5061013b61041936600461366d565b610c75565b34801561042a57600080fd5b5061013b6104393660046136c3565b610df1565b34801561044a57600080fd5b5061013b610459366004613717565b610e70565b34801561046a57600080fd5b5061047e61047936600461379b565b610f6d565b60405161016c919061384c565b34801561049757600080fd5b5061013b6104a636600461389b565b61109f565b61013b6104b936600461360c565b6105e8565b3480156104ca57600080fd5b5061013b61114a565b3480156104df57600080fd5b5061013b6104ee36600461360c565b61127e565b3480156104ff57600080fd5b5061051361050e3660046135d8565b6114a2565b60405161016c91906138dc565b34801561052c57600080fd5b5061013b61053b36600461366d565b611658565b34801561054c57600080fd5b506105a561055b36600461360c565b6000602081905290815260409020805460019091015460ff81169061010081046001600160701b031690600160781b810463ffffffff1690600160981b900465ffffffffffff1685565b6040805195865293151560208601526001600160701b039092169284019290925263ffffffff909116606083015265ffffffffffff16608082015260a00161016c565b60015b60058110156105fc576001016105eb565b61060582611a71565b5050565b6000805a90503330146106635760405162461bcd60e51b815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c7900000000000000000060448201526064015b60405180910390fd5b8451606081015160a082015181016127100160405a603f0281610688576106886139af565b0410156106a05763deaddead60e01b60005260206000fd5b8751600090156107345760006106bd846000015160008c86611aba565b9050806107325760006106d1610800611ad2565b80519091501561072c5784600001516001600160a01b03168a602001517f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a2018760200151846040516107239291906139c5565b60405180910390a35b60019250505b505b600088608001515a8603019050610784828a8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250611afe915050565b955050505050505b949350505050565b60006001600160e01b0319821663307e35b760e11b14806107c557506001600160e01b0319821663122a0e9b60e31b145b806107e057506001600160e01b0319821663cf28ef9760e01b145b806107fb57506001600160e01b03198216633e84f02160e01b145b8061081657506301ffc9a760e01b6001600160e01b03198316145b92915050565b33600090815260208190526040902063ffffffff821661087e5760405162461bcd60e51b815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c6179000000000000604482015260640161065a565b600181015463ffffffff600160781b909104811690831610156108e35760405162461bcd60e51b815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d6500000000604482015260640161065a565b600181015460009061090490349061010090046001600160701b03166139f4565b90506000811161094b5760405162461bcd60e51b81526020600482015260126024820152711b9bc81cdd185ad9481cdc1958da599a595960721b604482015260640161065a565b6001600160701b038111156109935760405162461bcd60e51b815260206004820152600e60248201526d7374616b65206f766572666c6f7760901b604482015260640161065a565b6040805160a08101825283548152600160208083018281526001600160701b0386811685870190815263ffffffff8a811660608801818152600060808a0181815233808352828a52918c90209a518b55965199909801805494519151965165ffffffffffff16600160981b0265ffffffffffff60981b1997909416600160781b029690961669ffffffffffffffffffff60781b1991909516610100026effffffffffffffffffffffffffff0019991515999099166effffffffffffffffffffffffffffff1990941693909317979097179190911691909117179055835185815290810192909252917fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01910160405180910390a2505050565b3360009081526001602090815260408083206001600160c01b03851684529091528120805491610ada83613a07565b919050555050565b3360009081526020819052604090208054821115610b425760405162461bcd60e51b815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c6172676500000000000000604482015260640161065a565b8054610b4f908390613a20565b8155604080516001600160a01b03851681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb910160405180910390a26000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114610be2576040519150601f19603f3d011682016040523d82523d6000602084013e610be7565b606091505b5050905080610c2d5760405162461bcd60e51b81526020600482015260126024820152716661696c656420746f20776974686472617760701b604482015260640161065a565b50505050565b6000610c3e82611cc1565b6040805160208101929092523090820152466060820152608001604051602081830303815290604052805190602001209050919050565b610c7d611cda565b816000816001600160401b03811115610c9857610c98613211565b604051908082528060200260200182016040528015610cd157816020015b610cbe61308c565b815260200190600190039081610cb65790505b50905060005b82811015610d4a576000828281518110610cf357610cf3613a33565b60200260200101519050600080610d2e848a8a87818110610d1657610d16613a33565b9050602002810190610d289190613a49565b85611d02565b91509150610d3f8483836000611f08565b505050600101610cd7565b506040516000907fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972908290a160005b83811015610dd457610dc881888884818110610d9757610d97613a33565b9050602002810190610da99190613a49565b858481518110610dbb57610dbb613a33565b60200260200101516120a4565b90910190600101610d79565b50610ddf8482612360565b505050610dec6001600255565b505050565b600080846001600160a01b03168484604051610e0e929190613a6a565b600060405180830381855af49150503d8060008114610e49576040519150601f19603f3d011682016040523d82523d6000602084013e610e4e565b606091505b50915091508181604051632650415560e21b815260040161065a929190613a7a565b83158015610e8657506001600160a01b0383163b155b15610ed35760405162461bcd60e51b815260206004820152601960248201527f41413230206163636f756e74206e6f74206465706c6f79656400000000000000604482015260640161065a565b60148110610f4b576000610eea6014828486613a95565b610ef391613abf565b60601c9050803b600003610f495760405162461bcd60e51b815260206004820152601b60248201527f41413330207061796d6173746572206e6f74206465706c6f7965640000000000604482015260640161065a565b505b60405162461bcd60e51b8152602060048201526000602482015260440161065a565b610fa86040518060c0016040528060008152602001600081526020016000815260200160008152602001600015158152602001606081525090565b610fb0611cda565b610fb861308c565b610fc186612459565b600080610fd060008985611d02565b915091506000610fe260008a866120a4565b9050600060606001600160a01b038a161561105a57896001600160a01b03168989604051611011929190613a6a565b6000604051808303816000865af19150503d806000811461104e576040519150601f19603f3d011682016040523d82523d6000602084013e611053565b606091505b5090925090505b6040518060c0016040528087608001518152602001848152602001868152602001858152602001831515815260200182815250965050505050505061078c6001600255565b60006110b36006546001600160a01b031690565b6001600160a01b031663570e1a3684846040518363ffffffff1660e01b81526004016110e0929190613b1d565b6020604051808303816000875af11580156110ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111239190613b31565b604051633653dc0360e11b81526001600160a01b038216600482015290915060240161065a565b33600090815260208190526040812060018101549091600160781b90910463ffffffff1690036111a95760405162461bcd60e51b815260206004820152600a6024820152691b9bdd081cdd185ad95960b21b604482015260640161065a565b600181015460ff166111f15760405162461bcd60e51b8152602060048201526011602482015270616c726561647920756e7374616b696e6760781b604482015260640161065a565b600181015460009061121090600160781b900463ffffffff1642613b4e565b60018301805460ff65ffffffffffff60981b011916600160981b65ffffffffffff841690810260ff19169190911790915560405190815290915033907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a906020015b60405180910390a25050565b336000908152602081905260409020600181015461010090046001600160701b0316806112e45760405162461bcd60e51b81526020600482015260146024820152734e6f207374616b6520746f20776974686472617760601b604482015260640161065a565b6001820154600160981b900465ffffffffffff166113445760405162461bcd60e51b815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b652829206669727374000000604482015260640161065a565b600182015442600160981b90910465ffffffffffff1611156113a85760405162461bcd60e51b815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f74206475650000000000604482015260640161065a565b600182018054610100600160c81b0319169055604080516001600160a01b03851681526020810183905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda3910160405180910390a26000836001600160a01b03168260405160006040518083038185875af1925050503d806000811461144c576040519150601f19603f3d011682016040523d82523d6000602084013e611451565b606091505b5050905080610c2d5760405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b650000000000000000604482015260640161065a565b6114aa613124565b6114b261308c565b6114bb83612459565b6000806114ca60008685611d02565b9150915060006114e1846000015160e001516125a1565b8451519091506000906114f3906125a1565b9050611512604051806040016040528060008152602001600081525090565b36600061152260408b018b613b74565b909250905060006014821015611539576000611554565b611547601460008486613a95565b61155091613abf565b60601c5b905061155f816125a1565b9350505050600085905060006040518060a0016040528089608001518152602001896040015181526020018881526020018781526020016115a18a6060015190565b90526040805180820182526003546001600160a01b039081168252825180840190935260045483526005546020848101919091528201929092529192508316158015906115f857506001836001600160a01b031614155b15611625576040518060400160405280846001600160a01b03168152602001611620856125a1565b905290505b6040805160a081018252928352602083019590955293810192909252506060810192909252608082015295945050505050565b611660611cda565b816000805b828110156117cd573686868381811061168057611680613a33565b90506020028101906116929190613bba565b90503660006116a18380613bd0565b909250905060006116b8604085016020860161360c565b90506000196001600160a01b038216016117145760405162461bcd60e51b815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f72000000000000000000604482015260640161065a565b6001600160a01b038116156117b1576001600160a01b038116632dd8113384846117416040890189613b74565b6040518563ffffffff1660e01b81526004016117609493929190613d3d565b60006040518083038186803b15801561177857600080fd5b505afa925050508015611789575060015b6117b15760405163086a9f7560e41b81526001600160a01b038216600482015260240161065a565b6117bb82876139f4565b95505060019093019250611665915050565b506000816001600160401b038111156117e8576117e8613211565b60405190808252806020026020018201604052801561182157816020015b61180e61308c565b8152602001906001900390816118065790505b5090506000805b848110156118fe573688888381811061184357611843613a33565b90506020028101906118559190613bba565b90503660006118648380613bd0565b9092509050600061187b604085016020860161360c565b90508160005b818110156118ec57600089898151811061189d5761189d613a33565b602002602001015190506000806118c08b898987818110610d1657610d16613a33565b915091506118d084838389611f08565b8a6118da81613a07565b9b505060019093019250611881915050565b50506001909401935061182892505050565b506040517fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f97290600090a150600080805b85811015611a2c573689898381811061194957611949613a33565b905060200281019061195b9190613bba565b905061196d604082016020830161360c565b6001600160a01b03167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d60405160405180910390a23660006119af8380613bd0565b90925090508060005b81811015611a1b576119fa888585848181106119d6576119d6613a33565b90506020028101906119e89190613a49565b8b8b81518110610dbb57610dbb613a33565b611a0490886139f4565b965087611a1081613a07565b9850506001016119b8565b50506001909301925061192e915050565b506040516000907f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d908290a2611a628682612360565b5050505050610dec6001600255565b6000611a7d82346125f3565b9050816001600160a01b03167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c48260405161127291815260200190565b6000806000845160208601878987f195945050505050565b60603d82811115611ae05750815b604051602082018101604052818152816000602083013e9392505050565b6000805a855190915060009081611b1482612626565b60e08301519091506001600160a01b038116611b335782519350611bef565b809350600088511115611bef57868202955060028a6002811115611b5957611b59613dba565b14611bef5760a0830151604051637c627b2160e01b81526001600160a01b03831691637c627b2191611b95908e908d908c908990600401613dd0565b600060405180830381600088803b158015611baf57600080fd5b5087f193505050508015611bc1575060015b611bef576000611bd2610800611ad2565b905080604051632b5e552f60e21b815260040161065a9190613e1a565b5a60a0840151606085015160808c015192880399909901980190880380821115611c22576064600a828403020498909801975b50506040890151878302965086811015611c7e5760028b6002811115611c4a57611c4a613dba565b03611c6d57809650611c5b8a612650565b611c688a6000898b61269f565b611cb3565b63deadaa5160e01b60005260206000fd5b868103611c8b86826125f3565b506000808d6002811115611ca157611ca1613dba565b149050611cb08c828b8d61269f565b50505b505050505050949350505050565b6000611ccc8261271a565b805190602001209050919050565b6002805403611cfc57604051633ee5aeb560e01b815260040160405180910390fd5b60028055565b60008060005a8451909150611d1786826127d2565b611d2086610c33565b6020860152604081015161012082015161010083015160a08401516080850151606086015160c0870151861717171717176effffffffffffffffffffffffffffff811115611db05760405162461bcd60e51b815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f770000000000000000604482015260640161065a565b6000611ddf8460c081015160a08201516080830151606084015160408501516101009095015194010101010290565b9050611dee8a8a8a84876128e0565b9650611e0284600001518560200151612a77565b611e585789604051631101335b60e11b815260040161065a918152604060208201819052601a908201527f4141323520696e76616c6964206163636f756e74206e6f6e6365000000000000606082015260800190565b825a86031115611eb45789604051631101335b60e11b815260040161065a918152604060208201819052601e908201527f41413236206f76657220766572696669636174696f6e4761734c696d69740000606082015260800190565b60e08401516060906001600160a01b031615611edb57611ed68b8b8b85612ac4565b975090505b604089018290528060608a015260a08a01355a870301896080018181525050505050505050935093915050565b600080611f1485612c82565b91509150816001600160a01b0316836001600160a01b031614611f7a5785604051631101335b60e11b815260040161065a9181526040602082018190526014908201527320a0991a1039b4b3b730ba3ab9329032b93937b960611b606082015260800190565b8015611fd25785604051631101335b60e11b815260040161065a9181526040602082018190526017908201527f414132322065787069726564206f72206e6f7420647565000000000000000000606082015260800190565b6000611fdd85612c82565b925090506001600160a01b038116156120395786604051631101335b60e11b815260040161065a9181526040602082018190526014908201527320a0999a1039b4b3b730ba3ab9329032b93937b960611b606082015260800190565b811561209b5786604051631101335b60e11b815260040161065a9181526040602082018190526021908201527f41413332207061796d61737465722065787069726564206f72206e6f742064756060820152606560f81b608082015260a00190565b50505050505050565b6000805a905060006120b7846060015190565b60405190915060009036826120cf60608a018a613b74565b91509150606060008260038111156120e657843591505b506372288ed160e01b6001600160e01b03198216016121945760008b8b60200151604051602401612118929190613e2d565b60408051601f198184030181529181526020820180516001600160e01b0316638dd7712f60e01b1790525190915030906242dc539061215f9084908f908d90602401613ef9565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509250506121e9565b306001600160a01b03166242dc5385858d8b6040516024016121b99493929190613f39565b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505091505b602060008351602085016000305af195506000519850846040525050505050806123565760003d806020036122245760206000803e60005191505b5063deaddead60e01b81036122775787604051631101335b60e11b815260040161065a918152604060208201819052600f908201526e41413935206f7574206f662067617360881b606082015260800190565b63deadaa5160e01b81036122c857600086608001515a6122979087613a20565b6122a191906139f4565b60408801519091506122b288612650565b6122bf886000838561269f565b95506123549050565b855180516020808901519201516001600160a01b0390911691907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f47929061230f610800611ad2565b60405161231d9291906139c5565b60405180910390a3600086608001515a6123379087613a20565b61234191906139f4565b90506123506002888684611afe565b9550505b505b5050509392505050565b6001600160a01b0382166123b65760405162461bcd60e51b815260206004820152601860248201527f4141393020696e76616c69642062656e65666963696172790000000000000000604482015260640161065a565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612403576040519150601f19603f3d011682016040523d82523d6000602084013e612408565b606091505b5050905080610dec5760405162461bcd60e51b815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e656669636961727900604482015260640161065a565b6124cc6040516135a560f21b60208201526bffffffffffffffffffffffff193060601b166022820152600160f81b603682015260009060370160408051808303601f190181529190528051602090910120600680546001600160a01b0319166001600160a01b0390921691909117905550565b3063957122ab6124df6040840184613b74565b6124ec602086018661360c565b6124f960e0870187613b74565b6040518663ffffffff1660e01b8152600401612519959493929190613f70565b60006040518083038186803b15801561253157600080fd5b505afa925050508015612542575060015b61259e5761254e613fb2565b806308c379a0036125925750612562613fce565b8061256d5750612594565b80511561060557600081604051631101335b60e11b815260040161065a9291906139c5565b505b3d6000803e3d6000fd5b50565b604080518082018252600080825260208083018281526001600160a01b03959095168252819052919091206001015461010081046001600160701b03168252600160781b900463ffffffff1690915290565b6001600160a01b03821660009081526020819052604081208054829061261a9085906139f4565b91829055509392505050565b61010081015161012082015160009190808203612644575092915050565b61078c82488301612cd5565b80518051602080840151928101516040519081526001600160a01b0390921692917f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e910160405180910390a350565b835160e081015181516020808801519301516040516001600160a01b039384169492909316927f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f9161270c9189908990899093845291151560208401526040830152606082015260800190565b60405180910390a450505050565b606081356020830135600061273a6127356040870187613b74565b612ced565b9050600061274e6127356060880188613b74565b9050608086013560a087013560c0880135600061277161273560e08c018c613b74565b604080516001600160a01b039a909a1660208b015289810198909852606089019690965250608087019390935260a086019190915260c085015260e08401526101008084019190915281518084039091018152610120909201905292915050565b6127df602083018361360c565b6001600160a01b03168152602082810135908201526001600160801b036080808401358281166060850152811c604084015260a084013560c0808501919091528401359182166101008401521c61012082015236600061284260e0850185613b74565b909250905080156128c557603481101561289e5760405162461bcd60e51b815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e6444617461000000604482015260640161065a565b6128a88282612d00565b60a086015260808501526001600160a01b031660e0840152610c2d565b600060e084018190526080840181905260a084015250505050565b82518051600091906128ff88876128fa60408b018b613b74565b612d68565b60e082015160006001600160a01b038216612943576001600160a01b03831660009081526020819052604090205487811161293c5780880361293f565b60005b9150505b60208801516040516306608bdf60e21b81526001600160a01b038516916319822f7c918991612979918e91908790600401614057565b60206040518083038160008887f1935050505080156129b5575060408051601f3d908101601f191682019092526129b29181019061407c565b60015b6129e057896129c5610800611ad2565b6040516365c8fd4d60e01b815260040161065a929190614095565b94506001600160a01b038216612a6a576001600160a01b0383166000908152602081905260409020805480891115612a64578b604051631101335b60e11b815260040161065a9181526040602082018190526017908201527f41413231206469646e2774207061792070726566756e64000000000000000000606082015260800190565b88900390555b5050505095945050505050565b6001600160a01b038216600090815260016020908152604080832084821c80855292528220805484916001600160401b038316919085612ab683613a07565b909155501495945050505050565b60606000805a855160e08101516001600160a01b03811660009081526020819052604090208054939450919290919087811015612b4d578a604051631101335b60e11b815260040161065a918152604060208201819052601e908201527f41413331207061796d6173746572206465706f73697420746f6f206c6f770000606082015260800190565b8781038260000181905550600084608001519050836001600160a01b03166352b7512c828d8d602001518d6040518563ffffffff1660e01b8152600401612b9693929190614057565b60006040518083038160008887f193505050508015612bd757506040513d6000823e601f3d908101601f19168201604052612bd491908101906140d2565b60015b612c02578b612be7610800611ad2565b6040516365c8fd4d60e01b815260040161065a92919061415d565b9098509650805a87031115612c73578b604051631101335b60e11b815260040161065a9181526040602082018190526027908201527f41413336206f766572207061796d6173746572566572696669636174696f6e47606082015266185cd31a5b5a5d60ca1b608082015260a00190565b50505050505094509492505050565b60008082600003612c9857506000928392509050565b6000612ca38461301b565b9050806040015165ffffffffffff16421180612cca5750806020015165ffffffffffff1642105b905194909350915050565b6000818310612ce45781612ce6565b825b9392505050565b6000604051828085833790209392505050565b60008080612d116014828688613a95565b612d1a91613abf565b60601c612d2b602460148789613a95565b612d349161419a565b60801c612d4560346024888a613a95565b612d4e9161419a565b9194506001600160801b0316925060801c90509250925092565b8015610c2d578251516001600160a01b0381163b15612dd35784604051631101335b60e11b815260040161065a918152604060208201819052601f908201527f414131302073656e64657220616c726561647920636f6e737472756374656400606082015260800190565b6000612de76006546001600160a01b031690565b6001600160a01b031663570e1a3686600001516040015186866040518463ffffffff1660e01b8152600401612e1d929190613b1d565b60206040518083038160008887f1158015612e3c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e619190613b31565b90506001600160a01b038116612ec35785604051631101335b60e11b815260040161065a918152604060208201819052601b908201527f4141313320696e6974436f6465206661696c6564206f72204f4f470000000000606082015260800190565b816001600160a01b0316816001600160a01b031614612f2d5785604051631101335b60e11b815260040161065a91815260406020808301829052908201527f4141313420696e6974436f6465206d7573742072657475726e2073656e646572606082015260800190565b806001600160a01b03163b600003612f905785604051631101335b60e11b815260040161065a91815260406020808301829052908201527f4141313520696e6974436f6465206d757374206372656174652073656e646572606082015260800190565b6000612f9f6014828688613a95565b612fa891613abf565b60601c9050826001600160a01b031686602001517fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d83896000015160e0015160405161300a9291906001600160a01b0392831681529116602082015260400190565b60405180910390a350505050505050565b60408051606081018252600080825260208201819052918101919091528160a081901c65ffffffffffff8116600003613057575065ffffffffffff5b604080516060810182526001600160a01b03909316835260d09490941c602083015265ffffffffffff16928101929092525090565b6040518060a001604052806130ff60405180610140016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b8152602001600080191681526020016000815260200160008152602001600081525090565b6040518060a001604052806131616040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b8152602001613183604051806040016040528060008152602001600081525090565b81526020016131a5604051806040016040528060008152602001600081525090565b81526020016131c7604051806040016040528060008152602001600081525090565b81526020016131d46131d9565b905290565b604051806040016040528060006001600160a01b031681526020016131d4604051806040016040528060008152602001600081525090565b634e487b7160e01b600052604160045260246000fd5b60a081018181106001600160401b038211171561324657613246613211565b60405250565b601f8201601f191681016001600160401b038111828210171561327157613271613211565b6040525050565b60405161014081016001600160401b038111828210171561329b5761329b613211565b60405290565b60006001600160401b038211156132ba576132ba613211565b50601f01601f191660200190565b6001600160a01b038116811461259e57600080fd5b80356132e8816132c8565b919050565b60008183036101c081121561330157600080fd5b60405161330d81613227565b8092506101408083121561332057600080fd5b613328613278565b9250613333856132dd565b83526020850135602084015260408501356040840152606085013560608401526080850135608084015260a085013560a084015260c085013560c084015261337d60e086016132dd565b60e084015261010085810135908401526101208086013590840152918152908301356020820152610160830135604082015261018083013560608201526101a090920135608090920191909152919050565b60008083601f8401126133e157600080fd5b5081356001600160401b038111156133f857600080fd5b60208301915083602082850101111561341057600080fd5b9250929050565b600080600080610200858703121561342e57600080fd5b84356001600160401b038082111561344557600080fd5b818701915087601f83011261345957600080fd5b8135613464816132a1565b604051613471828261324c565b8281528a602084870101111561348657600080fd5b826020860160208301376000602084830101528098505050506134ac88602089016132ed565b94506101e08701359150808211156134c357600080fd5b506134d0878288016133cf565b95989497509550505050565b6000602082840312156134ee57600080fd5b81356001600160e01b031981168114612ce657600080fd5b60006020828403121561351857600080fd5b813563ffffffff81168114612ce657600080fd5b80356001600160c01b03811681146132e857600080fd5b60006020828403121561355557600080fd5b612ce68261352c565b6000806040838503121561357157600080fd5b823561357c816132c8565b915061358a6020840161352c565b90509250929050565b600080604083850312156135a657600080fd5b82356135b1816132c8565b946020939093013593505050565b600061012082840312156135d257600080fd5b50919050565b6000602082840312156135ea57600080fd5b81356001600160401b0381111561360057600080fd5b61078c848285016135bf565b60006020828403121561361e57600080fd5b8135612ce6816132c8565b60008083601f84011261363b57600080fd5b5081356001600160401b0381111561365257600080fd5b6020830191508360208260051b850101111561341057600080fd5b60008060006040848603121561368257600080fd5b83356001600160401b0381111561369857600080fd5b6136a486828701613629565b90945092505060208401356136b8816132c8565b809150509250925092565b6000806000604084860312156136d857600080fd5b83356136e3816132c8565b925060208401356001600160401b038111156136fe57600080fd5b61370a868287016133cf565b9497909650939450505050565b60008060008060006060868803121561372f57600080fd5b85356001600160401b038082111561374657600080fd5b61375289838a016133cf565b909750955060208801359150613767826132c8565b9093506040870135908082111561377d57600080fd5b5061378a888289016133cf565b969995985093965092949392505050565b600080600080606085870312156137b157600080fd5b84356001600160401b03808211156137c857600080fd5b6137d4888389016135bf565b9550602087013591506137e6826132c8565b909350604086013590808211156134c357600080fd5b60005b838110156138175781810151838201526020016137ff565b50506000910152565b600081518084526138388160208601602086016137fc565b601f01601f19169290920160200192915050565b60208152815160208201526020820151604082015260408201516060820152606082015160808201526080820151151560a0820152600060a083015160c08084015261078c60e0840182613820565b600080602083850312156138ae57600080fd5b82356001600160401b038111156138c457600080fd5b6138d0858286016133cf565b90969095509350505050565b602080825282516101408383015280516101608401529081015161018083015260408101516101a083015260608101516101c08301526080015160a06101e083015260009061392f610200840182613820565b9050602084015161394d604085018280518252602090810151910152565b506040840151805160808581019190915260209182015160a08601526060860151805160c087015282015160e086015285015180516001600160a01b031661010086015280820151805161012087015290910151610140850152509392505050565b634e487b7160e01b600052601260045260246000fd5b82815260406020820152600061078c6040830184613820565b634e487b7160e01b600052601160045260246000fd5b80820180821115610816576108166139de565b600060018201613a1957613a196139de565b5060010190565b81810381811115610816576108166139de565b634e487b7160e01b600052603260045260246000fd5b6000823561011e19833603018112613a6057600080fd5b9190910192915050565b8183823760009101908152919050565b821515815260406020820152600061078c6040830184613820565b60008085851115613aa557600080fd5b83861115613ab257600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015613aec5780818660140360031b1b83161692505b505092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600061078c602083018486613af4565b600060208284031215613b4357600080fd5b8151612ce6816132c8565b65ffffffffffff818116838216019080821115613b6d57613b6d6139de565b5092915050565b6000808335601e19843603018112613b8b57600080fd5b8301803591506001600160401b03821115613ba557600080fd5b60200191503681900382131561341057600080fd5b60008235605e19833603018112613a6057600080fd5b6000808335601e19843603018112613be757600080fd5b8301803591506001600160401b03821115613c0157600080fd5b6020019150600581901b360382131561341057600080fd5b6000808335601e19843603018112613c3057600080fd5b83016020810192503590506001600160401b03811115613c4f57600080fd5b80360382131561341057600080fd5b6000610120613c7d84613c70856132dd565b6001600160a01b03169052565b60208301356020850152613c946040840184613c19565b826040870152613ca78387018284613af4565b92505050613cb86060840184613c19565b8583036060870152613ccb838284613af4565b925050506080830135608085015260a083013560a085015260c083013560c0850152613cfa60e0840184613c19565b85830360e0870152613d0d838284613af4565b92505050610100613d2081850185613c19565b86840383880152613d32848284613af4565b979650505050505050565b6040808252810184905260006060600586901b830181019083018783805b89811015613da357868503605f190184528235368c900361011e19018112613d81578283fd5b613d8d868d8301613c5e565b9550506020938401939290920191600101613d5b565b505050508281036020840152613d32818587613af4565b634e487b7160e01b600052602160045260246000fd5b600060038610613df057634e487b7160e01b600052602160045260246000fd5b85825260806020830152613e076080830186613820565b6040830194909452506060015292915050565b602081526000612ce66020830184613820565b604081526000613e406040830185613c5e565b90508260208301529392505050565b805180516001600160a01b031683526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c084015260e0810151613eb460e08501826001600160a01b03169052565b5061010081810151908401526101209081015190830152602081015161014083015260408101516101608301526060810151610180830152608001516101a090910152565b6000610200808352613f0d81840187613820565b9050613f1c6020840186613e4f565b8281036101e0840152613f2f8185613820565b9695505050505050565b6000610200808352613f4e8184018789613af4565b9050613f5d6020840186613e4f565b8281036101e0840152613d328185613820565b606081526000613f84606083018789613af4565b6001600160a01b03861660208401528281036040840152613fa6818587613af4565b98975050505050505050565b600060033d1115613fcb5760046000803e5060005160e01c5b90565b600060443d1015613fdc5790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561400b57505050505090565b82850191508151818111156140235750505050505090565b843d870101602082850101111561403d5750505050505090565b61404c6020828601018761324c565b509095945050505050565b60608152600061406a6060830186613c5e565b60208301949094525060400152919050565b60006020828403121561408e57600080fd5b5051919050565b82815260606020820152600d60608201526c10504c8cc81c995d995c9d1959609a1b608082015260a06040820152600061078c60a0830184613820565b600080604083850312156140e557600080fd5b82516001600160401b038111156140fb57600080fd5b8301601f8101851361410c57600080fd5b8051614117816132a1565b604051614124828261324c565b82815287602084860101111561413957600080fd5b61414a8360208301602087016137fc565b6020969096015195979596505050505050565b82815260606020820152600d60608201526c10504cccc81c995d995c9d1959609a1b608082015260a06040820152600061078c60a0830184613820565b6fffffffffffffffffffffffffffffffff198135818116916010851015613aec5760109490940360031b84901b169092169291505056fea26469706673582212206610f8adc26902276d5fab81aee5c0147a30d9a747079784da0641d1ede15a4864736f6c63430008170033"; type EntryPointSimulationsConstructorParams = | [signer?: Signer] diff --git a/packages/types/src/contracts/EPv7/factories/core/EntryPoint__factory.ts b/packages/types/src/contracts/EPv7/factories/core/EntryPoint__factory.ts index 337776c4..c2f1ca16 100644 --- a/packages/types/src/contracts/EPv7/factories/core/EntryPoint__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/core/EntryPoint__factory.ts @@ -3,7 +3,7 @@ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../common"; +import type { PromiseOrValue } from "../../../common"; import type { EntryPoint, EntryPointInterface, @@ -319,6 +319,31 @@ const _abi = [ 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: [ @@ -595,14 +620,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -668,14 +688,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -753,14 +768,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -997,7 +1007,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a08060405234620000825760016002556101df8181016001600160401b038111838210176200006c57829162003dff833903906000f080156200006057608052604051613d779081620000888239608051818181610d2201526131a00152f35b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b600080fdfe60806040526004361015610024575b361561001957600080fd5b61002233612737565b005b60003560e01c806242dc5314611b0057806301ffc9a7146119ae57806302101e49146119485780630396cb60146116105780630bd28e3b146115945780631b2e01b814611500578063205c28781461136b57806335567e1a146112b35780635287ce12146111a55780636b21db5114610ee757806370a0823114610e82578063850aaf6214610dc35780639b249f6914610c74578063b760faf914610c3a578063bb9fe6bf14610a68578063c23a5cea146107c4578063ea8ad612146101a15763fc7e286d0361000e573461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61013a61228f565b16600052600060205260a0604060002065ffffffffffff6001825492015460405192835260ff8116151560208401526dffffffffffffffffffffffffffff8160081c16604084015263ffffffff8160781c16606084015260981c166080820152f35b600080fd5b3461019c576101af36612307565b906101b86129b7565b60009160005b82811061056f57506101d08493612577565b6000805b8481106102fc5750507fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000809360005b81811061024757610240868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2613b3a565b6001600255005b6102a261025582848a612785565b73ffffffffffffffffffffffffffffffffffffffff61027660208301612819565b167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a2806127c5565b906000915b8083106102b957505050600101610209565b909194976102f36102ed6001926102e78c8b6102e0826102da8e8b8d61268c565b92612649565b5191613500565b906124e8565b996124f5565b950191906102a7565b6020610309828789612785565b61031f61031682806127c5565b93909201612819565b9160009273ffffffffffffffffffffffffffffffffffffffff8091165b8285106103505750505050506001016101d4565b909192939561037f83610378610366848c612649565b516103728b898b61268c565b856129f0565b9290613cab565b9116840361050a576104a5576103958491613cab565b9116610440576103b5576103aa6001916124f5565b96019392919061033c565b60a487604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608489604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b61057a818487612785565b9361058585806127c5565b919095602073ffffffffffffffffffffffffffffffffffffffff6105aa828401612819565b1697600192838a1461076657896105da575b5050505060019293949550906105d1916124e8565b939291016101be565b8060406105e892019061283a565b918a3b1561019c57929391906040519485937ffe96cf2300000000000000000000000000000000000000000000000000000000855288604486016040600488015252606490818601918a60051b8701019680936000915b8c83106106e657505050505050838392610684927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc85600098030160248601526126f8565b03818a5afa90816106d7575b506106c657602486604051907f86a9f7500000000000000000000000000000000000000000000000000000000082526004820152fd5b93945084936105d1600189806105bc565b6106e0906121ad565b88610690565b91939596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c908a9294969a0301865288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec18336030181121561019c57836107538793858394016128db565b9a0196019301909189979695949261063f565b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b3461019c576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576107fc61228f565b33600052600082526001604060002001908154916dffffffffffffffffffffffffffff8360081c16928315610a0a5765ffffffffffff8160981c1680156109ac57421061094e5760009373ffffffffffffffffffffffffffffffffffffffff859485947fffffffffffffff000000000000000000000000000000000000000000000000ff86951690556040517fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda33391806108da8786836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a2165af16108e861252f565b50156108f057005b606490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b3461019c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c573360005260006020526001604060002001805463ffffffff8160781c16908115610bdc5760ff1615610b7e5765ffffffffffff908142160191818311610b4f5780547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001678ffffffffffff00000000000000000000000000000000000000609885901b161790556040519116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a2005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610022610c6f61228f565b612737565b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043567ffffffffffffffff811161019c576020610cc8610d1b9236906004016122b2565b919073ffffffffffffffffffffffffffffffffffffffff9260405194859283927f570e1a3600000000000000000000000000000000000000000000000000000000845285600485015260248401916126f8565b03816000857f0000000000000000000000000000000000000000000000000000000000000000165af1908115610db757602492600092610d86575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b610da991925060203d602011610db0575b610da181836121dd565b8101906126cc565b9083610d56565b503d610d97565b6040513d6000823e3d90fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610dfa61228f565b60243567ffffffffffffffff811161019c57600091610e1e839236906004016122b2565b90816040519283928337810184815203915af4610e3961252f565b90610e7e6040519283927f99410554000000000000000000000000000000000000000000000000000000008452151560048401526040602484015260448301906123b6565b0390fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff610ece61228f565b1660005260006020526020604060002054604051908152f35b3461019c57610ef536612307565b610f009291926129b7565b610f0983612577565b60005b848110610f8157506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000915b858310610f51576102408585613b3a565b909193600190610f77610f6587898761268c565b610f6f8886612649565b519088613500565b0194019190610f40565b610fac610fa5610f9383859795612649565b51610f9f84898761268c565b846129f0565b9190613cab565b73ffffffffffffffffffffffffffffffffffffffff92918316611140576110db57610fd690613cab565b911661107657610feb57600101929092610f0c565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608483604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff6111f161228f565b6000608060405161120181612145565b828152826020820152826040820152826060820152015216600052600060205260a06040600020608060405161123681612145565b6001835493848352015490602081019060ff8316151582526dffffffffffffffffffffffffffff60408201818560081c16815263ffffffff936060840193858760781c16855265ffffffffffff978891019660981c1686526040519788525115156020880152511660408601525116606084015251166080820152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760206112ec61228f565b73ffffffffffffffffffffffffffffffffffffffff6113096122e0565b911660005260018252604060002077ffffffffffffffffffffffffffffffffffffffffffffffff821660005282526040600020547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576113a261228f565b602435903360005260006020526040600020908154918284116114a2576000808573ffffffffffffffffffffffffffffffffffffffff829583956113e6848a612522565b90556040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af161143c61252f565b501561144457005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761153761228f565b73ffffffffffffffffffffffffffffffffffffffff6115546122e0565b9116600052600160205277ffffffffffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043577ffffffffffffffffffffffffffffffffffffffffffffffff811680910361019c57336000526001602052604060002090600052602052604060002061160c81546124f5565b9055005b6020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043563ffffffff9182821680920361019c57336000526000815260406000209282156118ea576001840154908160781c16831061188c576116926dffffffffffffffffffffffffffff9182349160081c166124e8565b93841561182e578185116117d0579065ffffffffffff61179f9254604051906116ba82612145565b8152848101926001845260408201908816815260608201878152600160808401936000855233600052600089526040600020905181550194511515917fffffffffffffffffffffffffff0000000000000000000000000000000000000060ff72ffffffff0000000000000000000000000000006effffffffffffffffffffffffffff008954945160081b16945160781b1694169116171717835551167fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff78ffffffffffff0000000000000000000000000000000000000083549260981b169116179055565b6040519283528201527fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c0160403392a2005b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b3461019c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60208136011261019c576004359067ffffffffffffffff821161019c5761014090823603011261019c576119a66020916004016123f9565b604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361019c57807f6c393cb70000000000000000000000000000000000000000000000000000000060209214908115611ad6575b8115611aac575b8115611a82575b8115611a58575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501482611a4d565b7f3e84f0210000000000000000000000000000000000000000000000000000000081149150611a46565b7fcf28ef970000000000000000000000000000000000000000000000000000000081149150611a3f565b7f9d9523010000000000000000000000000000000000000000000000000000000081149150611a38565b3461019c576102007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5767ffffffffffffffff60043581811161019c573660238201121561019c57611b62903690602481600401359101612258565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601916101c0831261019c5761014060405193611ba085612145565b1261019c5760405192611bb284612190565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361019c578452602093604435858201526064356040820152608435606082015260a435608082015260c43560a082015260e43560c08201526101043573ffffffffffffffffffffffffffffffffffffffff8116810361019c5760e082015261012435610100820152610144356101208201528152610164358482015260408101926101843584526101a43560608301526101c43560808301526101e43590811161019c57611c809036906004016122b2565b925a913033036120e7578351606081015192603f5a0260061c61271060a0840151860101116120be5760009381519182611fe4575b50505050611ccf91925a9003608085015101943691612258565b9160005a825195611cdf87613c5f565b9573ffffffffffffffffffffffffffffffffffffffff60e0890151168015600014611e8b57505073ffffffffffffffffffffffffffffffffffffffff875116915b5a90030194606087015160a0880151016080850151870390818111611e77575b505085029687815110611e13579087611d5b92510390613c2b565b506003831015611de657506080867f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f9201519273ffffffffffffffffffffffffffffffffffffffff865116948873ffffffffffffffffffffffffffffffffffffffff60e0890151169701519160405192835215898301528760408301526060820152a4604051908152f35b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b6084838a604051917f220266b600000000000000000000000000000000000000000000000000000000835260048301526040602483015260448201527f414135312070726566756e642062656c6f772061637475616c476173436f73746064820152fd5b6064919003600a0204909501948980611d40565b8093918051611e9c575b5050611d20565b6003881015611fb5576002880315611e955760a08a999897969c9b9a015191803b1561019c57889260009283611f10938b604051978896879586937f7c627b2100000000000000000000000000000000000000000000000000000000855260048501526080602485015260848401906123b6565b90808c02604484015260648301520393f19081611fa1575b50611f925789893d610800808211611f8a575b506040519282828501016040528184528284013e610e7e6040519283927fad7954bc000000000000000000000000000000000000000000000000000000008452600484015260248301906123b6565b905083611f3b565b98929394959697988a80611e95565b611fac919b506121ad565b6000998b611f28565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91600092918380938d73ffffffffffffffffffffffffffffffffffffffff885116910192f115612017575b808080611cb5565b611ccf92503d6108008082116120b6575b5060405190898183010160405280825260008a83013e805161204f575b505060019161200f565b7f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a2018980880151926120ac8273ffffffffffffffffffffffffffffffffffffffff8751169601519160408051948594855284015260408301906123b6565b0390a38780612045565b905089612028565b887fdeaddead000000000000000000000000000000000000000000000000000000006000526000fd5b606487604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b60a0810190811067ffffffffffffffff82111761216157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610140810190811067ffffffffffffffff82111761216157604052565b67ffffffffffffffff811161216157604052565b6060810190811067ffffffffffffffff82111761216157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761216157604052565b67ffffffffffffffff811161216157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926122648261221e565b9161227260405193846121dd565b82948184528183011161019c578281602093846000960137010152565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9181601f8401121561019c5782359167ffffffffffffffff831161019c576020838186019501011161019c57565b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261019c5760043567ffffffffffffffff9283821161019c578060238301121561019c57816004013593841161019c5760248460051b8301011161019c57602401919060243573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b60005b8381106123a65750506000910152565b8181015183820152602001612396565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936123f281518092818752878088019101612393565b0116010190565b6040906124088282018261283a565b90818451918237209061241e606082018261283a565b90818551918237209061010060e06124388284018461283a565b908188519182372092865194602086019673ffffffffffffffffffffffffffffffffffffffff833516885260208301358988015260608701526080860152608081013560a086015260a081013560c086015260c081013582860152013590830152610120908183015281526124ac81612190565b5190209080519060208201928352308183015246606083015260608252608082019082821067ffffffffffffffff831117612161575251902090565b91908201809211610b4f57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b4f5760010190565b91908203918211610b4f57565b3d1561255a573d906125408261221e565b9161254e60405193846121dd565b82523d6000602084013e565b606090565b67ffffffffffffffff81116121615760051b60200190565b906125818261255f565b60409061259160405191826121dd565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06125bf829561255f565b019160005b8381106125d15750505050565b60209082516125df81612145565b83516125ea81612190565b600081526000849181838201528187820152816060818184015260809282848201528260a08201528260c08201528260e082015282610100820152826101208201528652818587015281898701528501528301528286010152016125c4565b805182101561265d5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919081101561265d5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec18136030182121561019c570190565b9081602091031261019c575173ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b7f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4602073ffffffffffffffffffffffffffffffffffffffff6127793485613c2b565b936040519485521692a2565b919081101561265d5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18136030182121561019c570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c57602001918160051b3603831361019c57565b3573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c5760200191813603831361019c57565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561019c57016020813591019167ffffffffffffffff821161019c57813603831361019c57565b61014091813573ffffffffffffffffffffffffffffffffffffffff811680910361019c576129516129366129b49561299593855260208601356020860152612926604087018761288b565b90918060408801528601916126f8565b612943606086018661288b565b9085830360608701526126f8565b6080840135608084015260a084013560a084015260c084013560c084015260e084013560e08401526101006129888186018661288b565b91858403908601526126f8565b916129a6610120918281019061288b565b9290918185039101526126f8565b90565b60028054146129c65760028055565b60046040517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b9290916000925a908251813573ffffffffffffffffffffffffffffffffffffffff811680910361019c5781526020820135602082015260808201356fffffffffffffffffffffffffffffffff8116606083015260801c604082015260a082013560c082015261010060c08301358183015260e0830135610120830152612a788184018461283a565b80156134e45760348110613486578060141161019c578060241161019c5760341161019c57602481013560801c60a0840152601481013560801c60808401523560601c60e08301525b612aca836123f9565b60208601526effffffffffffffffffffffffffffff60c083015160408401511760608401511760808401511760e08501359060c08601359060a08601511717171161342857604082015160608301510160808301510160a08301510160c0830151019082015102845173ffffffffffffffffffffffffffffffffffffffff815116612b58604086018661283a565b80613139575b5050612bcd602073ffffffffffffffffffffffffffffffffffffffff60e085015116936000908515613107575b60400151828b01516000868b604051978896879586937f8803e45100000000000000000000000000000000000000000000000000000000855260048501613c89565b0393f1600091816130d3575b50612c81573d8b610800808311612c79575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141323320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123b6565b915082612beb565b911561304d575b509773ffffffffffffffffffffffffffffffffffffffff835116602084015190600052600160205260406000208160401c60005260205267ffffffffffffffff604060002091825492612cda846124f5565b90551603612fe85760609273ffffffffffffffffffffffffffffffffffffffff60e082015116612d9c575b5a860390608060408201519101510110612d3757506040850152606084015260809160a090910135905a900301910152565b608490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413430206f76657220766572696669636174696f6e4761734c696d697400006064820152fd5b9198969594939250965083519773ffffffffffffffffffffffffffffffffffffffff60e08a0151169889600052600060205260406000208054838110612f83579a6080600093859384612e2e9d9e9f0390550151908360208a015191604051809d819682957f703ae88f0000000000000000000000000000000000000000000000000000000084528c60048501613c89565b0393f19687600091600099612ef6575b50612ee6573d8a610800808311612ede575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141333320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123b6565b915082612e50565b9890919293949596979892612d05565b915097503d90816000823e612f0b82826121dd565b604081838101031261019c5780519067ffffffffffffffff821161019c57828101601f83830101121561019c578181015191612f468361221e565b93612f5460405195866121dd565b838552820160208483850101011161019c57602092612f7a918480870191850101612393565b01519738612e3e565b60848b604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b608490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152fd5b60005260006020526040600020805480841161306e57839003905538612c88565b60848b604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152fd5b9091506020813d6020116130ff575b816130ef602093836121dd565b8101031261019c57519038612bd9565b3d91506130e2565b9050836000526000825260406000205486811160001461312f5750604060005b919050612b8b565b6040908703613127565b823b6133c357604089510151602060405180927f570e1a360000000000000000000000000000000000000000000000000000000082528260048301528160008161318760248201898b6126f8565b039273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690f1908115610db7576000916133a4575b5073ffffffffffffffffffffffffffffffffffffffff81161561333f578373ffffffffffffffffffffffffffffffffffffffff8216036132da573b156132755760141161019c5781907fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d604060208b01519273ffffffffffffffffffffffffffffffffffffffff60e08d510151168251913560601c82526020820152a33880612b5e565b60848c604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152fd5b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313420696e6974436f6465206d7573742072657475726e2073656e6465726064820152fd5b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601b60448201527f4141313320696e6974436f6465206661696c6564206f72204f4f4700000000006064820152fd5b6133bd915060203d602011610db057610da181836121dd565b386131d1565b60848c604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b5050600060e083015260006080830152600060a0830152612ac1565b9092915a90606081015160006040938451977fffffffff0000000000000000000000000000000000000000000000000000000089613541606084018461283a565b8660038211613b32575b7f18ad2e12000000000000000000000000000000000000000000000000000000009416841487146139d95750505061361b916137069160208801516135a38a5193849360208501528b602485015260648401906128db565b90604483015203906135db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0928381018352826121dd565b6136fa89519485927e42dc5300000000000000000000000000000000000000000000000000000000602085015261020060248501526102248401906123b6565b6136c9604484018b60806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152886123b6565b039081018352826121dd565b6020928184809351910182305af160005198865215613728575b505050505050565b909192939495965060003d83146139cb575b7fdeaddead00000000000000000000000000000000000000000000000000000000036137c357608486868051917f220266b600000000000000000000000000000000000000000000000000000000835260048301526024820152600f60448201527f41413935206f7574206f662067617300000000000000000000000000000000006064820152fd5b613850908285969501518651907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f47928573ffffffffffffffffffffffffffffffffffffffff8451169301513d906108008083116139c3575b5089519188818401018b5280835260008984013e6138468a5192839283528b8a8401528b8301906123b6565b0390a35a90612522565b61386060808601918251906124e8565b935a95600081519761387189613c5f565b60e08a019873ffffffffffffffffffffffffffffffffffffffff98898b511680156000146139b2575050888b5116925b5a9003019560608b015160a08c015101905187039081811161399e575b5050850299848401908b82511061393c575082918b6138df92510390613c2b565b50611de65750918784926000847f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f97608097015198808c51169a51169a01519482519586528501528301526060820152a490388080808080613720565b60849088878051927f220266b60000000000000000000000000000000000000000000000000000000084526004840152602483015260448201527f414135312070726566756e642062656c6f772061637475616c476173436f73746064820152fd5b6064919003600a02049095019438806138be565b939051156138a157600094506138a1565b91503861381a565b50816000803e60005161373a565b613b2c945082935090613a21917e42dc53000000000000000000000000000000000000000000000000000000006020613b0095015261020060248601526102248501916126f8565b613acf604484018960806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152866123b6565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018a52896121dd565b87613706565b50813561354b565b73ffffffffffffffffffffffffffffffffffffffff168015613bcd57600080809381935af1613b6761252f565b5015613b6f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff166000526000602052613c5960406000209182546124e8565b80915590565b610120610100820151910151808214613c8557480180821015613c80575090565b905090565b5090565b613ca1604092959493956060835260608301906128db565b9460208201520152565b8015613d3857600060408051613cc0816121c1565b828152826020820152015273ffffffffffffffffffffffffffffffffffffffff811690604065ffffffffffff91828160a01c16908115613d30575b60d01c92825191613d0b836121c1565b8583528460208401521691829101524211908115613d2857509091565b905042109091565b839150613cfb565b5060009060009056fea2646970667358221220a3f34c8eb885624d87da44107c36f2d1bddefa9bc9b6823af3739aa553f9da4164736f6c6343000817003360808060405234610016576101c3908161001c8239f35b600080fdfe6080600436101561000f57600080fd5b6000803560e01c63570e1a361461002557600080fd5b3461018a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018a576004359167ffffffffffffffff9081841161018657366023850112156101865783600401358281116101825736602482870101116101825780601411610182577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec810192808411610155577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81600b8501160116830190838210908211176101555792846024819482600c60209a968b9960405286845289840196603889018837830101525193013560601c5af1908051911561014d575b5073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b90503861012e565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8380fd5b8280fd5b80fdfea2646970667358221220befd8ec3b6557ae54faf2c55b64cd20640e6d100ba22eb558d462f13df99aa0064736f6c63430008170033"; + "0x60a08060405234620000825760016002556101df8181016001600160401b038111838210176200006c57829162003f2b833903906000f080156200006057608052604051613ea39081620000888239608051818181610d22015261324b0152f35b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b600080fdfe60806040526004361015610024575b361561001957600080fd5b61002233612748565b005b60003560e01c806242dc5314611b0057806301ffc9a7146119ae5780630396cb60146116765780630bd28e3b146115fa5780631b2e01b814611566578063205c2878146113d157806322cdde4c1461136b57806335567e1a146112b35780635287ce12146111a557806370a0823114611140578063765e827f14610e82578063850aaf6214610dc35780639b249f6914610c74578063b760faf914610c3a578063bb9fe6bf14610a68578063c23a5cea146107c4578063dbed18e0146101a15763fc7e286d0361000e573461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61013a61229f565b16600052600060205260a0604060002065ffffffffffff6001825492015460405192835260ff8116151560208401526dffffffffffffffffffffffffffff8160081c16604084015263ffffffff8160781c16606084015260981c166080820152f35b600080fd5b3461019c576101af36612317565b906101b86129bd565b60009160005b82811061056f57506101d08493612588565b6000805b8481106102fc5750507fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000809360005b81811061024757610240868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2613ba7565b6001600255005b6102a261025582848a612796565b73ffffffffffffffffffffffffffffffffffffffff6102766020830161282a565b167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a2806127d6565b906000915b8083106102b957505050600101610209565b909194976102f36102ed6001926102e78c8b6102e0826102da8e8b8d61269d565b9261265a565b5191613597565b90612409565b99612416565b950191906102a7565b6020610309828789612796565b61031f61031682806127d6565b9390920161282a565b9160009273ffffffffffffffffffffffffffffffffffffffff8091165b8285106103505750505050506001016101d4565b909192939561037f83610378610366848c61265a565b516103728b898b61269d565b856129f6565b9290613dd7565b9116840361050a576104a5576103958491613dd7565b9116610440576103b5576103aa600191612416565b96019392919061033c565b60a487604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608489604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b61057a818487612796565b9361058585806127d6565b919095602073ffffffffffffffffffffffffffffffffffffffff6105aa82840161282a565b1697600192838a1461076657896105da575b5050505060019293949550906105d191612409565b939291016101be565b8060406105e892019061284b565b918a3b1561019c57929391906040519485937f2dd8113300000000000000000000000000000000000000000000000000000000855288604486016040600488015252606490818601918a60051b8701019680936000915b8c83106106e657505050505050838392610684927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8560009803016024860152612709565b03818a5afa90816106d7575b506106c657602486604051907f86a9f7500000000000000000000000000000000000000000000000000000000082526004820152fd5b93945084936105d1600189806105bc565b6106e0906121bd565b88610690565b91939596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c908a9294969a0301865288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18336030181121561019c57836107538793858394016128ec565b9a0196019301909189979695949261063f565b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b3461019c576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576107fc61229f565b33600052600082526001604060002001908154916dffffffffffffffffffffffffffff8360081c16928315610a0a5765ffffffffffff8160981c1680156109ac57421061094e5760009373ffffffffffffffffffffffffffffffffffffffff859485947fffffffffffffff000000000000000000000000000000000000000000000000ff86951690556040517fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda33391806108da8786836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a2165af16108e8612450565b50156108f057005b606490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b3461019c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c573360005260006020526001604060002001805463ffffffff8160781c16908115610bdc5760ff1615610b7e5765ffffffffffff908142160191818311610b4f5780547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001678ffffffffffff00000000000000000000000000000000000000609885901b161790556040519116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a2005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610022610c6f61229f565b612748565b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043567ffffffffffffffff811161019c576020610cc8610d1b9236906004016122c2565b919073ffffffffffffffffffffffffffffffffffffffff9260405194859283927f570e1a360000000000000000000000000000000000000000000000000000000084528560048501526024840191612709565b03816000857f0000000000000000000000000000000000000000000000000000000000000000165af1908115610db757602492600092610d86575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b610da991925060203d602011610db0575b610da181836121ed565b8101906126dd565b9083610d56565b503d610d97565b6040513d6000823e3d90fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610dfa61229f565b60243567ffffffffffffffff811161019c57600091610e1e839236906004016122c2565b90816040519283928337810184815203915af4610e39612450565b90610e7e6040519283927f99410554000000000000000000000000000000000000000000000000000000008452151560048401526040602484015260448301906123c6565b0390fd5b3461019c57610e9036612317565b610e9b9291926129bd565b610ea483612588565b60005b848110610f1c57506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000915b858310610eec576102408585613ba7565b909193600190610f12610f0087898761269d565b610f0a888661265a565b519088613597565b0194019190610edb565b610f47610f40610f2e8385979561265a565b51610f3a84898761269d565b846129f6565b9190613dd7565b73ffffffffffffffffffffffffffffffffffffffff929183166110db5761107657610f7190613dd7565b911661101157610f8657600101929092610ea7565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608483604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61118c61229f565b1660005260006020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff6111f161229f565b6000608060405161120181612155565b828152826020820152826040820152826060820152015216600052600060205260a06040600020608060405161123681612155565b6001835493848352015490602081019060ff8316151582526dffffffffffffffffffffffffffff60408201818560081c16815263ffffffff936060840193858760781c16855265ffffffffffff978891019660981c1686526040519788525115156020880152511660408601525116606084015251166080820152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760206112ec61229f565b73ffffffffffffffffffffffffffffffffffffffff6113096122f0565b911660005260018252604060002077ffffffffffffffffffffffffffffffffffffffffffffffff821660005282526040600020547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b3461019c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60208136011261019c576004359067ffffffffffffffff821161019c5761012090823603011261019c576113c9602091600401612480565b604051908152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761140861229f565b60243590336000526000602052604060002090815491828411611508576000808573ffffffffffffffffffffffffffffffffffffffff8295839561144c848a612443565b90556040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af16114a2612450565b50156114aa57005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761159d61229f565b73ffffffffffffffffffffffffffffffffffffffff6115ba6122f0565b9116600052600160205277ffffffffffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043577ffffffffffffffffffffffffffffffffffffffffffffffff811680910361019c5733600052600160205260406000209060005260205260406000206116728154612416565b9055005b6020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043563ffffffff9182821680920361019c5733600052600081526040600020928215611950576001840154908160781c1683106118f2576116f86dffffffffffffffffffffffffffff9182349160081c16612409565b93841561189457818511611836579065ffffffffffff61180592546040519061172082612155565b8152848101926001845260408201908816815260608201878152600160808401936000855233600052600089526040600020905181550194511515917fffffffffffffffffffffffffff0000000000000000000000000000000000000060ff72ffffffff0000000000000000000000000000006effffffffffffffffffffffffffff008954945160081b16945160781b1694169116171717835551167fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff78ffffffffffff0000000000000000000000000000000000000083549260981b169116179055565b6040519283528201527fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c0160403392a2005b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361019c57807f60fc6b6e0000000000000000000000000000000000000000000000000000000060209214908115611ad6575b8115611aac575b8115611a82575b8115611a58575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501482611a4d565b7f3e84f0210000000000000000000000000000000000000000000000000000000081149150611a46565b7fcf28ef970000000000000000000000000000000000000000000000000000000081149150611a3f565b7f915074d80000000000000000000000000000000000000000000000000000000081149150611a38565b3461019c576102007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5767ffffffffffffffff60043581811161019c573660238201121561019c57611b62903690602481600401359101612268565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101c0811261019c5761014060405191611b9e83612155565b1261019c5760405192611bb0846121a0565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361019c578452602093604435858201526064356040820152608435606082015260a435608082015260c43560a082015260e43560c08201526101043573ffffffffffffffffffffffffffffffffffffffff8116810361019c5760e08201526101243561010082015261014435610120820152825261016435848301526101843560408301526101a43560608301526101c43560808301526101e43590811161019c57611c7c9036906004016122c2565b905a3033036120f7578351606081015195603f5a0260061c61271060a0840151890101116120ce5760009681519182611ff0575b5050505090611cca915a9003608085015101923691612268565b925a90600094845193611cdc85613ccc565b9173ffffffffffffffffffffffffffffffffffffffff60e0870151168015600014611ea957505073ffffffffffffffffffffffffffffffffffffffff855116935b5a9003019360a06060820151910151016080860151850390818111611e95575b50508302604085015192818410600014611dce5750506003811015611da157600203611d79576113c99293508093611d7481613d65565b613cf6565b5050507fdeadaa51000000000000000000000000000000000000000000000000000000008152fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b81611dde92979396940390613c98565b506003841015611e6857507f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f60808683015192519473ffffffffffffffffffffffffffffffffffffffff865116948873ffffffffffffffffffffffffffffffffffffffff60e0890151169701519160405192835215898301528760408301526060820152a46113c9565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b6064919003600a0204909301928780611d3d565b8095918051611eba575b5050611d1d565b6003861015611fc1576002860315611eb35760a088015190823b1561019c57600091611f2491836040519586809581947f7c627b210000000000000000000000000000000000000000000000000000000083528d60048401526080602484015260848301906123c6565b8b8b0260448301528b60648301520393f19081611fad575b50611fa65787893d610800808211611f9e575b506040519282828501016040528184528284013e610e7e6040519283927fad7954bc000000000000000000000000000000000000000000000000000000008452600484015260248301906123c6565b905083611f4f565b8980611eb3565b611fb89199506121bd565b6000978a611f3c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91600092918380938c73ffffffffffffffffffffffffffffffffffffffff885116910192f115612023575b808080611cb0565b611cca929195503d6108008082116120c6575b5060405190888183010160405280825260008983013e805161205f575b5050600194909161201b565b7f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a20188870151918973ffffffffffffffffffffffffffffffffffffffff8551169401516120bc604051928392835260408d84015260408301906123c6565b0390a38680612053565b905088612036565b877fdeaddead000000000000000000000000000000000000000000000000000000006000526000fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b60a0810190811067ffffffffffffffff82111761217157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610140810190811067ffffffffffffffff82111761217157604052565b67ffffffffffffffff811161217157604052565b6060810190811067ffffffffffffffff82111761217157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761217157604052565b67ffffffffffffffff811161217157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926122748261222e565b9161228260405193846121ed565b82948184528183011161019c578281602093846000960137010152565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9181601f8401121561019c5782359167ffffffffffffffff831161019c576020838186019501011161019c57565b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261019c5760043567ffffffffffffffff9283821161019c578060238301121561019c57816004013593841161019c5760248460051b8301011161019c57602401919060243573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b60005b8381106123b65750506000910152565b81810151838201526020016123a6565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612402815180928187528780880191016123a3565b0116010190565b91908201809211610b4f57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b4f5760010190565b91908203918211610b4f57565b3d1561247b573d906124618261222e565b9161246f60405193846121ed565b82523d6000602084013e565b606090565b604061248e8183018361284b565b90818351918237206124a3606084018461284b565b90818451918237209260c06124bb60e083018361284b565b908186519182372091845195602087019473ffffffffffffffffffffffffffffffffffffffff833516865260208301358789015260608801526080870152608081013560a087015260a081013582870152013560e08501526101009081850152835261012083019167ffffffffffffffff918484108385111761217157838252845190206101408501908152306101608601524661018086015260608452936101a00191821183831017612171575251902090565b67ffffffffffffffff81116121715760051b60200190565b9061259282612570565b6040906125a260405191826121ed565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06125d08295612570565b019160005b8381106125e25750505050565b60209082516125f081612155565b83516125fb816121a0565b600081526000849181838201528187820152816060818184015260809282848201528260a08201528260c08201528260e082015282610100820152826101208201528652818587015281898701528501528301528286010152016125d5565b805182101561266e5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919081101561266e5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18136030182121561019c570190565b9081602091031261019c575173ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b7f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4602073ffffffffffffffffffffffffffffffffffffffff61278a3485613c98565b936040519485521692a2565b919081101561266e5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18136030182121561019c570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c57602001918160051b3603831361019c57565b3573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c5760200191813603831361019c57565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561019c57016020813591019167ffffffffffffffff821161019c57813603831361019c57565b61012091813573ffffffffffffffffffffffffffffffffffffffff811680910361019c576129626129476129ba9561299b93855260208601356020860152612937604087018761289c565b9091806040880152860191612709565b612954606086018661289c565b908583036060870152612709565b6080840135608084015260a084013560a084015260c084013560c084015261298d60e085018561289c565b9084830360e0860152612709565b916129ac610100918281019061289c565b929091818503910152612709565b90565b60028054146129cc5760028055565b60046040517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b926000905a93805194843573ffffffffffffffffffffffffffffffffffffffff811680910361019c5786526020850135602087015260808501356fffffffffffffffffffffffffffffffff90818116606089015260801c604088015260a086013560c088015260c086013590811661010088015260801c610120870152612a8060e086018661284b565b801561357b576034811061351d578060141161019c578060241161019c5760341161019c57602481013560801c60a0880152601481013560801c60808801523560601c60e08701525b612ad285612480565b60208301526040860151946effffffffffffffffffffffffffffff8660c08901511760608901511760808901511760a0890151176101008901511761012089015117116134bf57604087015160608801510160808801510160a08801510160c0880151016101008801510296835173ffffffffffffffffffffffffffffffffffffffff81511690612b66604085018561284b565b806131e4575b505060e0015173ffffffffffffffffffffffffffffffffffffffff1690600082156131ac575b6020612bd7918b828a01516000868a604051978896879586937f19822f7c00000000000000000000000000000000000000000000000000000000855260048501613db5565b0393f160009181613178575b50612c8b573d8c610800808311612c83575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141323320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123c6565b915082612bf5565b9a92939495969798999a91156130f2575b509773ffffffffffffffffffffffffffffffffffffffff835116602084015190600052600160205260406000208160401c60005260205267ffffffffffffffff604060002091825492612cee84612416565b9055160361308d575a8503116130285773ffffffffffffffffffffffffffffffffffffffff60e0606093015116612d42575b509060a09184959697986040608096015260608601520135905a900301910152565b969550505a9683519773ffffffffffffffffffffffffffffffffffffffff60e08a01511680600052600060205260406000208054848110612fc3576080612dcd9a9b9c600093878094039055015192602089015183604051809d819582947f52b7512c0000000000000000000000000000000000000000000000000000000084528c60048501613db5565b039286f1978860009160009a612f36575b50612e86573d8b610800808311612e7e575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141333320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123c6565b915082612df0565b9991929394959697989998925a900311612eab57509096959094939291906080612d20565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602760448201527f41413336206f766572207061796d6173746572566572696669636174696f6e4760648201527f61734c696d6974000000000000000000000000000000000000000000000000006084820152fd5b915098503d90816000823e612f4b82826121ed565b604081838101031261019c5780519067ffffffffffffffff821161019c57828101601f83830101121561019c578181015191612f868361222e565b93612f9460405195866121ed565b838552820160208483850101011161019c57602092612fba9184808701918501016123a3565b01519838612dde565b60848b604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b608490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413236206f76657220766572696669636174696f6e4761734c696d697400006064820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152fd5b600052600060205260406000208054808c11613113578b9003905538612c9c565b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152fd5b9091506020813d6020116131a4575b81613194602093836121ed565b8101031261019c57519038612be3565b3d9150613187565b508060005260006020526040600020548a81116000146131d75750612bd7602060005b915050612b92565b6020612bd7918c036131cf565b833b61345a57604088510151602060405180927f570e1a360000000000000000000000000000000000000000000000000000000082528260048301528160008161323260248201898b612709565b039273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690f1908115610db75760009161343b575b5073ffffffffffffffffffffffffffffffffffffffff811680156133d6578503613371573b1561330c5760141161019c5773ffffffffffffffffffffffffffffffffffffffff9183887fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d604060e0958787602086015195510151168251913560601c82526020820152a391612b6c565b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152fd5b60848e604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313420696e6974436f6465206d7573742072657475726e2073656e6465726064820152fd5b60848f604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601b60448201527f4141313320696e6974436f6465206661696c6564206f72204f4f4700000000006064820152fd5b613454915060203d602011610db057610da181836121ed565b3861327c565b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b5050600060e087015260006080870152600060a0870152612ac9565b9092915a906060810151916040928351967fffffffff00000000000000000000000000000000000000000000000000000000886135d7606084018461284b565b600060038211613b9f575b7f8dd7712f0000000000000000000000000000000000000000000000000000000094168403613a445750505061379d6000926136b292602088015161363a8a5193849360208501528b602485015260648401906128ec565b90604483015203906136727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0928381018352826121ed565b61379189519485927e42dc5300000000000000000000000000000000000000000000000000000000602085015261020060248501526102248401906123c6565b613760604484018b60806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152876123c6565b039081018352826121ed565b6020918183809351910182305af1600051988652156137bf575b505050505050565b909192939495965060003d8214613a3a575b7fdeaddead00000000000000000000000000000000000000000000000000000000810361385b57608487878051917f220266b600000000000000000000000000000000000000000000000000000000835260048301526024820152600f60448201527f41413935206f7574206f662067617300000000000000000000000000000000006064820152fd5b7fdeadaa510000000000000000000000000000000000000000000000000000000091929395949650146000146138c55750506138a961389e6138b8935a90612443565b608085015190612409565b9083015183611d748295613d65565b905b3880808080806137b7565b909261395290828601518651907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f479273ffffffffffffffffffffffffffffffffffffffff9580878551169401516139483d610800808211613a32575b508a519084818301018c5280825260008583013e8a805194859485528401528a8301906123c6565b0390a35a90612443565b916139636080860193845190612409565b926000905a94829488519761397789613ccc565b948260e08b0151168015600014613a1857505050875116955b5a9003019560a06060820151910151019051860390818111613a04575b5050840290850151928184106000146139de57505080611e68575090816139d89293611d7481613d65565b906138ba565b6139ee9082849397950390613c98565b50611e68575090826139ff92613cf6565b6139d8565b6064919003600a02049094019338806139ad565b90919892509751613a2a575b50613990565b955038613a24565b905038613920565b8181803e516137d1565b613b97945082935090613a8c917e42dc53000000000000000000000000000000000000000000000000000000006020613b6b9501526102006024860152610224850191612709565b613b3a604484018860806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152846123c6565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018952886121ed565b60008761379d565b5081356135e2565b73ffffffffffffffffffffffffffffffffffffffff168015613c3a57600080809381935af1613bd4612450565b5015613bdc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff166000526000602052613cc66040600020918254612409565b80915590565b610120610100820151910151808214613cf257480180821015613ced575090565b905090565b5090565b9190917f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f6080602083015192519473ffffffffffffffffffffffffffffffffffffffff946020868851169660e089015116970151916040519283526000602084015260408301526060820152a4565b60208101519051907f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e60208073ffffffffffffffffffffffffffffffffffffffff855116940151604051908152a3565b613dcd604092959493956060835260608301906128ec565b9460208201520152565b8015613e6457600060408051613dec816121d1565b828152826020820152015273ffffffffffffffffffffffffffffffffffffffff811690604065ffffffffffff91828160a01c16908115613e5c575b60d01c92825191613e37836121d1565b8583528460208401521691829101524211908115613e5457509091565b905042109091565b839150613e27565b5060009060009056fea264697066735822122052e85c850273cd303b6d331b8bd89c3fd32d10a4b81cca818b10c82c0d73866264736f6c6343000817003360808060405234610016576101c3908161001c8239f35b600080fdfe6080600436101561000f57600080fd5b6000803560e01c63570e1a361461002557600080fd5b3461018a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018a576004359167ffffffffffffffff9081841161018657366023850112156101865783600401358281116101825736602482870101116101825780601411610182577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec810192808411610155577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81600b8501160116830190838210908211176101555792846024819482600c60209a968b9960405286845289840196603889018837830101525193013560601c5af1908051911561014d575b5073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b90503861012e565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8380fd5b8280fd5b80fdfea264697066735822122000b8a0795c5eae5c1809a029b16dcc5c2cdba4cc2da41140ae204c18e59ca3ea64736f6c63430008170033"; type EntryPointConstructorParams = | [signer?: Signer] diff --git a/packages/types/src/contracts/EPv7/factories/core/SenderCreator__factory.ts b/packages/types/src/contracts/EPv7/factories/core/SenderCreator__factory.ts index c902aec7..dc7756f6 100644 --- a/packages/types/src/contracts/EPv7/factories/core/SenderCreator__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/core/SenderCreator__factory.ts @@ -3,7 +3,7 @@ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../common"; +import type { PromiseOrValue } from "../../../common"; import type { SenderCreator, SenderCreatorInterface, @@ -32,7 +32,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b50610213806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063570e1a3614610030575b600080fd5b61004361003e3660046100f9565b61006c565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60008061007c601482858761016b565b61008591610195565b60601c90506000610099846014818861016b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525084519495509360209350849250905082850182875af190506000519350806100f057600093505b50505092915050565b6000806020838503121561010c57600080fd5b823567ffffffffffffffff8082111561012457600080fd5b818501915085601f83011261013857600080fd5b81358181111561014757600080fd5b86602082850101111561015957600080fd5b60209290920196919550909350505050565b6000808585111561017b57600080fd5b8386111561018857600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156101d55780818660140360031b1b83161692505b50509291505056fea264697066735822122066dd15b95e9110ee66d566d2a2c0e40e2cafbd78e21fd830b6f62cf2974a7c2664736f6c63430008170033"; + "0x608060405234801561001057600080fd5b50610213806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063570e1a3614610030575b600080fd5b61004361003e3660046100f9565b61006c565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60008061007c601482858761016b565b61008591610195565b60601c90506000610099846014818861016b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525084519495509360209350849250905082850182875af190506000519350806100f057600093505b50505092915050565b6000806020838503121561010c57600080fd5b823567ffffffffffffffff8082111561012457600080fd5b818501915085601f83011261013857600080fd5b81358181111561014757600080fd5b86602082850101111561015957600080fd5b60209290920196919550909350505050565b6000808585111561017b57600080fd5b8386111561018857600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156101d55780818660140360031b1b83161692505b50509291505056fea26469706673582212204d4d792be653535745d2f0897b9fc8feed690aae4dea5ee45c439a5e15a06dc564736f6c63430008170033"; type SenderCreatorConstructorParams = | [signer?: Signer] diff --git a/packages/types/src/contracts/EPv7/factories/core/UserOperationLib__factory.ts b/packages/types/src/contracts/EPv7/factories/core/UserOperationLib__factory.ts index 2ee9bd2d..252fde43 100644 --- a/packages/types/src/contracts/EPv7/factories/core/UserOperationLib__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/core/UserOperationLib__factory.ts @@ -3,7 +3,7 @@ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../common"; +import type { PromiseOrValue } from "../../../common"; import type { UserOperationLib, UserOperationLibInterface, @@ -52,7 +52,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a9610039600b82828239805160001a60731461002c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060475760003560e01c806325093e1b14604c578063b29a8ff4146065578063ede3150214606c575b600080fd5b6053602481565b60405190815260200160405180910390f35b6053601481565b605360348156fea26469706673582212207eb885030f7454c44eee5ea8e311ff7748488cfcfec2f17b24e781f105c0e0b764736f6c63430008170033"; + "0x60a9610039600b82828239805160001a60731461002c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060475760003560e01c806325093e1b14604c578063b29a8ff4146065578063ede3150214606c575b600080fd5b6053602481565b60405190815260200160405180910390f35b6053601481565b605360348156fea26469706673582212201f7a90647e46dab09f0fa420d36a18b554361fc1351ea9b36329880cdbd465a364736f6c63430008170033"; type UserOperationLibConstructorParams = | [signer?: Signer] diff --git a/packages/types/src/contracts/EPv7/factories/index.ts b/packages/types/src/contracts/EPv7/factories/index.ts index ae2ad7a9..80ab1f53 100644 --- a/packages/types/src/contracts/EPv7/factories/index.ts +++ b/packages/types/src/contracts/EPv7/factories/index.ts @@ -4,4 +4,3 @@ 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 index 1555f7c5..285d1e1f 100644 --- a/packages/types/src/contracts/EPv7/factories/interfaces/IAccountExecute__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IAccountExecute__factory.ts @@ -45,14 +45,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", diff --git a/packages/types/src/contracts/EPv7/factories/interfaces/IAccount__factory.ts b/packages/types/src/contracts/EPv7/factories/interfaces/IAccount__factory.ts index 17c6a47b..415a2b9e 100644 --- a/packages/types/src/contracts/EPv7/factories/interfaces/IAccount__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IAccount__factory.ts @@ -45,14 +45,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", diff --git a/packages/types/src/contracts/EPv7/factories/interfaces/IAggregator__factory.ts b/packages/types/src/contracts/EPv7/factories/interfaces/IAggregator__factory.ts index fbfddf2a..72691ca5 100644 --- a/packages/types/src/contracts/EPv7/factories/interfaces/IAggregator__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IAggregator__factory.ts @@ -45,14 +45,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -116,14 +111,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -186,14 +176,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", diff --git a/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPointSimulations__factory.ts b/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPointSimulations__factory.ts index 88161fca..0a28eed9 100644 --- a/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPointSimulations__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPointSimulations__factory.ts @@ -314,6 +314,31 @@ const _abi = [ 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: [ @@ -551,14 +576,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -624,14 +644,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -709,14 +724,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -792,14 +802,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -905,14 +910,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", diff --git a/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPoint__factory.ts b/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPoint__factory.ts index c94b86a0..3bf54591 100644 --- a/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPoint__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IEntryPoint__factory.ts @@ -314,6 +314,31 @@ const _abi = [ 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: [ @@ -551,14 +576,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -624,14 +644,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -709,14 +724,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", diff --git a/packages/types/src/contracts/EPv7/factories/interfaces/IPaymaster__factory.ts b/packages/types/src/contracts/EPv7/factories/interfaces/IPaymaster__factory.ts index 42932a17..40cc2036 100644 --- a/packages/types/src/contracts/EPv7/factories/interfaces/IPaymaster__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/interfaces/IPaymaster__factory.ts @@ -73,14 +73,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", diff --git a/packages/types/src/contracts/EPv7/factories/samples/LegacyTokenPaymaster__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/LegacyTokenPaymaster__factory.ts index 3ada26d8..8843b34e 100644 --- a/packages/types/src/contracts/EPv7/factories/samples/LegacyTokenPaymaster__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/samples/LegacyTokenPaymaster__factory.ts @@ -3,7 +3,7 @@ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../common"; +import type { PromiseOrValue } from "../../../common"; import type { LegacyTokenPaymaster, LegacyTokenPaymasterInterface, @@ -573,14 +573,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -658,7 +653,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620021b5380380620021b5833981016040819052620000349162000486565b81808233806200005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200006a81620000d4565b50620000768162000124565b6001600160a01b0316608052600462000090838262000613565b5060056200009f828262000613565b5050506001600160a01b03831660a052620000bc306001620001e7565b620000cb303360001962000225565b50505062000732565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516301ffc9a760e01b8152639d95230160e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801562000170573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001969190620006df565b620001e45760405162461bcd60e51b815260206004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d617463680000604482015260640162000056565b50565b6001600160a01b038216620002135760405163ec442f0560e01b81526000600482015260240162000056565b620002216000838362000239565b5050565b6200023483838360016200036c565b505050565b6001600160a01b038316620002685780600360008282546200025c91906200070a565b90915550620002dc9050565b6001600160a01b03831660009081526001602052604090205481811015620002bd5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000056565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216620002fa5760038054829003905562000319565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200035f91815260200190565b60405180910390a3505050565b6001600160a01b038416620003985760405163e602df0560e01b81526000600482015260240162000056565b6001600160a01b038316620003c457604051634a1406b160e11b81526000600482015260240162000056565b6001600160a01b03808516600090815260026020908152604080832093871683529290522082905580156200044257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516200043991815260200190565b60405180910390a35b50505050565b6001600160a01b0381168114620001e457600080fd5b634e487b7160e01b600052604160045260246000fd5b8051620004818162000448565b919050565b6000806000606084860312156200049c57600080fd5b8351620004a98162000448565b602085810151919450906001600160401b0380821115620004c957600080fd5b818701915087601f830112620004de57600080fd5b815181811115620004f357620004f36200045e565b604051601f8201601f19908116603f011681019083821181831017156200051e576200051e6200045e565b816040528281528a868487010111156200053757600080fd5b600093505b828410156200055b57848401860151818501870152928501926200053c565b60008684830101528097505050505050506200057a6040850162000474565b90509250925092565b600181811c908216806200059857607f821691505b602082108103620005b957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000234576000816000526020600020601f850160051c81016020861015620005ea5750805b601f850160051c820191505b818110156200060b57828155600101620005f6565b505050505050565b81516001600160401b038111156200062f576200062f6200045e565b620006478162000640845462000583565b84620005bf565b602080601f8311600181146200067f5760008415620006665750858301515b600019600386901b1c1916600185901b1785556200060b565b600085815260208120601f198616915b82811015620006b0578886015182559484019460019091019084016200068f565b5085821015620006cf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620006f257600080fd5b815180151581146200070357600080fd5b9392505050565b808201808211156200072c57634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a051611a2562000790600039600081816103aa01526114860152600081816103fe01528181610541015281816106b70152818161079901528181610866015281816108ef015281816109a20152610c710152611a256000f3fe60806040526004361061018b5760003560e01c80638da5cb5b116100d6578063c23a5cea1161007f578063dd62ed3e11610059578063dd62ed3e14610472578063f0dda65c146104c5578063f2fde38b146104e557600080fd5b8063c23a5cea14610435578063c399ec8814610455578063d0e30db01461046a57600080fd5b8063a9059cbb116100b0578063a9059cbb146103cc578063b0d691fe146103ec578063bb9fe6bf1461042057600080fd5b80638da5cb5b1461033757806395d89b41146103835780639f5ca2211461039857600080fd5b8063313ce56711610138578063715018a611610112578063715018a6146102ec578063796d4371146103015780637c627b211461031757600080fd5b8063313ce5671461025f578063703ae88f1461027b57806370a08231146102a957600080fd5b806318160ddd1161016957806318160ddd14610200578063205c28781461021f57806323b872dd1461023f57600080fd5b80630396cb601461019057806306fdde03146101a5578063095ea7b3146101d0575b600080fd5b6101a361019e366004611534565b610505565b005b3480156101b157600080fd5b506101ba6105b7565b6040516101c791906115c5565b60405180910390f35b3480156101dc57600080fd5b506101f06101eb3660046115fa565b610649565b60405190151581526020016101c7565b34801561020c57600080fd5b506003545b6040519081526020016101c7565b34801561022b57600080fd5b506101a361023a3660046115fa565b610663565b34801561024b57600080fd5b506101f061025a366004611626565b6106fb565b34801561026b57600080fd5b50604051601281526020016101c7565b34801561028757600080fd5b5061029b610296366004611667565b61071f565b6040516101c79291906116bb565b3480156102b557600080fd5b506102116102c43660046116dd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b3480156102f857600080fd5b506101a3610742565b34801561030d57600080fd5b50610211613a9881565b34801561032357600080fd5b506101a36103323660046116fa565b610756565b34801561034357600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c7565b34801561038f57600080fd5b506101ba610772565b3480156103a457600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d857600080fd5b506101f06103e73660046115fa565b610781565b3480156103f857600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561042c57600080fd5b506101a361078f565b34801561044157600080fd5b506101a36104503660046116dd565b610819565b34801561046157600080fd5b506102116108be565b6101a3610974565b34801561047e57600080fd5b5061021161048d366004611792565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b3480156104d157600080fd5b506101a36104e03660046115fa565b6109fc565b3480156104f157600080fd5b506101a36105003660046116dd565b610a12565b61050d610a7b565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b15801561059b57600080fd5b505af11580156105af573d6000803e3d6000fd5b505050505050565b6060600480546105c6906117cb565b80601f01602080910402602001604051908101604052809291908181526020018280546105f2906117cb565b801561063f5780601f106106145761010080835404028352916020019161063f565b820191906000526020600020905b81548152906001019060200180831161062257829003601f168201915b5050505050905090565b600033610657818585610ad3565b60019150505b92915050565b61066b610a7b565b6040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b15801561059b57600080fd5b600033610709858285610ae5565b610714858585610bae565b506001949350505050565b6060600061072b610c59565b610736858585610cf8565b91509150935093915050565b61074a610a7b565b6107546000610f5a565b565b61075e610c59565b61076b8585858585610fcf565b5050505050565b6060600580546105c6906117cb565b600033610657818585610bae565b610797610a7b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b50505050565b610821610a7b565b6040517fc23a5cea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b1580156108aa57600080fd5b505af115801561076b573d6000803e3d6000fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f919061181e565b905090565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99034906024016000604051808303818588803b1580156108aa57600080fd5b610a04610a7b565b610a0e8282611015565b5050565b610a1a610a7b565b610a4430610a3d60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000610ad3565b610a4d81611071565b610a7830827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ad3565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610754576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b610ae083838360016110d2565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108135781811015610b9f576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610aca565b610813848484840360006110d2565b73ffffffffffffffffffffffffffffffffffffffff8316610bfe576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b73ffffffffffffffffffffffffffffffffffffffff8216610c4e576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b610ae083838361121a565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e7400000000000000000000006044820152606401610aca565b6060600080610d06846113c5565b90506000610d20610d1b610100890189611837565b6113d2565b92505050613a988111610db5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f546f6b656e5061796d61737465723a2067617320746f6f206c6f7720666f722060448201527f706f73744f7000000000000000000000000000000000000000000000000000006064820152608401610aca565b610dc26040880188611837565b159050610e7657610dd287611443565b81610de36102c460208a018a6116dd565b1015610e71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f546f6b656e5061796d61737465723a206e6f2062616c616e636520287072652d60448201527f63726561746529000000000000000000000000000000000000000000000000006064820152608401610aca565b610eef565b81610e876102c460208a018a6116dd565b1015610eef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f546f6b656e5061796d61737465723a206e6f2062616c616e63650000000000006044820152606401610aca565b610efc60208801886116dd565b6040805173ffffffffffffffffffffffffffffffffffffffff909216602083015201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052976000975095505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610fdd848601866116dd565b90506000610fff610ff084613a986118d2565b610ffa90866118e9565b6113c5565b905061100c823083610bae565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611065576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b610a0e6000838361121a565b611079610a7b565b73ffffffffffffffffffffffffffffffffffffffff81166110c9576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b610a7881610f5a565b73ffffffffffffffffffffffffffffffffffffffff8416611122576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b73ffffffffffffffffffffffffffffffffffffffff8316611172576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526002602090815260408083209387168352929052208290558015610813578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161120c91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661125257806003600082825461124791906118e9565b909155506113049050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054818110156112d8576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610aca565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661132d57600380548290039055611359565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113b891815260200190565b60405180910390a3505050565b600061065d6064836118fc565b600080806113e36014828688611937565b6113ec91611961565b60601c6113fd602460148789611937565b611406916119a9565b60801c61141760346024888a611937565b611420916119a9565b9194506fffffffffffffffffffffffffffffffff16925060801c90509250925092565b60006114526040830183611837565b61146191601491600091611937565b61146a91611961565b60601c905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168114610a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f546f6b656e5061796d61737465723a2077726f6e67206163636f756e7420666160448201527f63746f72790000000000000000000000000000000000000000000000000000006064820152608401610aca565b60006020828403121561154657600080fd5b813563ffffffff8116811461155a57600080fd5b9392505050565b6000815180845260005b818110156115875760208185018101518683018201520161156b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061155a6020830184611561565b73ffffffffffffffffffffffffffffffffffffffff81168114610a7857600080fd5b6000806040838503121561160d57600080fd5b8235611618816115d8565b946020939093013593505050565b60008060006060848603121561163b57600080fd5b8335611646816115d8565b92506020840135611656816115d8565b929592945050506040919091013590565b60008060006060848603121561167c57600080fd5b833567ffffffffffffffff81111561169357600080fd5b840161014081870312156116a657600080fd5b95602085013595506040909401359392505050565b6040815260006116ce6040830185611561565b90508260208301529392505050565b6000602082840312156116ef57600080fd5b813561155a816115d8565b60008060008060006080868803121561171257600080fd5b85356003811061172157600080fd5b9450602086013567ffffffffffffffff8082111561173e57600080fd5b818801915088601f83011261175257600080fd5b81358181111561176157600080fd5b89602082850101111561177357600080fd5b9699602092909201985095966040810135965060600135945092505050565b600080604083850312156117a557600080fd5b82356117b0816115d8565b915060208301356117c0816115d8565b809150509250929050565b600181811c908216806117df57607f821691505b602082108103611818577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561183057600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261186c57600080fd5b83018035915067ffffffffffffffff82111561188757600080fd5b60200191503681900382131561189c57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761065d5761065d6118a3565b8082018082111561065d5761065d6118a3565b600082611932577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000808585111561194757600080fd5b8386111561195457600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156119a15780818660140360031b1b83161692505b505092915050565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081358181169160108510156119a15760109490940360031b84901b169092169291505056fea26469706673582212208ccc71efbbbc3bbbcb376b28cd3c0ce5a2deddaf60d3753fd9f6ecbfc1a84a6b64736f6c63430008170033"; + "0x60c06040523480156200001157600080fd5b506040516200216538038062002165833981016040819052620000349162000486565b81808233806200005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200006a81620000d4565b50620000768162000124565b6001600160a01b0316608052600462000090838262000613565b5060056200009f828262000613565b5050506001600160a01b03831660a052620000bc306001620001e7565b620000cb303360001962000225565b50505062000732565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516301ffc9a760e01b815263122a0e9b60e31b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801562000170573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001969190620006df565b620001e45760405162461bcd60e51b815260206004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d617463680000604482015260640162000056565b50565b6001600160a01b038216620002135760405163ec442f0560e01b81526000600482015260240162000056565b620002216000838362000239565b5050565b6200023483838360016200036c565b505050565b6001600160a01b038316620002685780600360008282546200025c91906200070a565b90915550620002dc9050565b6001600160a01b03831660009081526001602052604090205481811015620002bd5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000056565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216620002fa5760038054829003905562000319565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200035f91815260200190565b60405180910390a3505050565b6001600160a01b038416620003985760405163e602df0560e01b81526000600482015260240162000056565b6001600160a01b038316620003c457604051634a1406b160e11b81526000600482015260240162000056565b6001600160a01b03808516600090815260026020908152604080832093871683529290522082905580156200044257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516200043991815260200190565b60405180910390a35b50505050565b6001600160a01b0381168114620001e457600080fd5b634e487b7160e01b600052604160045260246000fd5b8051620004818162000448565b919050565b6000806000606084860312156200049c57600080fd5b8351620004a98162000448565b602085810151919450906001600160401b0380821115620004c957600080fd5b818701915087601f830112620004de57600080fd5b815181811115620004f357620004f36200045e565b604051601f8201601f19908116603f011681019083821181831017156200051e576200051e6200045e565b816040528281528a868487010111156200053757600080fd5b600093505b828410156200055b57848401860151818501870152928501926200053c565b60008684830101528097505050505050506200057a6040850162000474565b90509250925092565b600181811c908216806200059857607f821691505b602082108103620005b957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000234576000816000526020600020601f850160051c81016020861015620005ea5750805b601f850160051c820191505b818110156200060b57828155600101620005f6565b505050505050565b81516001600160401b038111156200062f576200062f6200045e565b620006478162000640845462000583565b84620005bf565b602080601f8311600181146200067f5760008415620006665750858301515b600019600386901b1c1916600185901b1785556200060b565b600085815260208120601f198616915b82811015620006b0578886015182559484019460019091019084016200068f565b5085821015620006cf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620006f257600080fd5b815180151581146200070357600080fd5b9392505050565b808201808211156200072c57634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a0516119d562000790600039600081816103aa01526114360152600081816103fe01528181610541015281816106b70152818161079901528181610866015281816108ef015281816109a20152610c7101526119d56000f3fe60806040526004361061018b5760003560e01c80638da5cb5b116100d6578063c23a5cea1161007f578063dd62ed3e11610059578063dd62ed3e14610472578063f0dda65c146104c5578063f2fde38b146104e557600080fd5b8063c23a5cea14610435578063c399ec8814610455578063d0e30db01461046a57600080fd5b8063a9059cbb116100b0578063a9059cbb146103cc578063b0d691fe146103ec578063bb9fe6bf1461042057600080fd5b80638da5cb5b1461033757806395d89b41146103835780639f5ca2211461039857600080fd5b8063313ce56711610138578063715018a611610112578063715018a6146102ec578063796d4371146103015780637c627b211461031757600080fd5b8063313ce5671461025f57806352b7512c1461027b57806370a08231146102a957600080fd5b806318160ddd1161016957806318160ddd14610200578063205c28781461021f57806323b872dd1461023f57600080fd5b80630396cb601461019057806306fdde03146101a5578063095ea7b3146101d0575b600080fd5b6101a361019e3660046114e4565b610505565b005b3480156101b157600080fd5b506101ba6105b7565b6040516101c79190611575565b60405180910390f35b3480156101dc57600080fd5b506101f06101eb3660046115aa565b610649565b60405190151581526020016101c7565b34801561020c57600080fd5b506003545b6040519081526020016101c7565b34801561022b57600080fd5b506101a361023a3660046115aa565b610663565b34801561024b57600080fd5b506101f061025a3660046115d6565b6106fb565b34801561026b57600080fd5b50604051601281526020016101c7565b34801561028757600080fd5b5061029b610296366004611617565b61071f565b6040516101c792919061166b565b3480156102b557600080fd5b506102116102c436600461168d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b3480156102f857600080fd5b506101a3610742565b34801561030d57600080fd5b50610211613a9881565b34801561032357600080fd5b506101a36103323660046116aa565b610756565b34801561034357600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c7565b34801561038f57600080fd5b506101ba610772565b3480156103a457600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d857600080fd5b506101f06103e73660046115aa565b610781565b3480156103f857600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561042c57600080fd5b506101a361078f565b34801561044157600080fd5b506101a361045036600461168d565b610819565b34801561046157600080fd5b506102116108be565b6101a3610974565b34801561047e57600080fd5b5061021161048d366004611742565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b3480156104d157600080fd5b506101a36104e03660046115aa565b6109fc565b3480156104f157600080fd5b506101a361050036600461168d565b610a12565b61050d610a7b565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b15801561059b57600080fd5b505af11580156105af573d6000803e3d6000fd5b505050505050565b6060600480546105c69061177b565b80601f01602080910402602001604051908101604052809291908181526020018280546105f29061177b565b801561063f5780601f106106145761010080835404028352916020019161063f565b820191906000526020600020905b81548152906001019060200180831161062257829003601f168201915b5050505050905090565b600033610657818585610ad3565b60019150505b92915050565b61066b610a7b565b6040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b15801561059b57600080fd5b600033610709858285610ae5565b610714858585610bae565b506001949350505050565b6060600061072b610c59565b610736858585610cf8565b91509150935093915050565b61074a610a7b565b6107546000610f4b565b565b61075e610c59565b61076b8585858585610fc0565b5050505050565b6060600580546105c69061177b565b600033610657818585610bae565b610797610a7b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b50505050565b610821610a7b565b6040517fc23a5cea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b1580156108aa57600080fd5b505af115801561076b573d6000803e3d6000fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f91906117ce565b905090565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99034906024016000604051808303818588803b1580156108aa57600080fd5b610a04610a7b565b610a0e8282611006565b5050565b610a1a610a7b565b610a4430610a3d60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000610ad3565b610a4d81611062565b610a7830827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ad3565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610754576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b610ae083838360016110c3565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108135781811015610b9f576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610aca565b610813848484840360006110c3565b73ffffffffffffffffffffffffffffffffffffffff8316610bfe576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b73ffffffffffffffffffffffffffffffffffffffff8216610c4e576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b610ae083838361120b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e7400000000000000000000006044820152606401610aca565b6060600080610d06846113b6565b90506000610d13876113c3565b9050613a988111610da6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f546f6b656e5061796d61737465723a2067617320746f6f206c6f7720666f722060448201527f706f73744f7000000000000000000000000000000000000000000000000000006064820152608401610aca565b610db360408801886117e7565b159050610e6757610dc3876113f3565b81610dd46102c460208a018a61168d565b1015610e62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f546f6b656e5061796d61737465723a206e6f2062616c616e636520287072652d60448201527f63726561746529000000000000000000000000000000000000000000000000006064820152608401610aca565b610ee0565b81610e786102c460208a018a61168d565b1015610ee0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f546f6b656e5061796d61737465723a206e6f2062616c616e63650000000000006044820152606401610aca565b610eed602088018861168d565b6040805173ffffffffffffffffffffffffffffffffffffffff909216602083015201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052976000975095505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610fce8486018661168d565b90506000610ff0610fe184613a98611882565b610feb9086611899565b6113b6565b9050610ffd823083610bae565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611056576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b610a0e6000838361120b565b61106a610a7b565b73ffffffffffffffffffffffffffffffffffffffff81166110ba576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b610a7881610f4b565b73ffffffffffffffffffffffffffffffffffffffff8416611113576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b73ffffffffffffffffffffffffffffffffffffffff8316611163576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610aca565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526002602090815260408083209387168352929052208290558015610813578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516111fd91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83166112435780600360008282546112389190611899565b909155506112f59050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054818110156112c9576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610aca565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661131e5760038054829003905561134a565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113a991815260200190565b60405180910390a3505050565b600061065d6064836118ac565b60006113d260e08301836117e7565b6113e1916034916024916118e7565b6113ea91611911565b60801c92915050565b600061140260408301836117e7565b611411916014916000916118e7565b61141a91611959565b60601c905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168114610a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f546f6b656e5061796d61737465723a2077726f6e67206163636f756e7420666160448201527f63746f72790000000000000000000000000000000000000000000000000000006064820152608401610aca565b6000602082840312156114f657600080fd5b813563ffffffff8116811461150a57600080fd5b9392505050565b6000815180845260005b818110156115375760208185018101518683018201520161151b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061150a6020830184611511565b73ffffffffffffffffffffffffffffffffffffffff81168114610a7857600080fd5b600080604083850312156115bd57600080fd5b82356115c881611588565b946020939093013593505050565b6000806000606084860312156115eb57600080fd5b83356115f681611588565b9250602084013561160681611588565b929592945050506040919091013590565b60008060006060848603121561162c57600080fd5b833567ffffffffffffffff81111561164357600080fd5b8401610120818703121561165657600080fd5b95602085013595506040909401359392505050565b60408152600061167e6040830185611511565b90508260208301529392505050565b60006020828403121561169f57600080fd5b813561150a81611588565b6000806000806000608086880312156116c257600080fd5b8535600381106116d157600080fd5b9450602086013567ffffffffffffffff808211156116ee57600080fd5b818801915088601f83011261170257600080fd5b81358181111561171157600080fd5b89602082850101111561172357600080fd5b9699602092909201985095966040810135965060600135945092505050565b6000806040838503121561175557600080fd5b823561176081611588565b9150602083013561177081611588565b809150509250929050565b600181811c9082168061178f57607f821691505b6020821081036117c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000602082840312156117e057600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261181c57600080fd5b83018035915067ffffffffffffffff82111561183757600080fd5b60200191503681900382131561184c57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761065d5761065d611853565b8082018082111561065d5761065d611853565b6000826118e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600080858511156118f757600080fd5b8386111561190457600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081358181169160108510156119515780818660100360031b1b83161692505b505092915050565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156119515760149490940360031b84901b169092169291505056fea26469706673582212208de33d88cb1bd980e5d6897c9f19409d09f227423577c02f2aa1f966ead223b964736f6c63430008170033"; type LegacyTokenPaymasterConstructorParams = | [signer?: Signer] diff --git a/packages/types/src/contracts/EPv7/factories/samples/SimpleAccountFactory__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/SimpleAccountFactory__factory.ts index b2c68ec9..95801e1b 100644 --- a/packages/types/src/contracts/EPv7/factories/samples/SimpleAccountFactory__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/samples/SimpleAccountFactory__factory.ts @@ -3,7 +3,7 @@ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../common"; +import type { PromiseOrValue } from "../../../common"; import type { SimpleAccountFactory, SimpleAccountFactoryInterface, @@ -85,7 +85,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405234801561001057600080fd5b506040516129e13803806129e183398101604081905261002f91610088565b8060405161003c9061007b565b6001600160a01b039091168152602001604051809103906000f080158015610068573d6000803e3d6000fd5b506001600160a01b0316608052506100b8565b612011806109d083390190565b60006020828403121561009a57600080fd5b81516001600160a01b03811681146100b157600080fd5b9392505050565b6080516108f06100e060003960008181604b01528181610114015261025801526108f06000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806311464fbe146100465780635fbfb9cf146100965780638cb84e18146100a9575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61006d6100a436600461039d565b6100bc565b61006d6100b736600461039d565b6101ee565b6000806100c984846101ee565b905073ffffffffffffffffffffffffffffffffffffffff81163b80156100f1575090506101e8565b60405173ffffffffffffffffffffffffffffffffffffffff8616602482015284907f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052516101b790610390565b6101c2929190610406565b8190604051809103906000f59050801580156101e2573d6000803e3d6000fd5b50925050505b92915050565b60006103578260001b6040518060200161020790610390565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905273ffffffffffffffffffffffffffffffffffffffff871660248201527f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052905161030093929101610406565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261033c9291602001610474565b6040516020818303038152906040528051906020012061035e565b9392505050565b60006103578383306000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b610417806104a483390190565b600080604083850312156103b057600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146103d457600080fd5b946020939093013593505050565b60005b838110156103fd5781810151838201526020016103e5565b50506000910152565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600082518060408401526104418160608501602087016103e2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b600083516104868184602088016103e2565b83519083019061049a8183602088016103e2565b0194935050505056fe608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220d7f23a80daebb5531c9e4a18d87e812fca112e5df7e56433218edcc12bbe415d64736f6c63430008170033a26469706673582212200c86fa63a65646813a23238fbaec92e25001543696f180649597a7afadcb826e64736f6c6343000817003360c0604052306080523480156200001557600080fd5b50604051620020113803806200201183398101604081905262000038916200010a565b6001600160a01b03811660a0526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051611e70620001a160003960008181610320015281816106ca015281816107780152818161092601528181610b6301528181610baa01528181611031015261121e015260008181610d7501528181610d9e0152610fc20152611e706000f3fe6080604052600436106101125760003560e01c80638da5cb5b116100a5578063bc197c8111610074578063c4d66de811610059578063c4d66de8146103c1578063d087d288146103e1578063f23a6e61146103f657600080fd5b8063bc197c8114610364578063c399ec88146103ac57600080fd5b80638da5cb5b14610269578063ad3cb1cc146102bb578063b0d691fe14610311578063b61d27f61461034457600080fd5b80634d44560d116100e15780634d44560d146101f35780634f1ef2861461021357806352d1902d146102265780638803e4511461024957600080fd5b806301ffc9a71461011e578063150b7a021461015357806347e1da2a146101c95780634a58db19146101eb57600080fd5b3661011957005b600080fd5b34801561012a57600080fd5b5061013e61013936600461179b565b61043c565b60405190151581526020015b60405180910390f35b34801561015f57600080fd5b5061019861016e366004611848565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161014a565b3480156101d557600080fd5b506101e96101e4366004611900565b610521565b005b6101e96106c8565b3480156101ff57600080fd5b506101e961020e36600461199a565b61076e565b6101e96102213660046119f5565b61081d565b34801561023257600080fd5b5061023b61083c565b60405190815260200161014a565b34801561025557600080fd5b5061023b610264366004611ad7565b61086b565b34801561027557600080fd5b506000546102969073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014a565b3480156102c757600080fd5b506103046040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161014a9190611b4f565b34801561031d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610296565b34801561035057600080fd5b506101e961035f366004611ba0565b610891565b34801561037057600080fd5b5061019861037f366004611bfc565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103b857600080fd5b5061023b6108e0565b3480156103cd57600080fd5b506101e96103dc366004611cbb565b610997565b3480156103ed57600080fd5b5061023b610b16565b34801561040257600080fd5b50610198610411366004611cd8565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a020000000000000000000000000000000000000000000000000000000014806104cf57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061051b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610529610b92565b848114801561053f575082158061053f57508281145b6105aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206172726179206c656e677468730000000000000000000000000060448201526064015b60405180910390fd5b60008390036106565760005b85811015610650576106488787838181106105d3576105d3611d42565b90506020020160208101906105e89190611cbb565b60008585858181106105fc576105fc611d42565b905060200281019061060e9190611d71565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c5592505050565b6001016105b6565b506106c0565b60005b858110156106be576106b687878381811061067657610676611d42565b905060200201602081019061068b9190611cbb565b86868481811061069d5761069d611d42565b905060200201358585858181106105fc576105fc611d42565b600101610659565b505b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024016000604051808303818588803b15801561075357600080fd5b505af1158015610767573d6000803e3d6000fd5b5050505050565b610776610cd2565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c287890604401600060405180830381600087803b15801561080957600080fd5b505af11580156106c0573d6000803e3d6000fd5b610825610d5d565b61082e82610e61565b6108388282610e6c565b5050565b6000610846610faa565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6000610875611019565b61087f84846110b8565b905061088a82611169565b9392505050565b610899610b92565b6108da848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c5592505050565b50505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561096e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109929190611dd6565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e25750825b905060008267ffffffffffffffff1660011480156109ff5750303b155b905081158015610a0d575080155b15610a44576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aa55784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610aae866111d4565b83156106c05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610951565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610bed575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610c53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e7460448201526064016105a1565b565b6000808473ffffffffffffffffffffffffffffffffffffffff168484604051610c7e9190611def565b60006040518083038185875af1925050503d8060008114610cbb576040519150601f19603f3d011682016040523d82523d6000602084013e610cc0565b606091505b50915091508161076757805160208201fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331480610cf757503330145b610c53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e65720000000000000000000000000000000000000000000060448201526064016105a1565b3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610e2a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e117f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610c53576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e69610cd2565b50565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ef1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610eee91810190611dd6565b60015b610f3f576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016105a1565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610f9b576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016105a1565b610fa58383611268565b505050565b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c53576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016105a1565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120611133816110f9610120870187611d71565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112cb92505050565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161461115f57600191505061051b565b5060009392505050565b8015610e695760405160009033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d8060008114610767576040519150601f19603f3d011682016040523d82523d6000602084013e610767565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217835560405191927f0000000000000000000000000000000000000000000000000000000000000000909116917f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de9190a350565b611271826112f5565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156112c357610fa582826113c4565b610838611447565b6000806000806112db868661147f565b9250925092506112eb82826114cc565b5090949350505050565b8073ffffffffffffffffffffffffffffffffffffffff163b60000361135e576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016105a1565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516113ee9190611def565b600060405180830381855af49150503d8060008114611429576040519150601f19603f3d011682016040523d82523d6000602084013e61142e565b606091505b509150915061143e8583836115d0565b95945050505050565b3415610c53576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600083516041036114b95760208401516040850151606086015160001a6114ab8882858561165f565b9550955095505050506114c5565b50508151600091506002905b9250925092565b60008260038111156114e0576114e0611e0b565b036114e9575050565b60018260038111156114fd576114fd611e0b565b03611534576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561154857611548611e0b565b03611582576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016105a1565b600382600381111561159657611596611e0b565b03610838576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016105a1565b6060826115e5576115e082611759565b61088a565b8151158015611609575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611658576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016105a1565b508061088a565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561169a575060009150600390508261174f565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156116ee573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166117455750600092506001915082905061174f565b9250600091508190505b9450945094915050565b8051156117695780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156117ad57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461088a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e6957600080fd5b60008083601f84011261181157600080fd5b50813567ffffffffffffffff81111561182957600080fd5b60208301915083602082850101111561184157600080fd5b9250929050565b60008060008060006080868803121561186057600080fd5b853561186b816117dd565b9450602086013561187b816117dd565b935060408601359250606086013567ffffffffffffffff81111561189e57600080fd5b6118aa888289016117ff565b969995985093965092949392505050565b60008083601f8401126118cd57600080fd5b50813567ffffffffffffffff8111156118e557600080fd5b6020830191508360208260051b850101111561184157600080fd5b6000806000806000806060878903121561191957600080fd5b863567ffffffffffffffff8082111561193157600080fd5b61193d8a838b016118bb565b9098509650602089013591508082111561195657600080fd5b6119628a838b016118bb565b9096509450604089013591508082111561197b57600080fd5b5061198889828a016118bb565b979a9699509497509295939492505050565b600080604083850312156119ad57600080fd5b82356119b8816117dd565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611a0857600080fd5b8235611a13816117dd565b9150602083013567ffffffffffffffff80821115611a3057600080fd5b818501915085601f830112611a4457600080fd5b813581811115611a5657611a566119c6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611a9c57611a9c6119c6565b81604052828152886020848701011115611ab557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600060608486031215611aec57600080fd5b833567ffffffffffffffff811115611b0357600080fd5b84016101408187031215611b1657600080fd5b95602085013595506040909401359392505050565b60005b83811015611b46578181015183820152602001611b2e565b50506000910152565b6020815260008251806020840152611b6e816040850160208701611b2b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060008060608587031215611bb657600080fd5b8435611bc1816117dd565b935060208501359250604085013567ffffffffffffffff811115611be457600080fd5b611bf0878288016117ff565b95989497509550505050565b60008060008060008060008060a0898b031215611c1857600080fd5b8835611c23816117dd565b97506020890135611c33816117dd565b9650604089013567ffffffffffffffff80821115611c5057600080fd5b611c5c8c838d016118bb565b909850965060608b0135915080821115611c7557600080fd5b611c818c838d016118bb565b909650945060808b0135915080821115611c9a57600080fd5b50611ca78b828c016117ff565b999c989b5096995094979396929594505050565b600060208284031215611ccd57600080fd5b813561088a816117dd565b60008060008060008060a08789031215611cf157600080fd5b8635611cfc816117dd565b95506020870135611d0c816117dd565b94506040870135935060608701359250608087013567ffffffffffffffff811115611d3657600080fd5b61198889828a016117ff565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611da657600080fd5b83018035915067ffffffffffffffff821115611dc157600080fd5b60200191503681900382131561184157600080fd5b600060208284031215611de857600080fd5b5051919050565b60008251611e01818460208701611b2b565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea264697066735822122026dfe130458787b65857e17309456cf05b965ce360b0042f8830853bd6a1a41b64736f6c63430008170033"; + "0x60a060405234801561001057600080fd5b506040516129e13803806129e183398101604081905261002f91610088565b8060405161003c9061007b565b6001600160a01b039091168152602001604051809103906000f080158015610068573d6000803e3d6000fd5b506001600160a01b0316608052506100b8565b612011806109d083390190565b60006020828403121561009a57600080fd5b81516001600160a01b03811681146100b157600080fd5b9392505050565b6080516108f06100e060003960008181604b01528181610114015261025801526108f06000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806311464fbe146100465780635fbfb9cf146100965780638cb84e18146100a9575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61006d6100a436600461039d565b6100bc565b61006d6100b736600461039d565b6101ee565b6000806100c984846101ee565b905073ffffffffffffffffffffffffffffffffffffffff81163b80156100f1575090506101e8565b60405173ffffffffffffffffffffffffffffffffffffffff8616602482015284907f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052516101b790610390565b6101c2929190610406565b8190604051809103906000f59050801580156101e2573d6000803e3d6000fd5b50925050505b92915050565b60006103578260001b6040518060200161020790610390565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905273ffffffffffffffffffffffffffffffffffffffff871660248201527f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052905161030093929101610406565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261033c9291602001610474565b6040516020818303038152906040528051906020012061035e565b9392505050565b60006103578383306000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b610417806104a483390190565b600080604083850312156103b057600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146103d457600080fd5b946020939093013593505050565b60005b838110156103fd5781810151838201526020016103e5565b50506000910152565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600082518060408401526104418160608501602087016103e2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b600083516104868184602088016103e2565b83519083019061049a8183602088016103e2565b0194935050505056fe608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220d7f23a80daebb5531c9e4a18d87e812fca112e5df7e56433218edcc12bbe415d64736f6c63430008170033a26469706673582212200f09449c3a9b4369df8dd51570502df18543778fc5ffb2dae690fe468f31e42164736f6c6343000817003360c0604052306080523480156200001557600080fd5b50604051620020113803806200201183398101604081905262000038916200010a565b6001600160a01b03811660a0526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051611e70620001a160003960008181610320015281816106f00152818161079e0152818161092601528181610b6301528181610baa01528181610d6a015261121e015260008181610f3301528181610f5c015261117d0152611e706000f3fe6080604052600436106101125760003560e01c80638da5cb5b116100a5578063bc197c8111610074578063c4d66de811610059578063c4d66de8146103c1578063d087d288146103e1578063f23a6e61146103f657600080fd5b8063bc197c8114610364578063c399ec88146103ac57600080fd5b80638da5cb5b14610269578063ad3cb1cc146102bb578063b0d691fe14610311578063b61d27f61461034457600080fd5b80634a58db19116100e15780634a58db19146102195780634d44560d146102215780634f1ef2861461024157806352d1902d1461025457600080fd5b806301ffc9a71461011e578063150b7a021461015357806319822f7c146101c957806347e1da2a146101f757600080fd5b3661011957005b600080fd5b34801561012a57600080fd5b5061013e61013936600461179b565b61043c565b60405190151581526020015b60405180910390f35b34801561015f57600080fd5b5061019861016e366004611848565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161014a565b3480156101d557600080fd5b506101e96101e43660046118bb565b610521565b60405190815260200161014a565b34801561020357600080fd5b50610217610212366004611954565b610547565b005b6102176106ee565b34801561022d57600080fd5b5061021761023c3660046119ee565b610794565b61021761024f366004611a49565b610843565b34801561026057600080fd5b506101e9610862565b34801561027557600080fd5b506000546102969073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014a565b3480156102c757600080fd5b506103046040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161014a9190611b4f565b34801561031d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610296565b34801561035057600080fd5b5061021761035f366004611ba0565b610891565b34801561037057600080fd5b5061019861037f366004611bfc565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103b857600080fd5b506101e96108e0565b3480156103cd57600080fd5b506102176103dc366004611cbb565b610997565b3480156103ed57600080fd5b506101e9610b16565b34801561040257600080fd5b50610198610411366004611cd8565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a020000000000000000000000000000000000000000000000000000000014806104cf57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061051b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061052b610b92565b6105358484610c33565b905061054082610ce7565b9392505050565b61054f610d52565b8481148015610565575082158061056557508281145b6105d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206172726179206c656e677468730000000000000000000000000060448201526064015b60405180910390fd5b600083900361067c5760005b858110156106765761066e8787838181106105f9576105f9611d42565b905060200201602081019061060e9190611cbb565b600085858581811061062257610622611d42565b90506020028101906106349190611d71565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e1392505050565b6001016105dc565b506106e6565b60005b858110156106e4576106dc87878381811061069c5761069c611d42565b90506020020160208101906106b19190611cbb565b8686848181106106c3576106c3611d42565b9050602002013585858581811061062257610622611d42565b60010161067f565b505b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024016000604051808303818588803b15801561077957600080fd5b505af115801561078d573d6000803e3d6000fd5b5050505050565b61079c610e90565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c287890604401600060405180830381600087803b15801561082f57600080fd5b505af11580156106e6573d6000803e3d6000fd5b61084b610f1b565b6108548261101f565b61085e8282611027565b5050565b600061086c611165565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610899610d52565b6108da848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e1392505050565b50505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561096e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109929190611dd6565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e25750825b905060008267ffffffffffffffff1660011480156109ff5750303b155b905081158015610a0d575080155b15610a44576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aa55784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610aae866111d4565b83156106e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610951565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016105c7565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120610cae81610c74610100870187611d71565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061126892505050565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614610cda57600191505061051b565b5060009392505050565b50565b8015610ce45760405160009033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d806000811461078d576040519150601f19603f3d011682016040523d82523d6000602084013e61078d565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610dad575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e7460448201526064016105c7565b6000808473ffffffffffffffffffffffffffffffffffffffff168484604051610e3c9190611def565b60006040518083038185875af1925050503d8060008114610e79576040519150601f19603f3d011682016040523d82523d6000602084013e610e7e565b606091505b50915091508161078d57805160208201fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331480610eb557503330145b610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e65720000000000000000000000000000000000000000000060448201526064016105c7565b3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610fe857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610fcf7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610c31576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ce4610e90565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156110ac575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526110a991810190611dd6565b60015b6110fa576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016105c7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611156576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016105c7565b6111608383611292565b505050565b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c31576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217835560405191927f0000000000000000000000000000000000000000000000000000000000000000909116917f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de9190a350565b60008060008061127886866112f5565b9250925092506112888282611342565b5090949350505050565b61129b82611446565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156112ed576111608282611515565b61085e611598565b6000806000835160410361132f5760208401516040850151606086015160001a611321888285856115d0565b95509550955050505061133b565b50508151600091506002905b9250925092565b600082600381111561135657611356611e0b565b0361135f575050565b600182600381111561137357611373611e0b565b036113aa576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156113be576113be611e0b565b036113f8576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016105c7565b600382600381111561140c5761140c611e0b565b0361085e576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016105c7565b8073ffffffffffffffffffffffffffffffffffffffff163b6000036114af576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016105c7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161153f9190611def565b600060405180830381855af49150503d806000811461157a576040519150601f19603f3d011682016040523d82523d6000602084013e61157f565b606091505b509150915061158f8583836116ca565b95945050505050565b3415610c31576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561160b57506000915060039050826116c0565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561165f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166116b6575060009250600191508290506116c0565b9250600091508190505b9450945094915050565b6060826116df576116da82611759565b610540565b8151158015611703575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611752576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016105c7565b5080610540565b8051156117695780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156117ad57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054057600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610ce457600080fd5b60008083601f84011261181157600080fd5b50813567ffffffffffffffff81111561182957600080fd5b60208301915083602082850101111561184157600080fd5b9250929050565b60008060008060006080868803121561186057600080fd5b853561186b816117dd565b9450602086013561187b816117dd565b935060408601359250606086013567ffffffffffffffff81111561189e57600080fd5b6118aa888289016117ff565b969995985093965092949392505050565b6000806000606084860312156118d057600080fd5b833567ffffffffffffffff8111156118e757600080fd5b840161012081870312156118fa57600080fd5b95602085013595506040909401359392505050565b60008083601f84011261192157600080fd5b50813567ffffffffffffffff81111561193957600080fd5b6020830191508360208260051b850101111561184157600080fd5b6000806000806000806060878903121561196d57600080fd5b863567ffffffffffffffff8082111561198557600080fd5b6119918a838b0161190f565b909850965060208901359150808211156119aa57600080fd5b6119b68a838b0161190f565b909650945060408901359150808211156119cf57600080fd5b506119dc89828a0161190f565b979a9699509497509295939492505050565b60008060408385031215611a0157600080fd5b8235611a0c816117dd565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611a5c57600080fd5b8235611a67816117dd565b9150602083013567ffffffffffffffff80821115611a8457600080fd5b818501915085601f830112611a9857600080fd5b813581811115611aaa57611aaa611a1a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611af057611af0611a1a565b81604052828152886020848701011115611b0957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015611b46578181015183820152602001611b2e565b50506000910152565b6020815260008251806020840152611b6e816040850160208701611b2b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060008060608587031215611bb657600080fd5b8435611bc1816117dd565b935060208501359250604085013567ffffffffffffffff811115611be457600080fd5b611bf0878288016117ff565b95989497509550505050565b60008060008060008060008060a0898b031215611c1857600080fd5b8835611c23816117dd565b97506020890135611c33816117dd565b9650604089013567ffffffffffffffff80821115611c5057600080fd5b611c5c8c838d0161190f565b909850965060608b0135915080821115611c7557600080fd5b611c818c838d0161190f565b909650945060808b0135915080821115611c9a57600080fd5b50611ca78b828c016117ff565b999c989b5096995094979396929594505050565b600060208284031215611ccd57600080fd5b8135610540816117dd565b60008060008060008060a08789031215611cf157600080fd5b8635611cfc816117dd565b95506020870135611d0c816117dd565b94506040870135935060608701359250608087013567ffffffffffffffff811115611d3657600080fd5b6119dc89828a016117ff565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611da657600080fd5b83018035915067ffffffffffffffff821115611dc157600080fd5b60200191503681900382131561184157600080fd5b600060208284031215611de857600080fd5b5051919050565b60008251611e01818460208701611b2b565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212208e00b008820ddab58bc26e8c549037ddb1856c813b28e958454043f722621b9d64736f6c63430008170033"; type SimpleAccountFactoryConstructorParams = | [signer?: Signer] diff --git a/packages/types/src/contracts/EPv7/factories/samples/SimpleAccount__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/SimpleAccount__factory.ts index 47192bea..c35e78b9 100644 --- a/packages/types/src/contracts/EPv7/factories/samples/SimpleAccount__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/samples/SimpleAccount__factory.ts @@ -3,7 +3,7 @@ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../common"; +import type { PromiseOrValue } from "../../../common"; import type { SimpleAccount, SimpleAccountInterface, @@ -479,14 +479,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -550,7 +545,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c034610142576001600160401b0390601f611bde38819003918201601f1916830191848311848410176101475780849260209460405283398101031261014257516001600160a01b0381168103610142573060805260a0527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166101305780808316036100eb575b604051611a80908161015e82396080518181816107a901526109a7015260a0518181816104bb0152818161059a01528181610a8b01528181610ce501528181610ebc015281816111a4015281816113ed015261164e0152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610092565b60405163f92ee8a960e01b8152600490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806301ffc9a71461012b578063150b7a021461012657806347e1da2a146101215780634a58db191461011c5780634d44560d146101175780634f1ef2861461011257806352d1902d1461010d5780638803e451146101085780638da5cb5b14610103578063ad3cb1cc146100fe578063b0d691fe146100f9578063b61d27f6146100f4578063bc197c81146100ef578063c399ec88146100ea578063c4d66de8146100e5578063d087d288146100e05763f23a6e610361000e57611207565b611125565b610f15565b610e44565b610d7d565b610d09565b610c9a565b610bc9565b610b77565b610a21565b610961565b610729565b61053c565b610479565b61032e565b61026c565b3461021b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361021b57807f150b7a0200000000000000000000000000000000000000000000000000000000602092149081156101f1575b81156101c7575b506040519015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386101bc565b7f4e2312e000000000000000000000000000000000000000000000000000000000811491506101b5565b600080fd5b73ffffffffffffffffffffffffffffffffffffffff81160361021b57565b9181601f8401121561021b5782359167ffffffffffffffff831161021b576020838186019501011161021b57565b3461021b5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576102a6600435610220565b6102b1602435610220565b60643567ffffffffffffffff811161021b576102d190369060040161023e565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b9181601f8401121561021b5782359167ffffffffffffffff831161021b576020808501948460051b01011161021b57565b3461021b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b5767ffffffffffffffff60043581811161021b5761037e9036906004016102fd565b60249291923582811161021b576103999036906004016102fd565b9260443590811161021b576103b29036906004016102fd565b9390916103bd6113d5565b84841480610468575b6103cf90611298565b8161041c57505060005b8281106103e257005b806104166103fb6103f6600194878a61132c565b611341565b61041061040984898861139f565b36916106f2565b906114bb565b016103d9565b91909460009493945b85811061042e57005b806104626104426103f66001948a8761132c565b61044d838b8961132c565b3561045c610409858b8a61139f565b916114e3565b01610425565b508115806103c657508185146103c6565b6000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105395773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001681813b1561053957602491604051928380927fb760faf900000000000000000000000000000000000000000000000000000000825230600483015234905af1801561053457610528575080f35b61053190610642565b80f35b6113ba565b80fd5b3461021b57600060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105395760043561057981610220565b6105816114fa565b8173ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001692833b1561060f576044908360405195869485937f205c287800000000000000000000000000000000000000000000000000000000855216600484015260243560248401525af1801561053457610528575080f35b8280fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161065657604052565b610613565b6040810190811067ffffffffffffffff82111761065657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761065657604052565b67ffffffffffffffff811161065657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926106fe826106b8565b9161070c6040519384610677565b82948184528183011161021b578281602093846000960137010152565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57600480359061076182610220565b60243567ffffffffffffffff811161021b573660238201121561021b5761079190369060248185013591016106f2565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016803014908115610933575b5061090a5790602083926107e66114fa565b604051938480927f52d1902d00000000000000000000000000000000000000000000000000000000825288165afa600092816108d9575b506108715750506040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921690820190815281906020010390fd5b83837f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc84036108a4576100198383611695565b6040517faa1d49a400000000000000000000000000000000000000000000000000000000815290810184815281906020010390fd5b6108fc91935060203d602011610903575b6108f48183610677565b8101906113c6565b913861081d565b503d6108ea565b826040517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54161415386107d4565b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036109f75760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60046040517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b3461021b577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60608136011261021b576004359067ffffffffffffffff821161021b5761014090823603011261021b5760443573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610b1957610ac4610adc926024359060040161158a565b9080610ae0575b506040519081529081906020820190565b0390f35b600080808093337ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff150610b1261148b565b5038610acb565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152fd5b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576040805190610c068261065b565b600582526020907f352e302e300000000000000000000000000000000000000000000000000000006020840152604051916020835283519182602085015260005b838110610c8757846040817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f88600085828601015201168101030190f35b8581018301518582018301528201610c47565b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461021b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57600435610d4481610220565b6044359067ffffffffffffffff821161021b57610d73610d6b61001993369060040161023e565b6104096113d5565b90602435906114e3565b3461021b5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57610db7600435610220565b610dc2602435610220565b67ffffffffffffffff60443581811161021b57610de39036906004016102fd565b505060643581811161021b57610dfd9036906004016102fd565b505060843590811161021b57610e1790369060040161023e565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa801561053457602091600091610ef8575b50604051908152f35b610f0f9150823d8411610903576108f48183610677565b38610eef565b3461021b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57600435610f5081610220565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549067ffffffffffffffff60ff8360401c161592168015908161111d575b6001149081611113575b15908161110a575b506110e0576110039082610ffa7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060017fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416179055565b61108457611609565b61100957005b6110557ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff8154169055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b6110db7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff825416179055565b611609565b60046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b90501538610fa1565b303b159150610f99565b839150610f8f565b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482015260208160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa801561053457610adc916000916111e857506040519081529081906020820190565b611201915060203d602011610903576108f48183610677565b38610acb565b3461021b5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57611241600435610220565b61124c602435610220565b60843567ffffffffffffffff811161021b5761126c90369060040161023e565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b1561129f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206172726179206c656e67746873000000000000000000000000006044820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919081101561133c5760051b0190565b6112fd565b3561134b81610220565b90565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561021b570180359067ffffffffffffffff821161021b5760200191813603831361021b57565b9082101561133c576113b69160051b81019061134e565b9091565b6040513d6000823e3d90fd5b9081602091031261021b575190565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016331490811561147d575b501561141f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e746044820152fd5b905060005416331438611417565b3d156114b6573d9061149c826106b8565b916114aa6040519384610677565b82523d6000602084013e565b606090565b600091829182602083519301915af16114d261148b565b90156114db5750565b602081519101fd5b916000928392602083519301915af16114d261148b565b73ffffffffffffffffffffffffffffffffffffffff6000541633148015611581575b1561152357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152fd5b5030331461151c565b907f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c6000206115f96115f073ffffffffffffffffffffffffffffffffffffffff926115ea61040985600054169661012081019061134e565b906117cd565b90929192611842565b160361160457600090565b600190565b73ffffffffffffffffffffffffffffffffffffffff80911690817fffffffffffffffffffffffff000000000000000000000000000000000000000060005416176000557f0000000000000000000000000000000000000000000000000000000000000000167f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de600080a3565b90813b156117685773ffffffffffffffffffffffffffffffffffffffff82167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc817fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a280511561173557611732916117af565b50565b50503461173e57565b60046040517fb398979f000000000000000000000000000000000000000000000000000000008152fd5b60248273ffffffffffffffffffffffffffffffffffffffff604051917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352166004820152fd5b60008061134b93602081519101845af46117c761148b565b91611919565b81519190604183036117fe576117f792506020820151906060604084015193015160001a906119b9565b9192909190565b505060009160029190565b6004111561181357565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b61184b81611809565b80611854575050565b61185d81611809565b6001810361188f5760046040517ff645eedf000000000000000000000000000000000000000000000000000000008152fd5b61189881611809565b600281036118d2576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101839052602490fd5b806118de600392611809565b146118e65750565b6040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810191909152602490fd5b90611958575080511561192e57805190602001fd5b60046040517f1425ea42000000000000000000000000000000000000000000000000000000008152fd5b815115806119b0575b611969575090565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b15611961565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611a3e57926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa1561053457805173ffffffffffffffffffffffffffffffffffffffff811615611a3557918190565b50809160019190565b5050506000916003919056fea264697066735822122093fd467eab992756fc098b388e3f89d81ffe0f2ccfa8e4a8d93efe8799da52ec64736f6c63430008170033"; + "0x60c034610142576001600160401b0390601f611bde38819003918201601f1916830191848311848410176101475780849260209460405283398101031261014257516001600160a01b0381168103610142573060805260a0527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166101305780808316036100eb575b604051611a80908161015e82396080518181816108ff0152610afd015260a05181818161036701528181610611015281816106f001528181610ce501528181610ebc015281816111a40152818161149c015261164e0152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610092565b60405163f92ee8a960e01b8152600490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806301ffc9a71461012b578063150b7a021461012657806319822f7c1461012157806347e1da2a1461011c5780634a58db19146101175780634d44560d146101125780634f1ef2861461010d57806352d1902d146101085780638da5cb5b14610103578063ad3cb1cc146100fe578063b0d691fe146100f9578063b61d27f6146100f4578063bc197c81146100ef578063c399ec88146100ea578063c4d66de8146100e5578063d087d288146100e05763f23a6e610361000e57611207565b611125565b610f15565b610e44565b610d7d565b610d09565b610c9a565b610bc9565b610b77565b610ab7565b61087f565b610692565b6105cf565b610484565b6102fd565b61026c565b3461021b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361021b57807f150b7a0200000000000000000000000000000000000000000000000000000000602092149081156101f1575b81156101c7575b506040519015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386101bc565b7f4e2312e000000000000000000000000000000000000000000000000000000000811491506101b5565b600080fd5b73ffffffffffffffffffffffffffffffffffffffff81160361021b57565b9181601f8401121561021b5782359167ffffffffffffffff831161021b576020838186019501011161021b57565b3461021b5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576102a6600435610220565b6102b1602435610220565b60643567ffffffffffffffff811161021b576102d190369060040161023e565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b3461021b577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60608136011261021b576004359067ffffffffffffffff821161021b5761012090823603011261021b5760443573ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036103f5576103a06103b892602435906004016113d5565b90806103bc575b506040519081529081906020820190565b0390f35b600080808093337ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1506103ee611454565b50386103a7565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152fd5b9181601f8401121561021b5782359167ffffffffffffffff831161021b576020808501948460051b01011161021b57565b3461021b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b5767ffffffffffffffff60043581811161021b576104d4903690600401610453565b60249291923582811161021b576104ef903690600401610453565b9260443590811161021b57610508903690600401610453565b939091610513611484565b848414806105be575b61052590611298565b8161057257505060005b82811061053857005b8061056c61055161054c600194878a61132c565b611341565b61056661055f84898861139f565b3691610848565b9061153a565b0161052f565b91909460009493945b85811061058457005b806105b861059861054c6001948a8761132c565b6105a3838b8961132c565b356105b261055f858b8a61139f565b91611562565b0161057b565b5081158061051c575081851461051c565b6000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261068f5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001681813b1561068f57602491604051928380927fb760faf900000000000000000000000000000000000000000000000000000000825230600483015234905af1801561068a5761067e575080f35b61068790610798565b80f35b6113ba565b80fd5b3461021b57600060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261068f576004356106cf81610220565b6106d7611579565b8173ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001692833b15610765576044908360405195869485937f205c287800000000000000000000000000000000000000000000000000000000855216600484015260243560248401525af1801561068a5761067e575080f35b8280fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff81116107ac57604052565b610769565b6040810190811067ffffffffffffffff8211176107ac57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176107ac57604052565b67ffffffffffffffff81116107ac57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926108548261080e565b9161086260405193846107cd565b82948184528183011161021b578281602093846000960137010152565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b5760048035906108b782610220565b60243567ffffffffffffffff811161021b573660238201121561021b576108e79036906024818501359101610848565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016803014908115610a89575b50610a6057906020839261093c611579565b604051938480927f52d1902d00000000000000000000000000000000000000000000000000000000825288165afa60009281610a2f575b506109c75750506040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921690820190815281906020010390fd5b83837f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc84036109fa576100198383611695565b6040517faa1d49a400000000000000000000000000000000000000000000000000000000815290810184815281906020010390fd5b610a5291935060203d602011610a59575b610a4a81836107cd565b8101906113c6565b9138610973565b503d610a40565b826040517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614153861092a565b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b5773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610b4d5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60046040517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576040805190610c06826107b1565b600582526020907f352e302e300000000000000000000000000000000000000000000000000000006020840152604051916020835283519182602085015260005b838110610c8757846040817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f88600085828601015201168101030190f35b8581018301518582018301528201610c47565b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461021b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57600435610d4481610220565b6044359067ffffffffffffffff821161021b57610d73610d6b61001993369060040161023e565b61055f611484565b9060243590611562565b3461021b5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57610db7600435610220565b610dc2602435610220565b67ffffffffffffffff60443581811161021b57610de3903690600401610453565b505060643581811161021b57610dfd903690600401610453565b505060843590811161021b57610e1790369060040161023e565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa801561068a57602091600091610ef8575b50604051908152f35b610f0f9150823d8411610a5957610a4a81836107cd565b38610eef565b3461021b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57600435610f5081610220565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549067ffffffffffffffff60ff8360401c161592168015908161111d575b6001149081611113575b15908161110a575b506110e0576110039082610ffa7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060017fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416179055565b61108457611609565b61100957005b6110557ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff8154169055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b6110db7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff825416179055565b611609565b60046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b90501538610fa1565b303b159150610f99565b839150610f8f565b3461021b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b576040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482015260208160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa801561068a576103b8916000916111e857506040519081529081906020820190565b611201915060203d602011610a5957610a4a81836107cd565b386103a7565b3461021b5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021b57611241600435610220565b61124c602435610220565b60843567ffffffffffffffff811161021b5761126c90369060040161023e565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b1561129f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206172726179206c656e67746873000000000000000000000000006044820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919081101561133c5760051b0190565b6112fd565b3561134b81610220565b90565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561021b570180359067ffffffffffffffff821161021b5760200191813603831361021b57565b9082101561133c576113b69160051b81019061134e565b9091565b6040513d6000823e3d90fd5b9081602091031261021b575190565b907f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c60002061144461143b73ffffffffffffffffffffffffffffffffffffffff9261143561055f85600054169661010081019061134e565b906117af565b90929192611824565b160361144f57600090565b600190565b3d1561147f573d906114658261080e565b9161147360405193846107cd565b82523d6000602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016331490811561152c575b50156114ce57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e746044820152fd5b9050600054163314386114c6565b600091829182602083519301915af1611551611454565b901561155a5750565b602081519101fd5b916000928392602083519301915af1611551611454565b73ffffffffffffffffffffffffffffffffffffffff6000541633148015611600575b156115a257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152fd5b5030331461159b565b73ffffffffffffffffffffffffffffffffffffffff80911690817fffffffffffffffffffffffff000000000000000000000000000000000000000060005416176000557f0000000000000000000000000000000000000000000000000000000000000000167f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de600080a3565b90813b156117685773ffffffffffffffffffffffffffffffffffffffff82167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc817fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a280511561173557611732916118fb565b50565b50503461173e57565b60046040517fb398979f000000000000000000000000000000000000000000000000000000008152fd5b60248273ffffffffffffffffffffffffffffffffffffffff604051917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352166004820152fd5b81519190604183036117e0576117d992506020820151906060604084015193015160001a90611919565b9192909190565b505060009160029190565b600411156117f557565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b61182d816117eb565b80611836575050565b61183f816117eb565b600181036118715760046040517ff645eedf000000000000000000000000000000000000000000000000000000008152fd5b61187a816117eb565b600281036118b4576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101839052602490fd5b806118c06003926117eb565b146118c85750565b6040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810191909152602490fd5b60008061134b93602081519101845af4611913611454565b916119aa565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161199e57926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa1561068a57805173ffffffffffffffffffffffffffffffffffffffff81161561199557918190565b50809160019190565b50505060009160039190565b906119e957508051156119bf57805190602001fd5b60046040517f1425ea42000000000000000000000000000000000000000000000000000000008152fd5b81511580611a41575b6119fa575090565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b156119f256fea26469706673582212200c94f16b641cdcc32c825e4e90e4b3441beb2b0699e01a402c30fe8e3a6d712564736f6c63430008170033"; type SimpleAccountConstructorParams = | [signer?: Signer] diff --git a/packages/types/src/contracts/EPv7/factories/samples/TokenPaymaster__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/TokenPaymaster__factory.ts index 2e15a278..e9072333 100644 --- a/packages/types/src/contracts/EPv7/factories/samples/TokenPaymaster__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/samples/TokenPaymaster__factory.ts @@ -3,7 +3,7 @@ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../common"; +import type { PromiseOrValue } from "../../../common"; import type { TokenPaymaster, TokenPaymasterInterface, @@ -68,6 +68,11 @@ const _abi = [ name: "cacheTimeToLive", type: "uint48", }, + { + internalType: "uint48", + name: "maxOracleRoundAge", + type: "uint48", + }, { internalType: "contract IOracle", name: "tokenOracle", @@ -94,9 +99,9 @@ const _abi = [ type: "bool", }, { - internalType: "uint48", + internalType: "uint256", name: "priceUpdateThreshold", - type: "uint48", + type: "uint256", }, ], internalType: "struct OracleHelper.OracleHelperConfig", @@ -347,7 +352,7 @@ const _abi = [ { indexed: false, internalType: "uint256", - name: "actualTokenPrice", + name: "actualTokenPriceWithMarkup", type: "uint256", }, ], @@ -552,6 +557,34 @@ const _abi = [ 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: [ { @@ -621,7 +654,7 @@ const _abi = [ outputs: [ { internalType: "uint256", - name: "newPrice", + name: "", type: "uint256", }, ], @@ -663,14 +696,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -738,6 +766,24 @@ const _abi = [ 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: [ { @@ -807,7 +853,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101206040523480156200001257600080fd5b50604051620032223803806200322283398101604081905262000035916200096b565b828887878b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000078573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009e919062000a81565b620000ab90600a62000bbb565b868c3380620000d557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000e08162000205565b50620000ec8162000255565b6001600160a01b0390811660805260405163095ea7b360e01b8152848216600482015260001960248201529086169063095ea7b3906044016020604051808303816000875af115801562000144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016a919062000bcc565b506001600160a01b0380861660c05284811660e052831660a052610100829052620001c881805160015560208101516002805460409093015160ff1663010000000263ffffffff1990931662ffffff90921691909117919091179055565b505060001960035550620001e0915082905062000318565b50620001ec8462000579565b620001f78162000706565b505050505050505062000c04565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516301ffc9a760e01b8152639d95230160e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015620002a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c7919062000bcc565b620003155760405162461bcd60e51b815260206004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d6174636800006044820152606401620000cc565b50565b805160058054602084015165ffffffffffff9384166001600160d01b03199092169190911766010000000000006001600160a01b0392831602179091556040830151600680546060860151608087015160a088015160c0890151959096166001600160a81b031990931692909217600160a01b911515919091021761ffff60a81b1916600160a81b9115159190910260ff60b01b191617600160b01b931515939093029290921765ffffffffffff60b81b1916600160b81b91909316908102929092179055620f42401015620004315760405162461bcd60e51b815260206004820152601e60248201527f54504d3a20757064617465207468726573686f6c6420746f6f206869676800006044820152606401620000cc565b600560000160069054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000488573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ae919062000a81565b620004bb90600a62000bbb565b600780546001600160801b0319166001600160801b03929092169190911790556006546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa15801562000526573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054c919062000a81565b6200055990600a62000bbb565b600780546001600160801b03928316600160801b02921691909117905550565b6200058362000747565b6200059b6a52b7d2dcc80cd2e4000000600262000bea565b81511115620005ed5760405162461bcd60e51b815260206004820152601a60248201527f54504d3a207072696365206d61726b757020746f6f20686967680000000000006044820152606401620000cc565b80516a52b7d2dcc80cd2e400000011156200064b5760405162461bcd60e51b815260206004820152601960248201527f54504d3a207072696365206d61726b757020746f6f206c6f77000000000000006044820152606401620000cc565b805160088190556020808301805160098054604080880180516060808b01805165ffffffffffff908116600160b01b0265ffffffffffff60b01b19948216600160801b026001600160b01b03199098166001600160801b039a8b161797909717939093169590951790955582519889529551909416958701959095529151831685850152905190911690830152517fcd938817f1c47094d43be3d07e8c67e11766db2e11a2b4376e7ee937b15793a29181900360800190a150565b6200071062000747565b6001600160a01b0381166200073c57604051631e4fbdf760e01b815260006004820152602401620000cc565b620003158162000205565b6000546001600160a01b03163314620007765760405163118cdaa760e01b8152336004820152602401620000cc565b565b6001600160a01b03811681146200031557600080fd5b604051608081016001600160401b0381118282101715620007bf57634e487b7160e01b600052604160045260246000fd5b60405290565b805165ffffffffffff81168114620007dc57600080fd5b919050565b80518015158114620007dc57600080fd5b600060e082840312156200080557600080fd5b60405160e081016001600160401b03811182821017156200083657634e487b7160e01b600052604160045260246000fd5b6040529050806200084783620007c5565b81526020830151620008598162000778565b602082015260408301516200086e8162000778565b60408201526200088160608401620007e1565b60608201526200089460808401620007e1565b6080820152620008a760a08401620007e1565b60a0820152620008ba60c08401620007c5565b60c08201525092915050565b805160ff81168114620007dc57600080fd5b600060608284031215620008eb57600080fd5b604051606081016001600160401b03811182821017156200091c57634e487b7160e01b600052604160045260246000fd5b806040525080915082518152602083015162ffffff811681146200093f57600080fd5b60208201526200095260408401620008c6565b60408201525092915050565b8051620007dc8162000778565b600080600080600080600080888a036102608112156200098a57600080fd5b8951620009978162000778565b60208b0151909950620009aa8162000778565b60408b0151909850620009bd8162000778565b60608b0151909750620009d08162000778565b95506080607f1982011215620009e557600080fd5b50620009f06200078e565b60808a0151815260a08a01516001600160801b038116811462000a1257600080fd5b602082015262000a2560c08b01620007c5565b604082015262000a3860e08b01620007c5565b6060820152935062000a4f8a6101008b01620007f2565b925062000a618a6101e08b01620008d8565b915062000a726102408a016200095e565b90509295985092959890939650565b60006020828403121562000a9457600080fd5b62000a9f82620008c6565b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000afd57816000190482111562000ae15762000ae162000aa6565b8085161562000aef57918102915b93841c939080029062000ac1565b509250929050565b60008262000b165750600162000bb5565b8162000b255750600062000bb5565b816001811462000b3e576002811462000b495762000b69565b600191505062000bb5565b60ff84111562000b5d5762000b5d62000aa6565b50506001821b62000bb5565b5060208310610133831016604e8410600b841016171562000b8e575081810a62000bb5565b62000b9a838362000abc565b806000190482111562000bb15762000bb162000aa6565b0290505b92915050565b600062000a9f60ff84168362000b05565b60006020828403121562000bdf57600080fd5b62000a9f82620007e1565b808202811582820484141762000bb55762000bb562000aa6565b60805160a05160c05160e0516101005161256562000cbd60003960005050600081816104620152611a8b0152600081816104ec0152818161090f015281816113b101528181611596015281816115d0015261184601526000818161020c01528181611af70152611ba70152600081816103860152818161054a01528181610614015281816109a601528181610a7301528181610afd01528181610bb0015281816111f2015281816117a001526118a401526125656000f3fe6080604052600436106101845760003560e01c8063b0d691fe116100d6578063e1d8153c1161007f578063f2fde38b11610059578063f2fde38b146104a4578063f60fdcb3146104c4578063fc0c546a146104da57600080fd5b8063e1d8153c1461041a578063eb6d3a1114610450578063f14d64ed1461048457600080fd5b8063c399ec88116100b0578063c399ec88146103dd578063d0e30db0146103f2578063d7a23b3c146103fa57600080fd5b8063b0d691fe14610374578063bb9fe6bf146103a8578063c23a5cea146103bd57600080fd5b8063715018a6116101385780638da5cb5b116101125780638da5cb5b146103095780639e281a9814610334578063a0840fa71461035457600080fd5b8063715018a6146102b45780637c627b21146102c95780637c986aac146102e957600080fd5b80632681f7e4116101695780632681f7e4146101fa5780633ba9290f14610258578063703ae88f1461028657600080fd5b80630396cb60146101c5578063205c2878146101da57600080fd5b366101c05760405134815233907f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258749060200160405180910390a2005b600080fd5b6101d86101d3366004611ec5565b61050e565b005b3480156101e657600080fd5b506101d86101f5366004611f0d565b6105c0565b34801561020657600080fd5b5061022e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561026457600080fd5b50610278610273366004611f47565b610658565b60405190815260200161024f565b34801561029257600080fd5b506102a66102a1366004611f64565b610884565b60405161024f929190611fdc565b3480156102c057600080fd5b506101d86108a7565b3480156102d557600080fd5b506101d86102e4366004612035565b6108bb565b3480156102f557600080fd5b506102786103043660046120cd565b6108d7565b34801561031557600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661022e565b34801561034057600080fd5b506101d861034f366004611f0d565b610902565b34801561036057600080fd5b506101d861036f3660046120ef565b610939565b34801561038057600080fd5b5061022e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b457600080fd5b506101d861099c565b3480156103c957600080fd5b506101d86103d836600461218d565b610a26565b3480156103e957600080fd5b50610278610acc565b6101d8610b82565b34801561040657600080fd5b506102786104153660046120cd565b610c0a565b34801561042657600080fd5b506004546104399065ffffffffffff1681565b60405165ffffffffffff909116815260200161024f565b34801561045c57600080fd5b5061022e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561049057600080fd5b506101d861049f3660046121c5565b610c22565b3480156104b057600080fd5b506101d86104bf36600461218d565b610e37565b3480156104d057600080fd5b5061027860035481565b3480156104e657600080fd5b5061022e7f000000000000000000000000000000000000000000000000000000000000000081565b610516610e98565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b1580156105a457600080fd5b505af11580156105b8573d6000803e3d6000fd5b505050505050565b6105c8610e98565b6040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b1580156105a457600080fd5b60055460045460009165ffffffffffff9081169183916106799116426122a8565b9050831580156106895750818111155b1561069957505060035492915050565b60065460055460035465ffffffffffff770100000000000000000000000000000000000000000000008404169273ffffffffffffffffffffffffffffffffffffffff6601000000000000909304831692169060006106f684610eeb565b60065490915060019074010000000000000000000000000000000000000000900460ff1661072a5761072784610eeb565b90505b600654600090610776908490849060ff750100000000000000000000000000000000000000000082048116917601000000000000000000000000000000000000000000009004166110d7565b90506000846107906a52b7d2dcc80cd2e4000000846122bb565b61079a9190612301565b905060008c806107bd57506107ba896a52b7d2dcc80cd2e400000061233c565b82115b806107db57506107d8896a52b7d2dcc80cd2e40000006122a8565b82105b9050806107f35750939b9a5050505050505050505050565b6003839055600480547fffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000164265ffffffffffff16908117909155604080518581526020810189905290810191909152929586937ed4fe314618b73a96886b87817a53a5ed51433b0234c85a5e9dafe2cb7b88429060600160405180910390a150949c9b505050505050505050505050565b606060006108906111da565b61089b858585611279565b91509150935093915050565b6108af610e98565b6108b9600061149c565b565b6108c36111da565b6108d08585858585611511565b5050505050565b6000816108ef6a52b7d2dcc80cd2e4000000856122bb565b6108f99190612301565b90505b92915050565b61090a610e98565b6109357f00000000000000000000000000000000000000000000000000000000000000008383611669565b5050565b610941610e98565b61099981805160015560208101516002805460409093015160ff166301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090931662ffffff90921691909117919091179055565b50565b6109a4610e98565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a0c57600080fd5b505af1158015610a20573d6000803e3d6000fd5b50505050565b610a2e610e98565b6040517fc23a5cea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea906024015b600060405180830381600087803b158015610ab857600080fd5b505af11580156108d0573d6000803e3d6000fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7d919061234f565b905090565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99034906024016000604051808303818588803b158015610ab857600080fd5b60006a52b7d2dcc80cd2e40000006108ef83856122bb565b610c2a610e98565b610c406a52b7d2dcc80cd2e400000060026122bb565b81511115610caf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f54504d3a207072696365206d61726b757020746f6f206869676800000000000060448201526064015b60405180910390fd5b80516a52b7d2dcc80cd2e40000001115610d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54504d3a207072696365206d61726b757020746f6f206c6f77000000000000006044820152606401610ca6565b805160088190556020808301805160098054604080880180516060808b01805165ffffffffffff908116760100000000000000000000000000000000000000000000027fffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff948216700100000000000000000000000000000000027fffffffffffffffffffff000000000000000000000000000000000000000000009098166fffffffffffffffffffffffffffffffff9a8b161797909717939093169590951790955582519889529551909416958701959095529151831685850152905190911690830152517fcd938817f1c47094d43be3d07e8c67e11766db2e11a2b4376e7ee937b15793a29181900360800190a150565b610e3f610e98565b73ffffffffffffffffffffffffffffffffffffffff8116610e8f576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610ca6565b6109998161149c565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108b9576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610ca6565b60008060008060008573ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f629190612382565b94509450509350935060008313610fd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54504d3a20436861696e6c696e6b207072696365203c3d2030000000000000006044820152606401610ca6565b610fe26202a300426122a8565b82101561104b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f54504d3a20496e636f6d706c65746520726f756e6400000000000000000000006044820152606401610ca6565b8369ffffffffffffffffffff168169ffffffffffffffffffff1610156110cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f54504d3a205374616c65207072696365000000000000000000000000000000006044820152606401610ca6565b5090949350505050565b6000821561111c57600754859061110b906fffffffffffffffffffffffffffffffff166a52b7d2dcc80cd2e40000006122bb565b6111159190612301565b9450611153565b6007546fffffffffffffffffffffffffffffffff16611146866a52b7d2dcc80cd2e40000006122bb565b6111509190612301565b94505b811561119d5760075470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1661118c86866122bb565b6111969190612301565b90506111d2565b600754849061118c9070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16876122bb565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e7400000000000000000000006044820152606401610ca6565b6008546060906000908160346112936101008901896123d2565b905003905080600014806112a75750806020145b61130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f54504d3a20696e76616c69642064617461206c656e67746800000000000000006044820152606401610ca6565b60095460035465ffffffffffff7001000000000000000000000000000000009092049190911660c08901350286019060009084906a52b7d2dcc80cd2e4000000028161135b5761135b6122d2565b0490508260200361139e5760006113766101008b018b6123d2565b6113859160549160349161243e565b61138e91612468565b90508181101561139c578091505b505b60006113aa83836108d7565b90506113e47f00000000000000000000000000000000000000000000000000000000000000006113dd60208d018d61218d565b30846116ef565b806113f260208c018c61218d565b60405160200161142292919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905260095460045491985061148d91600091760100000000000000000000000000000000000000000000900465ffffffffffff90811691160181611735565b95505050505050935093915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600854600080611523868801886124a4565b9150915060006115336000610658565b90506000846a52b7d2dcc80cd2e4000000830281611553576115536122d2565b6009549190049150700100000000000000000000000000000000900465ffffffffffff1686028701600061158782846108d7565b9050808611156115c3576115be7f000000000000000000000000000000000000000000000000000000000000000086838903611669565b6115f9565b808610156115f9576115f97f000000000000000000000000000000000000000000000000000000000000000086308985036116ef565b60408051828152602081018b905290810185905273ffffffffffffffffffffffffffffffffffffffff8616907f46caa0511cf037f06f57a0bf273a2ff04229f5b12fb04675234a6cbe2e7f1a899060600160405180910390a261165b8461176f565b505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526116ea91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061191c565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610a209186918216906323b872dd906084016116a3565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b8561175d576000611760565b60015b60ff16171790505b9392505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156117fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611820919061234f565b6009549091506fffffffffffffffffffffffffffffffff1681101561093557600061186b7f0000000000000000000000000000000000000000000000000000000000000000846119b2565b905061187681611ac2565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99047906024016000604051808303818588803b1580156118fe57600080fd5b505af1158015611912573d6000803e3d6000fd5b5050505050505050565b600061193e73ffffffffffffffffffffffffffffffffffffffff841683611b3b565b9050805160001415801561196357508080602001905181019061196191906124d4565b155b156116ea576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610ca6565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a45919061234f565b90506000611a68611a568386610c0a565b6002546301000000900460ff16611b49565b600154909150811015611a80576000925050506108fc565b600254611ab99086907f0000000000000000000000000000000000000000000000000000000000000000908590859062ffffff16611b69565b95945050505050565b6040517f49404b7c000000000000000000000000000000000000000000000000000000008152600481018290523060248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906349404b7c90604401610a9e565b60606108f983836000611d31565b60006103e8611b5b60ff8416826124f1565b6108ef9061ffff16856122bb565b604080516101008101825273ffffffffffffffffffffffffffffffffffffffff87811682528681166020830190815262ffffff8581168486019081527f0000000000000000000000000000000000000000000000000000000000000000841660608601818152426080880190815260a088018c815260c089018c8152600060e08b018181529b517f414bf3890000000000000000000000000000000000000000000000000000000081528b518b16600482015298518a1660248a0152955190961660448801529151871660648701525160848601525160a4850152915160c4840152945190921660e482015263414bf38990610104016020604051808303816000875af1925050508015611cb8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611cb59181019061234f565b60015b611d24576040805173ffffffffffffffffffffffffffffffffffffffff808a16825288166020820152908101869052606081018590527ff7edd4c6ec425decf715a8b8eaa3b65d3d86e31ad0ff750aa60fa834190f515f9060800160405180910390a160009150611d27565b91505b5095945050505050565b606081471015611d6f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610ca6565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051611d989190612513565b60006040518083038185875af1925050503d8060008114611dd5576040519150601f19603f3d011682016040523d82523d6000602084013e611dda565b606091505b5091509150611dea868383611df4565b9695505050505050565b606082611e0957611e0482611e83565b611768565b8151158015611e2d575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611e7c576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610ca6565b5080611768565b805115611e935780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611ed757600080fd5b813563ffffffff8116811461176857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461099957600080fd5b60008060408385031215611f2057600080fd5b8235611f2b81611eeb565b946020939093013593505050565b801515811461099957600080fd5b600060208284031215611f5957600080fd5b813561176881611f39565b600080600060608486031215611f7957600080fd5b833567ffffffffffffffff811115611f9057600080fd5b84016101408187031215611fa357600080fd5b95602085013595506040909401359392505050565b60005b83811015611fd3578181015183820152602001611fbb565b50506000910152565b6040815260008351806040840152611ffb816060850160208801611fb8565b602083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b60008060008060006080868803121561204d57600080fd5b85356003811061205c57600080fd5b9450602086013567ffffffffffffffff8082111561207957600080fd5b818801915088601f83011261208d57600080fd5b81358181111561209c57600080fd5b8960208285010111156120ae57600080fd5b9699602092909201985095966040810135965060600135945092505050565b600080604083850312156120e057600080fd5b50508035926020909101359150565b60006060828403121561210157600080fd5b6040516060810181811067ffffffffffffffff8211171561214b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282358152602083013562ffffff8116811461216857600080fd5b6020820152604083013560ff8116811461218157600080fd5b60408201529392505050565b60006020828403121561219f57600080fd5b813561176881611eeb565b803565ffffffffffff811681146121c057600080fd5b919050565b6000608082840312156121d757600080fd5b6040516080810181811067ffffffffffffffff82111715612221577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235815260208301356fffffffffffffffffffffffffffffffff8116811461224b57600080fd5b602082015261225c604084016121aa565b604082015261226d606084016121aa565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156108fc576108fc612279565b80820281158282048414176108fc576108fc612279565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612337577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156108fc576108fc612279565b60006020828403121561236157600080fd5b5051919050565b805169ffffffffffffffffffff811681146121c057600080fd5b600080600080600060a0868803121561239a57600080fd5b6123a386612368565b94506020860151935060408601519250606086015191506123c660808701612368565b90509295509295909350565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261240757600080fd5b83018035915067ffffffffffffffff82111561242257600080fd5b60200191503681900382131561243757600080fd5b9250929050565b6000808585111561244e57600080fd5b8386111561245b57600080fd5b5050820193919092039150565b803560208310156108fc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b600080604083850312156124b757600080fd5b8235915060208301356124c981611eeb565b809150509250929050565b6000602082840312156124e657600080fd5b815161176881611f39565b61ffff82811682821603908082111561250c5761250c612279565b5092915050565b60008251612525818460208701611fb8565b919091019291505056fea26469706673582212204d43bd3f3b844c345b83768b8f40c3613a05b0b00d582b48ad67f0fbc3d445a764736f6c63430008170033"; + "0x6101006040523480156200001257600080fd5b50604051620034fe380380620034fe83398101604081905262000035916200099d565b82888787858b33806200006357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200006e816200018b565b506200007a81620001db565b6001600160a01b0390811660805260405163095ea7b360e01b8152838216600482015260001960248201529085169063095ea7b3906044016020604051808303816000875af1158015620000d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f8919062000ab3565b506001600160a01b0380851660c05283811660e052821660a0526200015081805160015560208101516002805460409093015160ff1663010000000263ffffffff1990931662ffffff90921691909117919091179055565b505060001960035550620001669050816200029e565b5062000172846200059c565b6200017d8162000729565b505050505050505062000c36565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516301ffc9a760e01b815263122a0e9b60e31b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d919062000ab3565b6200029b5760405162461bcd60e51b815260206004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d61746368000060448201526064016200005a565b50565b805160058054602084015160408501516001600160a01b039081166c01000000000000000000000000026001600160601b0365ffffffffffff9384166601000000000000026001600160601b031990951693909616929092179290921793909316929092179055606082015160068054608085015160a086015160c08701511515600160b01b0260ff60b01b19911515600160a81b029190911661ffff60a81b19921515600160a01b026001600160a81b0319909416959096169490941791909117169290921717905560e081015160078190556a52b7d2dcc80cd2e40000001015620003ce5760405162461bcd60e51b815260206004820152601e60248201527f54504d3a20757064617465207468726573686f6c6420746f6f2068696768000060448201526064016200005a565b6005600001600c9054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044b919062000ad8565b6200045890600a62000c0b565b600880546001600160801b0319166001600160801b0392909216919091179055600654600160a01b900460ff1615620004fe576006546001600160a01b031615620004e65760405162461bcd60e51b815260206004820152601f60248201527f54504d3a206e6174697665206f7261636c65206d757374206265207a65726f0060448201526064016200005a565b600880546001600160801b0316600160801b17905550565b6006546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa15801562000549573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200056f919062000ad8565b6200057c90600a62000c0b565b600880546001600160801b03928316600160801b02921691909117905550565b620005a66200076a565b620005be6a52b7d2dcc80cd2e4000000600262000c1c565b81511115620006105760405162461bcd60e51b815260206004820152601a60248201527f54504d3a207072696365206d61726b757020746f6f206869676800000000000060448201526064016200005a565b80516a52b7d2dcc80cd2e400000011156200066e5760405162461bcd60e51b815260206004820152601960248201527f54504d3a207072696365206d61726b757020746f6f206c6f770000000000000060448201526064016200005a565b8051600981905560208083018051600a8054604080880180516060808b01805165ffffffffffff908116600160b01b0265ffffffffffff60b01b19948216600160801b026001600160b01b03199098166001600160801b039a8b161797909717939093169590951790955582519889529551909416958701959095529151831685850152905190911690830152517fcd938817f1c47094d43be3d07e8c67e11766db2e11a2b4376e7ee937b15793a29181900360800190a150565b620007336200076a565b6001600160a01b0381166200075f57604051631e4fbdf760e01b8152600060048201526024016200005a565b6200029b816200018b565b6000546001600160a01b03163314620007995760405163118cdaa760e01b81523360048201526024016200005a565b565b6001600160a01b03811681146200029b57600080fd5b604051608081016001600160401b0381118282101715620007e257634e487b7160e01b600052604160045260246000fd5b60405290565b805165ffffffffffff81168114620007ff57600080fd5b919050565b8051620007ff816200079b565b80518015158114620007ff57600080fd5b60006101008083850312156200083757600080fd5b604051908101906001600160401b03821181831017156200086857634e487b7160e01b600052604160045260246000fd5b816040528092506200087a84620007e8565b81526200088a60208501620007e8565b602082015260408401519150620008a1826200079b565b816040820152620008b56060850162000804565b6060820152620008c86080850162000811565b6080820152620008db60a0850162000811565b60a0820152620008ee60c0850162000811565b60c082015260e084015160e0820152505092915050565b805160ff81168114620007ff57600080fd5b6000606082840312156200092a57600080fd5b604051606081016001600160401b03811182821017156200095b57634e487b7160e01b600052604160045260246000fd5b806040525080915082518152602083015162ffffff811681146200097e57600080fd5b6020820152620009916040840162000905565b60408201525092915050565b600080600080600080600080888a03610280811215620009bc57600080fd5b8951620009c9816200079b565b60208b0151909950620009dc816200079b565b60408b0151909850620009ef816200079b565b60608b015190975062000a02816200079b565b95506080607f198201121562000a1757600080fd5b5062000a22620007b1565b60808a0151815260a08a01516001600160801b038116811462000a4457600080fd5b602082015262000a5760c08b01620007e8565b604082015262000a6a60e08b01620007e8565b6060820152935062000a818a6101008b0162000822565b925062000a938a6102008b0162000917565b915062000aa46102608a0162000804565b90509295985092959890939650565b60006020828403121562000ac657600080fd5b62000ad18262000811565b9392505050565b60006020828403121562000aeb57600080fd5b62000ad18262000905565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000b4d57816000190482111562000b315762000b3162000af6565b8085161562000b3f57918102915b93841c939080029062000b11565b509250929050565b60008262000b665750600162000c05565b8162000b755750600062000c05565b816001811462000b8e576002811462000b995762000bb9565b600191505062000c05565b60ff84111562000bad5762000bad62000af6565b50506001821b62000c05565b5060208310610133831016604e8410600b841016171562000bde575081810a62000c05565b62000bea838362000b0c565b806000190482111562000c015762000c0162000af6565b0290505b92915050565b600062000ad160ff84168362000b55565b808202811582820484141762000c055762000c0562000af6565b60805160a05160c05160e05161281762000ce76000396000818161053f0152611cf50152600081816105c901528181610aaa015281816115d0015281816117b7015281816117f10152611ab001526000818161024201528181611d610152611e110152600081816103bc01528181610627015281816107cd01528181610b4101528181610c0e01528181610c9801528181610d4b0152818161139a01528181611a0a0152611b0e01526128176000f3fe60806040526004361061019a5760003560e01c8063b0d691fe116100e1578063d7a23b3c1161008a578063f14d64ed11610064578063f14d64ed14610561578063f2fde38b14610581578063f60fdcb3146105a1578063fc0c546a146105b757600080fd5b8063d7a23b3c146104d7578063e1d8153c146104f7578063eb6d3a111461052d57600080fd5b8063c399ec88116100bb578063c399ec8814610413578063cb721cfd14610428578063d0e30db0146104cf57600080fd5b8063b0d691fe146103aa578063bb9fe6bf146103de578063c23a5cea146103f357600080fd5b8063715018a6116101435780638da5cb5b1161011d5780638da5cb5b1461033f5780639e281a981461036a578063a0840fa71461038a57600080fd5b8063715018a6146102ea5780637c627b21146102ff5780637c986aac1461031f57600080fd5b80632681f7e4116101745780632681f7e4146102305780633ba9290f1461028e57806352b7512c146102bc57600080fd5b80630396cb60146101db5780631b9a91a4146101f0578063205c28781461021057600080fd5b366101d65760405134815233907f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258749060200160405180910390a2005b600080fd5b6101ee6101e936600461212f565b6105eb565b005b3480156101fc57600080fd5b506101ee61020b366004612177565b61069d565b34801561021c57600080fd5b506101ee61022b366004612177565b610779565b34801561023c57600080fd5b506102647f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561029a57600080fd5b506102ae6102a93660046121b1565b610811565b604051908152602001610285565b3480156102c857600080fd5b506102dc6102d73660046121ce565b610a1f565b604051610285929190612246565b3480156102f657600080fd5b506101ee610a42565b34801561030b57600080fd5b506101ee61031a36600461229f565b610a56565b34801561032b57600080fd5b506102ae61033a366004612337565b610a72565b34801561034b57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610264565b34801561037657600080fd5b506101ee610385366004612177565b610a9d565b34801561039657600080fd5b506101ee6103a5366004612359565b610ad4565b3480156103b657600080fd5b506102647f000000000000000000000000000000000000000000000000000000000000000081565b3480156103ea57600080fd5b506101ee610b37565b3480156103ff57600080fd5b506101ee61040e3660046123f7565b610bc1565b34801561041f57600080fd5b506102ae610c67565b34801561043457600080fd5b50600954600a5461049091906fffffffffffffffffffffffffffffffff81169065ffffffffffff700100000000000000000000000000000000820481169176010000000000000000000000000000000000000000000090041684565b604080519485526fffffffffffffffffffffffffffffffff909316602085015265ffffffffffff91821692840192909252166060820152608001610285565b6101ee610d1d565b3480156104e357600080fd5b506102ae6104f2366004612337565b610da5565b34801561050357600080fd5b506004546105169065ffffffffffff1681565b60405165ffffffffffff9091168152602001610285565b34801561053957600080fd5b506102647f000000000000000000000000000000000000000000000000000000000000000081565b34801561056d57600080fd5b506101ee61057c36600461242f565b610dbd565b34801561058d57600080fd5b506101ee61059c3660046123f7565b610fcd565b3480156105ad57600080fd5b506102ae60035481565b3480156105c357600080fd5b506102647f000000000000000000000000000000000000000000000000000000000000000081565b6105f361102e565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b15801561068157600080fd5b505af1158015610695573d6000803e3d6000fd5b505050505050565b6106a561102e565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146106ff576040519150601f19603f3d011682016040523d82523d6000602084013e610704565b606091505b5050905080610774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f7769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b505050565b61078161102e565b6040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b15801561068157600080fd5b60055460045460009165ffffffffffff908116918391610832911642612512565b9050831580156108425750818111155b1561085257505060035492915050565b6007546005546006546003546c0100000000000000000000000090920473ffffffffffffffffffffffffffffffffffffffff90811692911690600061089684611081565b60065490915060019074010000000000000000000000000000000000000000900460ff166108ca576108c784611081565b90505b600654600090610916908490849060ff7501000000000000000000000000000000000000000000820481169176010000000000000000000000000000000000000000000090041661127f565b9050600084610930836a52b7d2dcc80cd2e4000000612525565b61093a919061256b565b905060008c8061095d575061095a896a52b7d2dcc80cd2e40000006125a6565b82115b8061097b5750610978896a52b7d2dcc80cd2e4000000612512565b82105b9050806109935750939b9a5050505050505050505050565b6003839055600480547fffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000164265ffffffffffff169081179091556040805185815260208101899052908101919091527ed4fe314618b73a96886b87817a53a5ed51433b0234c85a5e9dafe2cb7b88429060600160405180910390a150909b9a5050505050505050505050565b60606000610a2b611382565b610a36858585611421565b91509150935093915050565b610a4a61102e565b610a5460006116bd565b565b610a5e611382565b610a6b8585858585611732565b5050505050565b600081610a8a6a52b7d2dcc80cd2e400000085612525565b610a94919061256b565b90505b92915050565b610aa561102e565b610ad07f0000000000000000000000000000000000000000000000000000000000000000838361188a565b5050565b610adc61102e565b610b3481805160015560208101516002805460409093015160ff166301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090931662ffffff90921691909117919091179055565b50565b610b3f61102e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ba757600080fd5b505af1158015610bbb573d6000803e3d6000fd5b50505050565b610bc961102e565b6040517fc23a5cea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea906024015b600060405180830381600087803b158015610c5357600080fd5b505af1158015610a6b573d6000803e3d6000fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1891906125b9565b905090565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99034906024016000604051808303818588803b158015610c5357600080fd5b60006a52b7d2dcc80cd2e4000000610a8a8385612525565b610dc561102e565b610ddb6a52b7d2dcc80cd2e40000006002612525565b81511115610e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f54504d3a207072696365206d61726b757020746f6f2068696768000000000000604482015260640161076b565b80516a52b7d2dcc80cd2e40000001115610ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54504d3a207072696365206d61726b757020746f6f206c6f7700000000000000604482015260640161076b565b8051600981905560208083018051600a8054604080880180516060808b01805165ffffffffffff908116760100000000000000000000000000000000000000000000027fffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff948216700100000000000000000000000000000000027fffffffffffffffffffff000000000000000000000000000000000000000000009098166fffffffffffffffffffffffffffffffff9a8b161797909717939093169590951790955582519889529551909416958701959095529151831685850152905190911690830152517fcd938817f1c47094d43be3d07e8c67e11766db2e11a2b4376e7ee937b15793a29181900360800190a150565b610fd561102e565b73ffffffffffffffffffffffffffffffffffffffff8116611025576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161076b565b610b34816116bd565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a54576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161076b565b60008060008060008573ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156110d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f891906125ec565b9450945050935093506000831361116b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54504d3a20436861696e6c696e6b207072696365203c3d203000000000000000604482015260640161076b565b60055461118a906601000000000000900465ffffffffffff1642612512565b8210156111f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f54504d3a20496e636f6d706c65746520726f756e640000000000000000000000604482015260640161076b565b8369ffffffffffffffffffff168169ffffffffffffffffffff161015611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f54504d3a205374616c6520707269636500000000000000000000000000000000604482015260640161076b565b5090949350505050565b600082156112c45760085485906112b3906fffffffffffffffffffffffffffffffff166a52b7d2dcc80cd2e4000000612525565b6112bd919061256b565b94506112fb565b6008546fffffffffffffffffffffffffffffffff166112ee866a52b7d2dcc80cd2e4000000612525565b6112f8919061256b565b94505b81156113455760085470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166113348686612525565b61133e919061256b565b905061137a565b60085484906113349070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1687612525565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e740000000000000000000000604482015260640161076b565b60095460609060009081603461143a60e089018961263c565b9050039050806000148061144e5750806020145b6114b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f54504d3a20696e76616c69642064617461206c656e6774680000000000000000604482015260640161076b565b60006114bf8861190b565b600a54909150700100000000000000000000000000000000900465ffffffffffff166114ea89611929565b8110611552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f54504d3a20706f73744f704761734c696d697420746f6f206c6f770000000000604482015260640161076b565b6000828202880190506000856a52b7d2dcc80cd2e4000000600354028161157b5761157b61253c565b049050846020036115bd57600061159560e08d018d61263c565b6115a4916054916034916126a8565b6115ad916126d2565b9050818110156115bb578091505b505b60006115c98383610a72565b90506116037f00000000000000000000000000000000000000000000000000000000000000006115fc60208f018f6123f7565b3084611959565b8061161160208e018e6123f7565b60405160200161164192919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152919052600a54600454919a506116ac91600091760100000000000000000000000000000000000000000000900465ffffffffffff9081169116018161199f565b975050505050505050935093915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009546000806117448688018861270e565b9150915060006117546000610811565b90506000846a52b7d2dcc80cd2e40000008302816117745761177461253c565b600a549190049150700100000000000000000000000000000000900465ffffffffffff168602870160006117a88284610a72565b9050808611156117e4576117df7f00000000000000000000000000000000000000000000000000000000000000008683890361188a565b61181a565b8086101561181a5761181a7f00000000000000000000000000000000000000000000000000000000000000008630898503611959565b60408051828152602081018b905290810184905273ffffffffffffffffffffffffffffffffffffffff8616907f46caa0511cf037f06f57a0bf273a2ff04229f5b12fb04675234a6cbe2e7f1a899060600160405180910390a261187c846119d9565b505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261077491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611b86565b60006fffffffffffffffffffffffffffffffff60c083013516610a97565b600061193860e083018361263c565b611947916034916024916126a8565b6119509161273e565b60801c92915050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610bbb9186918216906323b872dd906084016118c4565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b856119c75760006119ca565b60015b60ff16171790505b9392505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8a91906125b9565b600a549091506fffffffffffffffffffffffffffffffff16811015610ad0576000611ad57f000000000000000000000000000000000000000000000000000000000000000084611c1c565b9050611ae081611d2c565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99047906024016000604051808303818588803b158015611b6857600080fd5b505af1158015611b7c573d6000803e3d6000fd5b5050505050505050565b6000611ba873ffffffffffffffffffffffffffffffffffffffff841683611da5565b90508051600014158015611bcd575080806020019051810190611bcb9190612786565b155b15610774576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260240161076b565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015611c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611caf91906125b9565b90506000611cd2611cc08386610da5565b6002546301000000900460ff16611db3565b600154909150811015611cea57600092505050610a97565b600254611d239086907f0000000000000000000000000000000000000000000000000000000000000000908590859062ffffff16611dd3565b95945050505050565b6040517f49404b7c000000000000000000000000000000000000000000000000000000008152600481018290523060248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906349404b7c90604401610c39565b6060610a9483836000611f9b565b60006103e8611dc560ff8416826127a3565b610a8a9061ffff1685612525565b604080516101008101825273ffffffffffffffffffffffffffffffffffffffff87811682528681166020830190815262ffffff8581168486019081527f0000000000000000000000000000000000000000000000000000000000000000841660608601818152426080880190815260a088018c815260c089018c8152600060e08b018181529b517f414bf3890000000000000000000000000000000000000000000000000000000081528b518b16600482015298518a1660248a0152955190961660448801529151871660648701525160848601525160a4850152915160c4840152945190921660e482015263414bf38990610104016020604051808303816000875af1925050508015611f22575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611f1f918101906125b9565b60015b611f8e576040805173ffffffffffffffffffffffffffffffffffffffff808a16825288166020820152908101869052606081018590527ff7edd4c6ec425decf715a8b8eaa3b65d3d86e31ad0ff750aa60fa834190f515f9060800160405180910390a160009150611f91565b91505b5095945050505050565b606081471015611fd9576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161076b565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161200291906127c5565b60006040518083038185875af1925050503d806000811461203f576040519150601f19603f3d011682016040523d82523d6000602084013e612044565b606091505b509150915061205486838361205e565b9695505050505050565b6060826120735761206e826120ed565b6119d2565b8151158015612097575073ffffffffffffffffffffffffffffffffffffffff84163b155b156120e6576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161076b565b50806119d2565b8051156120fd5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561214157600080fd5b813563ffffffff811681146119d257600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610b3457600080fd5b6000806040838503121561218a57600080fd5b823561219581612155565b946020939093013593505050565b8015158114610b3457600080fd5b6000602082840312156121c357600080fd5b81356119d2816121a3565b6000806000606084860312156121e357600080fd5b833567ffffffffffffffff8111156121fa57600080fd5b8401610120818703121561220d57600080fd5b95602085013595506040909401359392505050565b60005b8381101561223d578181015183820152602001612225565b50506000910152565b6040815260008351806040840152612265816060850160208801612222565b602083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b6000806000806000608086880312156122b757600080fd5b8535600381106122c657600080fd5b9450602086013567ffffffffffffffff808211156122e357600080fd5b818801915088601f8301126122f757600080fd5b81358181111561230657600080fd5b89602082850101111561231857600080fd5b9699602092909201985095966040810135965060600135945092505050565b6000806040838503121561234a57600080fd5b50508035926020909101359150565b60006060828403121561236b57600080fd5b6040516060810181811067ffffffffffffffff821117156123b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282358152602083013562ffffff811681146123d257600080fd5b6020820152604083013560ff811681146123eb57600080fd5b60408201529392505050565b60006020828403121561240957600080fd5b81356119d281612155565b803565ffffffffffff8116811461242a57600080fd5b919050565b60006080828403121561244157600080fd5b6040516080810181811067ffffffffffffffff8211171561248b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235815260208301356fffffffffffffffffffffffffffffffff811681146124b557600080fd5b60208201526124c660408401612414565b60408201526124d760608401612414565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610a9757610a976124e3565b8082028115828204841417610a9757610a976124e3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826125a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820180821115610a9757610a976124e3565b6000602082840312156125cb57600080fd5b5051919050565b805169ffffffffffffffffffff8116811461242a57600080fd5b600080600080600060a0868803121561260457600080fd5b61260d866125d2565b9450602086015193506040860151925060608601519150612630608087016125d2565b90509295509295909350565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261267157600080fd5b83018035915067ffffffffffffffff82111561268c57600080fd5b6020019150368190038213156126a157600080fd5b9250929050565b600080858511156126b857600080fd5b838611156126c557600080fd5b5050820193919092039150565b80356020831015610a97577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b6000806040838503121561272157600080fd5b82359150602083013561273381612155565b809150509250929050565b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000813581811691601085101561277e5780818660100360031b1b83161692505b505092915050565b60006020828403121561279857600080fd5b81516119d2816121a3565b61ffff8281168282160390808211156127be576127be6124e3565b5092915050565b600082516127d7818460208701612222565b919091019291505056fea2646970667358221220351b923721ca4c60e0d0fffdd716ec27ddf462538c77ecc2219ed2f0122bd17164736f6c63430008170033"; type TokenPaymasterConstructorParams = | [signer?: Signer] diff --git a/packages/types/src/contracts/EPv7/factories/samples/VerifyingPaymaster__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/VerifyingPaymaster__factory.ts index 285f7c9c..9aefafb7 100644 --- a/packages/types/src/contracts/EPv7/factories/samples/VerifyingPaymaster__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/samples/VerifyingPaymaster__factory.ts @@ -3,7 +3,7 @@ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../common"; +import type { PromiseOrValue } from "../../../common"; import type { VerifyingPaymaster, VerifyingPaymasterInterface, @@ -175,14 +175,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -353,14 +348,9 @@ const _abi = [ type: "uint256", }, { - internalType: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", + internalType: "bytes32", + name: "gasFees", + type: "bytes32", }, { internalType: "bytes", @@ -451,7 +441,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620016f2380380620016f28339810160408190526200003491620001b6565b8133806200005d57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b62000068816200008d565b506200007481620000dd565b6001600160a01b039081166080521660a0525062000220565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516301ffc9a760e01b8152639d95230160e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801562000129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014f9190620001f5565b6200019d5760405162461bcd60e51b815260206004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d617463680000604482015260640162000054565b50565b6001600160a01b03811681146200019d57600080fd5b60008060408385031215620001ca57600080fd5b8251620001d781620001a0565b6020840151909250620001ea81620001a0565b809150509250929050565b6000602082840312156200020857600080fd5b815180151581146200021957600080fd5b9392505050565b60805160a0516114746200027e600039600081816101340152610b4901526000818161027e0152818161034e015281816104180152818161062e015281816106fb0152818161078401528181610837015261096501526114746000f3fe6080604052600436106100e85760003560e01c80638da5cb5b1161008a578063c23a5cea11610059578063c23a5cea146102b5578063c399ec88146102d5578063d0e30db0146102ea578063f2fde38b146102f257600080fd5b80638da5cb5b1461021157806394d4ad601461023c578063b0d691fe1461026c578063bb9fe6bf146102a057600080fd5b80632f324181116100c65780632f32418114610180578063703ae88f146101ae578063715018a6146101dc5780637c627b21146101f157600080fd5b80630396cb60146100ed578063205c28781461010257806323d9ac9b14610122575b600080fd5b6101006100fb366004610f63565b610312565b005b34801561010e57600080fd5b5061010061011d366004610fb2565b6103c4565b34801561012e57600080fd5b506101567f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018c57600080fd5b506101a061019b366004611012565b61045c565b604051908152602001610177565b3480156101ba57600080fd5b506101ce6101c9366004611070565b610588565b6040516101779291906110be565b3480156101e857600080fd5b506101006105ac565b3480156101fd57600080fd5b5061010061020c36600461117a565b6105c0565b34801561021d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610156565b34801561024857600080fd5b5061025c6102573660046111e5565b6105dc565b6040516101779493929190611227565b34801561027857600080fd5b506101567f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ac57600080fd5b50610100610624565b3480156102c157600080fd5b506101006102d0366004611291565b6106ae565b3480156102e157600080fd5b506101a0610753565b610100610809565b3480156102fe57600080fd5b5061010061030d366004611291565b610891565b61031a6108fa565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b1580156103a857600080fd5b505af11580156103bc573d6000803e3d6000fd5b505050505050565b6103cc6108fa565b6040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b1580156103a857600080fd5b6000833580602086013561047360408801886112ae565b604051610481929190611313565b60405190819003902061049760608901896112ae565b6040516104a5929190611313565b60405190819003902060808901356104c16101008b018b6112ae565b6104d091603491601491611323565b6104d99161134d565b6040805173ffffffffffffffffffffffffffffffffffffffff90971660208801528601949094526060850192909252608084015260a08381019190915260c08381019290925287013560e08381019190915290870135610100830152860135610120820152466101408201523061016082015265ffffffffffff80861661018083015284166101a08201526101c001604051602081830303815290604052805190602001209150509392505050565b6060600061059461094d565b61059f8585856109ec565b915091505b935093915050565b6105b46108fa565b6105be6000610bd9565b565b6105c861094d565b6105d58585858585610c4e565b5050505050565b60008036816105ee8560348189611323565b8101906105fb9190611389565b9094509250858561060e603460406113bc565b610619928290611323565b949793965094505050565b61062c6108fa565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b50505050565b6106b66108fa565b6040517fc23a5cea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b15801561073f57600080fd5b505af11580156105d5573d6000803e3d6000fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080491906113f6565b905090565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99034906024016000604051808303818588803b15801561073f57600080fd5b6108996108fa565b73ffffffffffffffffffffffffffffffffffffffff81166108ee576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108f781610bd9565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105be576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016108e5565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e74000000000000000000000060448201526064016108e5565b6060600080803681610a056102576101008b018b6112ae565b929650909450925090506040811480610a1e5750604181145b610aac57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f566572696679696e675061796d61737465723a20696e76616c6964207369676e60448201527f6174757265206c656e67746820696e207061796d6173746572416e644461746160648201526084016108e5565b6000610aef610abc8b878761045c565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b9050610b318184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610cb092505050565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610bae57610b8f60018686610cdc565b60405180602001604052806000815250909650965050505050506105a4565b610bba60008686610cdc565b6040805160208101909152600081529b909a5098505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6d757374206f766572726964650000000000000000000000000000000000000060448201526064016108e5565b600080600080610cc08686610d14565b925092509250610cd08282610d61565b50909150505b92915050565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b85610d04576000610d07565b60015b60ff161717949350505050565b60008060008351604103610d4e5760208401516040850151606086015160001a610d4088828585610e69565b955095509550505050610d5a565b50508151600091506002905b9250925092565b6000826003811115610d7557610d7561140f565b03610d7e575050565b6001826003811115610d9257610d9261140f565b03610dc9576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115610ddd57610ddd61140f565b03610e17576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016108e5565b6003826003811115610e2b57610e2b61140f565b03610e65576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016108e5565b5050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610ea45750600091506003905082610f59565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610ef8573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610f4f57506000925060019150829050610f59565b9250600091508190505b9450945094915050565b600060208284031215610f7557600080fd5b813563ffffffff81168114610f8957600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108f757600080fd5b60008060408385031215610fc557600080fd5b8235610fd081610f90565b946020939093013593505050565b60006101408284031215610ff157600080fd5b50919050565b803565ffffffffffff8116811461100d57600080fd5b919050565b60008060006060848603121561102757600080fd5b833567ffffffffffffffff81111561103e57600080fd5b61104a86828701610fde565b93505061105960208501610ff7565b915061106760408501610ff7565b90509250925092565b60008060006060848603121561108557600080fd5b833567ffffffffffffffff81111561109c57600080fd5b6110a886828701610fde565b9660208601359650604090950135949350505050565b604081526000835180604084015260005b818110156110ec57602081870181015160608684010152016110cf565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150508260208301529392505050565b60008083601f84011261114357600080fd5b50813567ffffffffffffffff81111561115b57600080fd5b60208301915083602082850101111561117357600080fd5b9250929050565b60008060008060006080868803121561119257600080fd5b8535600381106111a157600080fd5b9450602086013567ffffffffffffffff8111156111bd57600080fd5b6111c988828901611131565b9699909850959660408101359660609091013595509350505050565b600080602083850312156111f857600080fd5b823567ffffffffffffffff81111561120f57600080fd5b61121b85828601611131565b90969095509350505050565b600065ffffffffffff8087168352808616602084015250606060408301528260608301528284608084013760006080848401015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905095945050505050565b6000602082840312156112a357600080fd5b8135610f8981610f90565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126112e357600080fd5b83018035915067ffffffffffffffff8211156112fe57600080fd5b60200191503681900382131561117357600080fd5b8183823760009101908152919050565b6000808585111561133357600080fd5b8386111561134057600080fd5b5050820193919092039150565b80356020831015610cd6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b6000806040838503121561139c57600080fd5b6113a583610ff7565b91506113b360208401610ff7565b90509250929050565b80820180821115610cd6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006020828403121561140857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220dbb607e8f24868e55ed2c18cf7ae46bb86b0a1d7d4e58dfadbce6725b40d569764736f6c63430008170033"; + "0x60c06040523480156200001157600080fd5b50604051620016e2380380620016e28339810160408190526200003491620001b6565b8133806200005d57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b62000068816200008d565b506200007481620000dd565b6001600160a01b039081166080521660a0525062000220565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516301ffc9a760e01b815263122a0e9b60e31b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801562000129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014f9190620001f5565b6200019d5760405162461bcd60e51b815260206004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d617463680000604482015260640162000054565b50565b6001600160a01b03811681146200019d57600080fd5b60008060408385031215620001ca57600080fd5b8251620001d781620001a0565b6020840151909250620001ea81620001a0565b809150509250929050565b6000602082840312156200020857600080fd5b815180151581146200021957600080fd5b9392505050565b60805160a0516114646200027e600039600081816101340152610b3901526000818161027e0152818161034e015281816104180152818161061f015281816106ec0152818161077501528181610828015261095601526114646000f3fe6080604052600436106100e85760003560e01c80638da5cb5b1161008a578063c23a5cea11610059578063c23a5cea146102b5578063c399ec88146102d5578063d0e30db0146102ea578063f2fde38b146102f257600080fd5b80638da5cb5b1461021157806394d4ad601461023c578063b0d691fe1461026c578063bb9fe6bf146102a057600080fd5b806352b7512c116100c657806352b7512c146101805780635829c5f5146101ae578063715018a6146101dc5780637c627b21146101f157600080fd5b80630396cb60146100ed578063205c28781461010257806323d9ac9b14610122575b600080fd5b6101006100fb366004610f53565b610312565b005b34801561010e57600080fd5b5061010061011d366004610fa2565b6103c4565b34801561012e57600080fd5b506101567f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018c57600080fd5b506101a061019b366004610fe7565b61045c565b604051610177929190611035565b3480156101ba57600080fd5b506101ce6101c93660046110c3565b610480565b604051908152602001610177565b3480156101e857600080fd5b5061010061059d565b3480156101fd57600080fd5b5061010061020c36600461116a565b6105b1565b34801561021d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610156565b34801561024857600080fd5b5061025c6102573660046111d5565b6105cd565b6040516101779493929190611217565b34801561027857600080fd5b506101567f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ac57600080fd5b50610100610615565b3480156102c157600080fd5b506101006102d0366004611281565b61069f565b3480156102e157600080fd5b506101ce610744565b6101006107fa565b3480156102fe57600080fd5b5061010061030d366004611281565b610882565b61031a6108eb565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b1580156103a857600080fd5b505af11580156103bc573d6000803e3d6000fd5b505050505050565b6103cc6108eb565b6040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b1580156103a857600080fd5b6060600061046861093e565b6104738585856109dd565b915091505b935093915050565b60008335806020860135610497604088018861129e565b6040516104a5929190611303565b6040519081900390206104bb606089018961129e565b6040516104c9929190611303565b60405190819003902060808901356104e460e08b018b61129e565b6104f391603491601491611313565b6104fc9161133d565b6040805173ffffffffffffffffffffffffffffffffffffffff90971660208801528601949094526060850192909252608084015260a08084019190915260c08084019290925287013560e0830152860135610100820152466101208201523061014082015265ffffffffffff80861661016083015284166101808201526101a001604051602081830303815290604052805190602001209150509392505050565b6105a56108eb565b6105af6000610bc9565b565b6105b961093e565b6105c68585858585610c3e565b5050505050565b60008036816105df8560348189611313565b8101906105ec9190611379565b909450925085856105ff603460406113ac565b61060a928290611313565b949793965094505050565b61061d6108eb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b50505050565b6106a76108eb565b6040517fc23a5cea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b15801561073057600080fd5b505af11580156105c6573d6000803e3d6000fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f591906113e6565b905090565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99034906024016000604051808303818588803b15801561073057600080fd5b61088a6108eb565b73ffffffffffffffffffffffffffffffffffffffff81166108df576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108e881610bc9565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105af576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016108d6565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e74000000000000000000000060448201526064016108d6565b60606000808036816109f561025760e08b018b61129e565b929650909450925090506040811480610a0e5750604181145b610a9c57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f566572696679696e675061796d61737465723a20696e76616c6964207369676e60448201527f6174757265206c656e67746820696e207061796d6173746572416e644461746160648201526084016108d6565b6000610adf610aac8b8787610480565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b9050610b218184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ca092505050565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610b9e57610b7f60018686610ccc565b6040518060200160405280600081525090965096505050505050610478565b610baa60008686610ccc565b6040805160208101909152600081529b909a5098505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6d757374206f766572726964650000000000000000000000000000000000000060448201526064016108d6565b600080600080610cb08686610d04565b925092509250610cc08282610d51565b50909150505b92915050565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b85610cf4576000610cf7565b60015b60ff161717949350505050565b60008060008351604103610d3e5760208401516040850151606086015160001a610d3088828585610e59565b955095509550505050610d4a565b50508151600091506002905b9250925092565b6000826003811115610d6557610d656113ff565b03610d6e575050565b6001826003811115610d8257610d826113ff565b03610db9576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115610dcd57610dcd6113ff565b03610e07576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016108d6565b6003826003811115610e1b57610e1b6113ff565b03610e55576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016108d6565b5050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610e945750600091506003905082610f49565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610ee8573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610f3f57506000925060019150829050610f49565b9250600091508190505b9450945094915050565b600060208284031215610f6557600080fd5b813563ffffffff81168114610f7957600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108e857600080fd5b60008060408385031215610fb557600080fd5b8235610fc081610f80565b946020939093013593505050565b60006101208284031215610fe157600080fd5b50919050565b600080600060608486031215610ffc57600080fd5b833567ffffffffffffffff81111561101357600080fd5b61101f86828701610fce565b9660208601359650604090950135949350505050565b604081526000835180604084015260005b818110156110635760208187018101516060868401015201611046565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150508260208301529392505050565b803565ffffffffffff811681146110be57600080fd5b919050565b6000806000606084860312156110d857600080fd5b833567ffffffffffffffff8111156110ef57600080fd5b6110fb86828701610fce565b93505061110a602085016110a8565b9150611118604085016110a8565b90509250925092565b60008083601f84011261113357600080fd5b50813567ffffffffffffffff81111561114b57600080fd5b60208301915083602082850101111561116357600080fd5b9250929050565b60008060008060006080868803121561118257600080fd5b85356003811061119157600080fd5b9450602086013567ffffffffffffffff8111156111ad57600080fd5b6111b988828901611121565b9699909850959660408101359660609091013595509350505050565b600080602083850312156111e857600080fd5b823567ffffffffffffffff8111156111ff57600080fd5b61120b85828601611121565b90969095509350505050565b600065ffffffffffff8087168352808616602084015250606060408301528260608301528284608084013760006080848401015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905095945050505050565b60006020828403121561129357600080fd5b8135610f7981610f80565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126112d357600080fd5b83018035915067ffffffffffffffff8211156112ee57600080fd5b60200191503681900382131561116357600080fd5b8183823760009101908152919050565b6000808585111561132357600080fd5b8386111561133057600080fd5b5050820193919092039150565b80356020831015610cc6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b6000806040838503121561138c57600080fd5b611395836110a8565b91506113a3602084016110a8565b90509250929050565b80820180821115610cc6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000602082840312156113f857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220d6f6497a88dfd10921048d390e9c2ab77fd19a8306cd00ae0214be10b509e36064736f6c63430008170033"; type VerifyingPaymasterConstructorParams = | [signer?: Signer] diff --git a/packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccountFactory__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccountFactory__factory.ts deleted file mode 100644 index 08474ed5..00000000 --- a/packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccountFactory__factory.ts +++ /dev/null @@ -1,148 +0,0 @@ -/* 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 { - BLSAccountFactory, - BLSAccountFactoryInterface, -} from "../../../samples/bls/BLSAccountFactory"; - -const _abi = [ - { - inputs: [ - { - internalType: "contract IEntryPoint", - name: "entryPoint", - type: "address", - }, - { - internalType: "address", - name: "aggregator", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "accountImplementation", - outputs: [ - { - internalType: "contract BLSAccount", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "salt", - type: "uint256", - }, - { - internalType: "uint256[4]", - name: "aPublicKey", - type: "uint256[4]", - }, - ], - name: "createAccount", - outputs: [ - { - internalType: "contract BLSAccount", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "salt", - type: "uint256", - }, - { - internalType: "uint256[4]", - name: "aPublicKey", - type: "uint256[4]", - }, - ], - name: "getAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -const _bytecode = - "0x60a060405234801561001057600080fd5b50604051612e7f380380612e7f83398101604081905261002f916100aa565b818160405161003d90610085565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610070573d6000803e3d6000fd5b506001600160a01b0316608052506100e49050565b6122fa80610b8583390190565b6001600160a01b03811681146100a757600080fd5b50565b600080604083850312156100bd57600080fd5b82516100c881610092565b60208401519092506100d981610092565b809150509250929050565b608051610a7961010c60003960008181604b0152818161019b01526102b20152610a796000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806311464fbe1461004657806319c2a1b214610096578063de3398dd146100a9575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61006d6100a4366004610404565b6100bc565b61006d6100b7366004610466565b610283565b6000816100ca6080366104f1565b8114610136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67207075626b6579206f666673657400000000000000000000000000604482015260640160405180910390fd5b600061016b85856004806020026040519081016040528092919082600460200280828437600092019190915250610283915050565b905073ffffffffffffffffffffffffffffffffffffffff81163b80156101955750915061027d9050565b8560001b7f0000000000000000000000000000000000000000000000000000000000000000866040516024016101cb919061052b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fee472f36000000000000000000000000000000000000000000000000000000001790525161024b906103f7565b61025692919061055e565b8190604051809103906000f5905080158015610276573d6000803e3d6000fd5b5093505050505b92915050565b60006103be8360001b6040518060200161029c906103f7565b6020820181038252601f19601f820116604052507f0000000000000000000000000000000000000000000000000000000000000000856040516024016102e291906105cc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fee472f360000000000000000000000000000000000000000000000000000000017905290516103679392910161055e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526103a392916020016105fd565b604051602081830303815290604052805190602001206103c5565b9392505050565b60006103be8383306000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6104178061062d83390190565b60008060a0838503121561041757600080fd5b823591508360a08401111561042b57600080fd5b50926020919091019150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060a0838503121561047957600080fd5b82359150602084603f85011261048e57600080fd5b6040516080810181811067ffffffffffffffff821117156104b1576104b1610437565b6040528060a08601878111156104c657600080fd5b602087015b818110156104e257803583529184019184016104cb565b50505080925050509250929050565b8181038181111561027d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60808181019083833792915050565b60005b8381101561055557818101518382015260200161053d565b50506000910152565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000825180604084015261059981606085016020870161053a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b60808101818360005b60048110156105f45781518352602092830192909101906001016105d5565b50505092915050565b6000835161060f81846020880161053a565b83519083019061062381836020880161053a565b0194935050505056fe608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220d7f23a80daebb5531c9e4a18d87e812fca112e5df7e56433218edcc12bbe415d64736f6c63430008170033a264697066735822122061a7490eb5834ea5cebbac603f2186541731fb22272a335c10de9683a960352664736f6c6343000817003360e0604052306080523480156200001557600080fd5b50604051620022fa380380620022fa83398101604081905262000038916200012e565b6001600160a01b03821660a052816200005062000064565b506001600160a01b031660c052506200016d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000b55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001155780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6001600160a01b03811681146200011557600080fd5b600080604083850312156200014257600080fd5b82516200014f8162000118565b6020840151909250620001628162000118565b809150509250929050565b60805160a05160c051612117620001e360003960008181610259015261147c0152600081816103d0015281816107d00152818161087e01528181610a2c01528181610c6901528181610ee0015281816112d7015261156901526000818161101e01528181611047015261126801526121176000f3fe60806040526004361061016e5760003560e01c80638da5cb5b116100cb578063c399ec881161007f578063e02afbae11610059578063e02afbae146104a6578063ee472f36146104c8578063f23a6e61146104e857600080fd5b8063c399ec881461045c578063c4d66de814610471578063d087d2881461049157600080fd5b8063b0d691fe116100b0578063b0d691fe146103c1578063b61d27f6146103f4578063bc197c811461041457600080fd5b80638da5cb5b1461033e578063ad3cb1cc1461036b57600080fd5b80634a58db19116101225780634f1ef286116101075780634f1ef286146102e857806352d1902d146102fb5780638803e4511461031e57600080fd5b80634a58db19146102c05780634d44560d146102c857600080fd5b806318fc5c441161015357806318fc5c4414610225578063245a7bfc1461024757806347e1da2a146102a057600080fd5b806301ffc9a71461017a578063150b7a02146101af57600080fd5b3661017557005b600080fd5b34801561018657600080fd5b5061019a6101953660046118e2565b61052e565b60405190151581526020015b60405180910390f35b3480156101bb57600080fd5b506101f46101ca36600461198f565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101a6565b34801561023157600080fd5b50610245610240366004611a80565b610613565b005b34801561025357600080fd5b5061027b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b3480156102ac57600080fd5b506102456102bb366004611b43565b610627565b6102456107ce565b3480156102d457600080fd5b506102456102e3366004611bdd565b610874565b6102456102f6366004611c09565b610923565b34801561030757600080fd5b50610310610942565b6040519081526020016101a6565b34801561032a57600080fd5b50610310610339366004611ccf565b610971565b34801561034a57600080fd5b5060005461027b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561037757600080fd5b506103b46040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101a69190611d47565b3480156103cd57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061027b565b34801561040057600080fd5b5061024561040f366004611d98565b610997565b34801561042057600080fd5b506101f461042f366004611df4565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561046857600080fd5b506103106109e6565b34801561047d57600080fd5b5061024561048c366004611eb3565b610a9d565b34801561049d57600080fd5b50610310610c1c565b3480156104b257600080fd5b506104bb610c98565b6040516101a69190611ef3565b3480156104d457600080fd5b506102456104e3366004611a80565b610cd3565b3480156104f457600080fd5b506101f4610503366004611f01565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a020000000000000000000000000000000000000000000000000000000014806105c157507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061060d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b61061b610df4565b61062481610e81565b50565b61062f610ec8565b8481148015610645575082158061064557508281145b6106b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206172726179206c656e677468730000000000000000000000000060448201526064015b60405180910390fd5b600083900361075c5760005b858110156107565761074e8787838181106106d9576106d9611f6b565b90506020020160208101906106ee9190611eb3565b600085858581811061070257610702611f6b565b90506020028101906107149190611f9a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f8992505050565b6001016106bc565b506107c6565b60005b858110156107c4576107bc87878381811061077c5761077c611f6b565b90506020020160208101906107919190611eb3565b8686848181106107a3576107a3611f6b565b9050602002013585858581811061070257610702611f6b565b60010161075f565b505b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024016000604051808303818588803b15801561085957600080fd5b505af115801561086d573d6000803e3d6000fd5b5050505050565b61087c610df4565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c287890604401600060405180830381600087803b15801561090f57600080fd5b505af11580156107c6573d6000803e3d6000fd5b61092b611006565b6109348261110a565b61093e8282611112565b5050565b600061094c611250565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061097b6112bf565b610985848461135e565b9050610990826114b4565b9392505050565b61099f610ec8565b6109e0848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f8992505050565b50505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a989190611fff565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610ae85750825b905060008267ffffffffffffffff166001148015610b055750303b155b905081158015610b13575080155b15610b4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610bab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610bb48661151f565b83156107c65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a57565b610ca0611871565b6040805160808101918290529060019060049082845b815481526020019060010190808311610cb6575050505050905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d1e5750825b905060008267ffffffffffffffff166001148015610d3b5750303b155b905081158015610d49575080155b15610d80576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610de15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610deb600061151f565b610bb486610e81565b60005473ffffffffffffffffffffffffffffffffffffffff16331480610e1957503330145b610e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e65720000000000000000000000000000000000000000000060448201526064016106a7565b565b7f42e4c4ce1432650f17e41c4ea77ed12c0ab20b229d3ffd84a2ebc9f8abb25a83600182604051610eb3929190612018565b60405180910390a161093e600182600461188f565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610f23575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e7460448201526064016106a7565b6000808473ffffffffffffffffffffffffffffffffffffffff168484604051610fb29190612051565b60006040518083038185875af1925050503d8060008114610fef576040519150601f19603f3d011682016040523d82523d6000602084013e610ff4565b606091505b50915091508161086d57805160208201fd5b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614806110d357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166110ba7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610e7f576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610624610df4565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611197575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261119491810190611fff565b60015b6111e5576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016106a7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611241576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016106a7565b61124b83836115b3565b505050565b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e7f576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016106a7565b600061136d6040840184611f9a565b15905061145b57600061137e610c98565b60405160200161138e9190611ef3565b604051602081830303815290604052805190602001209050808480604001906113b79190611f9a565b60806113c66040890189611f9a565b6113d192915061206d565b6113dc9282906120a7565b6040516113ea9291906120d1565b604051809103902014611459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f77726f6e67207075626b6579000000000000000000000000000000000000000060448201526064016106a7565b505b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680825260006020830181905291909201529392505050565b80156106245760405160009033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d806000811461086d576040519150601f19603f3d011682016040523d82523d6000602084013e61086d565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217835560405191927f0000000000000000000000000000000000000000000000000000000000000000909116917f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de9190a350565b6115bc82611616565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561160e5761124b82826116e5565b61093e611768565b8073ffffffffffffffffffffffffffffffffffffffff163b60000361167f576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016106a7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161170f9190612051565b600060405180830381855af49150503d806000811461174a576040519150601f19603f3d011682016040523d82523d6000602084013e61174f565b606091505b509150915061175f8583836117a0565b95945050505050565b3415610e7f576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826117b5576117b08261182f565b610990565b81511580156117d9575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611828576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016106a7565b5080610990565b80511561183f5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180608001604052806004906020820280368337509192915050565b82600481019282156118bd579160200282015b828111156118bd5782518255916020019190600101906118a2565b506118c99291506118cd565b5090565b5b808211156118c957600081556001016118ce565b6000602082840312156118f457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461099057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461062457600080fd5b60008083601f84011261195857600080fd5b50813567ffffffffffffffff81111561197057600080fd5b60208301915083602082850101111561198857600080fd5b9250929050565b6000806000806000608086880312156119a757600080fd5b85356119b281611924565b945060208601356119c281611924565b935060408601359250606086013567ffffffffffffffff8111156119e557600080fd5b6119f188828901611946565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611a7857611a78611a02565b604052919050565b600060808284031215611a9257600080fd5b82601f830112611aa157600080fd5b6040516080810181811067ffffffffffffffff82111715611ac457611ac4611a02565b604052806080840185811115611ad957600080fd5b845b81811015611af3578035835260209283019201611adb565b509195945050505050565b60008083601f840112611b1057600080fd5b50813567ffffffffffffffff811115611b2857600080fd5b6020830191508360208260051b850101111561198857600080fd5b60008060008060008060608789031215611b5c57600080fd5b863567ffffffffffffffff80821115611b7457600080fd5b611b808a838b01611afe565b90985096506020890135915080821115611b9957600080fd5b611ba58a838b01611afe565b90965094506040890135915080821115611bbe57600080fd5b50611bcb89828a01611afe565b979a9699509497509295939492505050565b60008060408385031215611bf057600080fd5b8235611bfb81611924565b946020939093013593505050565b60008060408385031215611c1c57600080fd5b8235611c2781611924565b915060208381013567ffffffffffffffff80821115611c4557600080fd5b818601915086601f830112611c5957600080fd5b813581811115611c6b57611c6b611a02565b611c9b847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611a31565b91508082528784828501011115611cb157600080fd5b80848401858401376000848284010152508093505050509250929050565b600080600060608486031215611ce457600080fd5b833567ffffffffffffffff811115611cfb57600080fd5b84016101408187031215611d0e57600080fd5b95602085013595506040909401359392505050565b60005b83811015611d3e578181015183820152602001611d26565b50506000910152565b6020815260008251806020840152611d66816040850160208701611d23565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060008060608587031215611dae57600080fd5b8435611db981611924565b935060208501359250604085013567ffffffffffffffff811115611ddc57600080fd5b611de887828801611946565b95989497509550505050565b60008060008060008060008060a0898b031215611e1057600080fd5b8835611e1b81611924565b97506020890135611e2b81611924565b9650604089013567ffffffffffffffff80821115611e4857600080fd5b611e548c838d01611afe565b909850965060608b0135915080821115611e6d57600080fd5b611e798c838d01611afe565b909650945060808b0135915080821115611e9257600080fd5b50611e9f8b828c01611946565b999c989b5096995094979396929594505050565b600060208284031215611ec557600080fd5b813561099081611924565b8060005b60048110156109e0578151845260209384019390910190600101611ed4565b6080810161060d8284611ed0565b60008060008060008060a08789031215611f1a57600080fd5b8635611f2581611924565b95506020870135611f3581611924565b94506040870135935060608701359250608087013567ffffffffffffffff811115611f5f57600080fd5b611bcb89828a01611946565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611fcf57600080fd5b83018035915067ffffffffffffffff821115611fea57600080fd5b60200191503681900382131561198857600080fd5b60006020828403121561201157600080fd5b5051919050565b6101008101818460005b6004811015612041578154835260209092019160019182019101612022565b5050506109906080830184611ed0565b60008251612063818460208701611d23565b9190910192915050565b8181038181111561060d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080858511156120b757600080fd5b838611156120c457600080fd5b5050820193919092039150565b818382376000910190815291905056fea2646970667358221220448b910dcf3b38ef4044b316fb402a43e2f5828bfea5dac7dc57d35726b7409664736f6c63430008170033"; - -type BLSAccountFactoryConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: BLSAccountFactoryConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class BLSAccountFactory__factory extends ContractFactory { - constructor(...args: BLSAccountFactoryConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - entryPoint: PromiseOrValue, - aggregator: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy( - entryPoint, - aggregator, - overrides || {} - ) as Promise; - } - override getDeployTransaction( - entryPoint: PromiseOrValue, - aggregator: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(entryPoint, aggregator, overrides || {}); - } - override attach(address: string): BLSAccountFactory { - return super.attach(address) as BLSAccountFactory; - } - override connect(signer: Signer): BLSAccountFactory__factory { - return super.connect(signer) as BLSAccountFactory__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): BLSAccountFactoryInterface { - return new utils.Interface(_abi) as BLSAccountFactoryInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): BLSAccountFactory { - return new Contract(address, _abi, signerOrProvider) as BLSAccountFactory; - } -} diff --git a/packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccount__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccount__factory.ts deleted file mode 100644 index ed46f81d..00000000 --- a/packages/types/src/contracts/EPv7/factories/samples/bls/BLSAccount__factory.ts +++ /dev/null @@ -1,661 +0,0 @@ -/* 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 { - BLSAccount, - BLSAccountInterface, -} from "../../../samples/bls/BLSAccount"; - -const _abi = [ - { - inputs: [ - { - internalType: "contract IEntryPoint", - name: "anEntryPoint", - type: "address", - }, - { - internalType: "address", - name: "anAggregator", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - ], - name: "AddressEmptyCode", - 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: false, - internalType: "uint256[4]", - name: "oldPublicKey", - type: "uint256[4]", - }, - { - indexed: false, - internalType: "uint256[4]", - name: "newPublicKey", - type: "uint256[4]", - }, - ], - name: "PublicKeyChanged", - 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: "aggregator", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - 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: "getBlsPublicKey", - outputs: [ - { - internalType: "uint256[4]", - name: "", - type: "uint256[4]", - }, - ], - stateMutability: "view", - 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: "uint256[4]", - name: "aPublicKey", - type: "uint256[4]", - }, - ], - 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: "uint256[4]", - name: "newPublicKey", - type: "uint256[4]", - }, - ], - name: "setBlsPublicKey", - outputs: [], - stateMutability: "nonpayable", - 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: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", - }, - { - internalType: "bytes", - name: "paymasterAndData", - type: "bytes", - }, - { - internalType: "bytes", - name: "signature", - type: "bytes", - }, - ], - internalType: "struct 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 = - "0x60e0604052306080523480156200001557600080fd5b50604051620022fa380380620022fa83398101604081905262000038916200012e565b6001600160a01b03821660a052816200005062000064565b506001600160a01b031660c052506200016d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000b55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001155780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6001600160a01b03811681146200011557600080fd5b600080604083850312156200014257600080fd5b82516200014f8162000118565b6020840151909250620001628162000118565b809150509250929050565b60805160a05160c051612117620001e360003960008181610259015261147c0152600081816103d0015281816107d00152818161087e01528181610a2c01528181610c6901528181610ee0015281816112d7015261156901526000818161101e01528181611047015261126801526121176000f3fe60806040526004361061016e5760003560e01c80638da5cb5b116100cb578063c399ec881161007f578063e02afbae11610059578063e02afbae146104a6578063ee472f36146104c8578063f23a6e61146104e857600080fd5b8063c399ec881461045c578063c4d66de814610471578063d087d2881461049157600080fd5b8063b0d691fe116100b0578063b0d691fe146103c1578063b61d27f6146103f4578063bc197c811461041457600080fd5b80638da5cb5b1461033e578063ad3cb1cc1461036b57600080fd5b80634a58db19116101225780634f1ef286116101075780634f1ef286146102e857806352d1902d146102fb5780638803e4511461031e57600080fd5b80634a58db19146102c05780634d44560d146102c857600080fd5b806318fc5c441161015357806318fc5c4414610225578063245a7bfc1461024757806347e1da2a146102a057600080fd5b806301ffc9a71461017a578063150b7a02146101af57600080fd5b3661017557005b600080fd5b34801561018657600080fd5b5061019a6101953660046118e2565b61052e565b60405190151581526020015b60405180910390f35b3480156101bb57600080fd5b506101f46101ca36600461198f565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101a6565b34801561023157600080fd5b50610245610240366004611a80565b610613565b005b34801561025357600080fd5b5061027b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b3480156102ac57600080fd5b506102456102bb366004611b43565b610627565b6102456107ce565b3480156102d457600080fd5b506102456102e3366004611bdd565b610874565b6102456102f6366004611c09565b610923565b34801561030757600080fd5b50610310610942565b6040519081526020016101a6565b34801561032a57600080fd5b50610310610339366004611ccf565b610971565b34801561034a57600080fd5b5060005461027b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561037757600080fd5b506103b46040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101a69190611d47565b3480156103cd57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061027b565b34801561040057600080fd5b5061024561040f366004611d98565b610997565b34801561042057600080fd5b506101f461042f366004611df4565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561046857600080fd5b506103106109e6565b34801561047d57600080fd5b5061024561048c366004611eb3565b610a9d565b34801561049d57600080fd5b50610310610c1c565b3480156104b257600080fd5b506104bb610c98565b6040516101a69190611ef3565b3480156104d457600080fd5b506102456104e3366004611a80565b610cd3565b3480156104f457600080fd5b506101f4610503366004611f01565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a020000000000000000000000000000000000000000000000000000000014806105c157507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061060d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b61061b610df4565b61062481610e81565b50565b61062f610ec8565b8481148015610645575082158061064557508281145b6106b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206172726179206c656e677468730000000000000000000000000060448201526064015b60405180910390fd5b600083900361075c5760005b858110156107565761074e8787838181106106d9576106d9611f6b565b90506020020160208101906106ee9190611eb3565b600085858581811061070257610702611f6b565b90506020028101906107149190611f9a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f8992505050565b6001016106bc565b506107c6565b60005b858110156107c4576107bc87878381811061077c5761077c611f6b565b90506020020160208101906107919190611eb3565b8686848181106107a3576107a3611f6b565b9050602002013585858581811061070257610702611f6b565b60010161075f565b505b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024016000604051808303818588803b15801561085957600080fd5b505af115801561086d573d6000803e3d6000fd5b5050505050565b61087c610df4565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c287890604401600060405180830381600087803b15801561090f57600080fd5b505af11580156107c6573d6000803e3d6000fd5b61092b611006565b6109348261110a565b61093e8282611112565b5050565b600061094c611250565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061097b6112bf565b610985848461135e565b9050610990826114b4565b9392505050565b61099f610ec8565b6109e0848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f8992505050565b50505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a989190611fff565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610ae85750825b905060008267ffffffffffffffff166001148015610b055750303b155b905081158015610b13575080155b15610b4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610bab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610bb48661151f565b83156107c65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a57565b610ca0611871565b6040805160808101918290529060019060049082845b815481526020019060010190808311610cb6575050505050905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d1e5750825b905060008267ffffffffffffffff166001148015610d3b5750303b155b905081158015610d49575080155b15610d80576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610de15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610deb600061151f565b610bb486610e81565b60005473ffffffffffffffffffffffffffffffffffffffff16331480610e1957503330145b610e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e65720000000000000000000000000000000000000000000060448201526064016106a7565b565b7f42e4c4ce1432650f17e41c4ea77ed12c0ab20b229d3ffd84a2ebc9f8abb25a83600182604051610eb3929190612018565b60405180910390a161093e600182600461188f565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610f23575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e7460448201526064016106a7565b6000808473ffffffffffffffffffffffffffffffffffffffff168484604051610fb29190612051565b60006040518083038185875af1925050503d8060008114610fef576040519150601f19603f3d011682016040523d82523d6000602084013e610ff4565b606091505b50915091508161086d57805160208201fd5b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614806110d357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166110ba7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610e7f576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610624610df4565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611197575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261119491810190611fff565b60015b6111e5576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016106a7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611241576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016106a7565b61124b83836115b3565b505050565b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e7f576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016106a7565b600061136d6040840184611f9a565b15905061145b57600061137e610c98565b60405160200161138e9190611ef3565b604051602081830303815290604052805190602001209050808480604001906113b79190611f9a565b60806113c66040890189611f9a565b6113d192915061206d565b6113dc9282906120a7565b6040516113ea9291906120d1565b604051809103902014611459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f77726f6e67207075626b6579000000000000000000000000000000000000000060448201526064016106a7565b505b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680825260006020830181905291909201529392505050565b80156106245760405160009033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d806000811461086d576040519150601f19603f3d011682016040523d82523d6000602084013e61086d565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217835560405191927f0000000000000000000000000000000000000000000000000000000000000000909116917f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de9190a350565b6115bc82611616565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561160e5761124b82826116e5565b61093e611768565b8073ffffffffffffffffffffffffffffffffffffffff163b60000361167f576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016106a7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161170f9190612051565b600060405180830381855af49150503d806000811461174a576040519150601f19603f3d011682016040523d82523d6000602084013e61174f565b606091505b509150915061175f8583836117a0565b95945050505050565b3415610e7f576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826117b5576117b08261182f565b610990565b81511580156117d9575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611828576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016106a7565b5080610990565b80511561183f5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180608001604052806004906020820280368337509192915050565b82600481019282156118bd579160200282015b828111156118bd5782518255916020019190600101906118a2565b506118c99291506118cd565b5090565b5b808211156118c957600081556001016118ce565b6000602082840312156118f457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461099057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461062457600080fd5b60008083601f84011261195857600080fd5b50813567ffffffffffffffff81111561197057600080fd5b60208301915083602082850101111561198857600080fd5b9250929050565b6000806000806000608086880312156119a757600080fd5b85356119b281611924565b945060208601356119c281611924565b935060408601359250606086013567ffffffffffffffff8111156119e557600080fd5b6119f188828901611946565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611a7857611a78611a02565b604052919050565b600060808284031215611a9257600080fd5b82601f830112611aa157600080fd5b6040516080810181811067ffffffffffffffff82111715611ac457611ac4611a02565b604052806080840185811115611ad957600080fd5b845b81811015611af3578035835260209283019201611adb565b509195945050505050565b60008083601f840112611b1057600080fd5b50813567ffffffffffffffff811115611b2857600080fd5b6020830191508360208260051b850101111561198857600080fd5b60008060008060008060608789031215611b5c57600080fd5b863567ffffffffffffffff80821115611b7457600080fd5b611b808a838b01611afe565b90985096506020890135915080821115611b9957600080fd5b611ba58a838b01611afe565b90965094506040890135915080821115611bbe57600080fd5b50611bcb89828a01611afe565b979a9699509497509295939492505050565b60008060408385031215611bf057600080fd5b8235611bfb81611924565b946020939093013593505050565b60008060408385031215611c1c57600080fd5b8235611c2781611924565b915060208381013567ffffffffffffffff80821115611c4557600080fd5b818601915086601f830112611c5957600080fd5b813581811115611c6b57611c6b611a02565b611c9b847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611a31565b91508082528784828501011115611cb157600080fd5b80848401858401376000848284010152508093505050509250929050565b600080600060608486031215611ce457600080fd5b833567ffffffffffffffff811115611cfb57600080fd5b84016101408187031215611d0e57600080fd5b95602085013595506040909401359392505050565b60005b83811015611d3e578181015183820152602001611d26565b50506000910152565b6020815260008251806020840152611d66816040850160208701611d23565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060008060608587031215611dae57600080fd5b8435611db981611924565b935060208501359250604085013567ffffffffffffffff811115611ddc57600080fd5b611de887828801611946565b95989497509550505050565b60008060008060008060008060a0898b031215611e1057600080fd5b8835611e1b81611924565b97506020890135611e2b81611924565b9650604089013567ffffffffffffffff80821115611e4857600080fd5b611e548c838d01611afe565b909850965060608b0135915080821115611e6d57600080fd5b611e798c838d01611afe565b909650945060808b0135915080821115611e9257600080fd5b50611e9f8b828c01611946565b999c989b5096995094979396929594505050565b600060208284031215611ec557600080fd5b813561099081611924565b8060005b60048110156109e0578151845260209384019390910190600101611ed4565b6080810161060d8284611ed0565b60008060008060008060a08789031215611f1a57600080fd5b8635611f2581611924565b95506020870135611f3581611924565b94506040870135935060608701359250608087013567ffffffffffffffff811115611f5f57600080fd5b611bcb89828a01611946565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611fcf57600080fd5b83018035915067ffffffffffffffff821115611fea57600080fd5b60200191503681900382131561198857600080fd5b60006020828403121561201157600080fd5b5051919050565b6101008101818460005b6004811015612041578154835260209092019160019182019101612022565b5050506109906080830184611ed0565b60008251612063818460208701611d23565b9190910192915050565b8181038181111561060d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080858511156120b757600080fd5b838611156120c457600080fd5b5050820193919092039150565b818382376000910190815291905056fea2646970667358221220448b910dcf3b38ef4044b316fb402a43e2f5828bfea5dac7dc57d35726b7409664736f6c63430008170033"; - -type BLSAccountConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: BLSAccountConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class BLSAccount__factory extends ContractFactory { - constructor(...args: BLSAccountConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - anEntryPoint: PromiseOrValue, - anAggregator: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy( - anEntryPoint, - anAggregator, - overrides || {} - ) as Promise; - } - override getDeployTransaction( - anEntryPoint: PromiseOrValue, - anAggregator: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction( - anEntryPoint, - anAggregator, - overrides || {} - ); - } - override attach(address: string): BLSAccount { - return super.attach(address) as BLSAccount; - } - override connect(signer: Signer): BLSAccount__factory { - return super.connect(signer) as BLSAccount__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): BLSAccountInterface { - return new utils.Interface(_abi) as BLSAccountInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): BLSAccount { - return new Contract(address, _abi, signerOrProvider) as BLSAccount; - } -} diff --git a/packages/types/src/contracts/EPv7/factories/samples/bls/BLSSignatureAggregator__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/bls/BLSSignatureAggregator__factory.ts deleted file mode 100644 index 96cf1ef0..00000000 --- a/packages/types/src/contracts/EPv7/factories/samples/bls/BLSSignatureAggregator__factory.ts +++ /dev/null @@ -1,612 +0,0 @@ -/* 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 { - BLSSignatureAggregator, - BLSSignatureAggregatorInterface, -} from "../../../samples/bls/BLSSignatureAggregator"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_entryPoint", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "BLS_DOMAIN", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "N", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint32", - name: "delay", - type: "uint32", - }, - ], - name: "addStake", - 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: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", - }, - { - internalType: "bytes", - name: "paymasterAndData", - type: "bytes", - }, - { - internalType: "bytes", - name: "signature", - type: "bytes", - }, - ], - internalType: "struct PackedUserOperation[]", - name: "userOps", - type: "tuple[]", - }, - ], - name: "aggregateSignatures", - outputs: [ - { - internalType: "bytes", - name: "aggregatedSignature", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "entryPoint", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "getTrailingPublicKey", - outputs: [ - { - internalType: "uint256[4]", - name: "publicKey", - type: "uint256[4]", - }, - ], - stateMutability: "pure", - 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: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", - }, - { - internalType: "bytes", - name: "paymasterAndData", - type: "bytes", - }, - { - internalType: "bytes", - name: "signature", - type: "bytes", - }, - ], - internalType: "struct PackedUserOperation", - name: "userOp", - type: "tuple", - }, - ], - name: "getUserOpHash", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - 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: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", - }, - { - internalType: "bytes", - name: "paymasterAndData", - type: "bytes", - }, - { - internalType: "bytes", - name: "signature", - type: "bytes", - }, - ], - internalType: "struct PackedUserOperation", - name: "userOp", - type: "tuple", - }, - ], - name: "getUserOpPublicKey", - outputs: [ - { - internalType: "uint256[4]", - name: "publicKey", - type: "uint256[4]", - }, - ], - 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: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", - }, - { - internalType: "bytes", - name: "paymasterAndData", - type: "bytes", - }, - { - internalType: "bytes", - name: "signature", - type: "bytes", - }, - ], - internalType: "struct PackedUserOperation", - name: "userOp", - type: "tuple", - }, - ], - name: "userOpToMessage", - outputs: [ - { - internalType: "uint256[2]", - name: "", - type: "uint256[2]", - }, - ], - 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: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", - }, - { - internalType: "bytes", - name: "paymasterAndData", - type: "bytes", - }, - { - internalType: "bytes", - name: "signature", - type: "bytes", - }, - ], - internalType: "struct 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: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", - }, - { - internalType: "bytes", - name: "paymasterAndData", - type: "bytes", - }, - { - internalType: "bytes", - name: "signature", - type: "bytes", - }, - ], - internalType: "struct PackedUserOperation", - name: "userOp", - type: "tuple", - }, - ], - name: "validateUserOpSignature", - outputs: [ - { - internalType: "bytes", - name: "sigForUserOp", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -const _bytecode = - "0x60a060405234801561001057600080fd5b50604051611cfe380380611cfe83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611c65610099600039600081816101c80152818161030b0152610b4e0152611c656000f3fe6080604052600436106100bb5760003560e01c80638ef24cba11610074578063c9e525df1161004e578063c9e525df1461022f578063e0ccb29214610263578063fe96cf231461029057600080fd5b80638ef24cba14610189578063b0d691fe146101b6578063b7620eb41461020f57600080fd5b80630396cb60116100a55780630396cb601461012757806333ecca7b1461013c5780638c1532901461016957600080fd5b80629d9250146100c057806302101e4914610107575b600080fd5b3480156100cc57600080fd5b506100f47fd84c4373167c517e9ccd66803f86d8a4f49e7e1315a7a73b516affea7428f82b81565b6040519081526020015b60405180910390f35b34801561011357600080fd5b506100f461012236600461152f565b6102b0565b61013a610135366004611564565b6102d7565b005b34801561014857600080fd5b5061015c6101573660046115d6565b610381565b6040516100fe919061167c565b34801561017557600080fd5b5061015c61018436600461168f565b6104df565b34801561019557600080fd5b506101a96101a436600461152f565b610647565b6040516100fe91906116cb565b3480156101c257600080fd5b506101ea7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100fe565b34801561021b57600080fd5b506101a961022a3660046116fc565b6106e8565b34801561023b57600080fd5b506100f47f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4781565b34801561026f57600080fd5b5061028361027e36600461152f565b6107e0565b6040516100fe9190611731565b34801561029c57600080fd5b5061013a6102ab366004611759565b610802565b6000806102c46102bf84610647565b610adf565b90506102d08382610b0f565b9392505050565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b15801561036557600080fd5b505af1158015610379573d6000803e3d6000fd5b505050505050565b606060008267ffffffffffffffff81111561039e5761039e6112de565b6040519080825280602002602001820160405280156103e357816020015b60408051808201909152600080825260208201528152602001906001900390816103bc5790505b50905060005b815181101561047557600080868684818110610407576104076117f0565b9050602002810190610419919061181f565b6104289061012081019061185d565b81019061043591906118c2565b91509150604051806040016040528083815260200182815250848481518110610460576104606117f0565b602090810291909101015250506001016103e9565b5060006104a2827f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610b94565b80516020808301516040519394506104c593909101918252602082015260400190565b604051602081830303815290604052925050505b92915050565b606060006104f161012084018461185d565b8101906104fe91906118e4565b9050600061050e6101a485611944565b9050600061052c61051e86611944565b61052784610adf565b610c75565b6040517febbdac9100000000000000000000000000000000000000000000000000000000815290915073__$b745eded4b1aee1100521038d570dd85f1$__9063ebbdac91906105839086908690869060040161199c565b602060405180830381865af41580156105a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c491906119c5565b61062f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f424c533a2077726f6e672073696700000000000000000000000000000000000060448201526064015b60405180910390fd5b50506040805160208101909152600081529392505050565b61064f6112a2565b604082015180511561066b57610664816106e8565b91506106e2565b826000015173ffffffffffffffffffffffffffffffffffffffff1663e02afbae61c3506040518263ffffffff1660e01b81526004016080604051808303818786fa1580156106bd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906102d091906119e7565b50919050565b6106f06112a2565b81516080811161075c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6461746120746f6f2073686f727420666f7220736967000000000000000000006044820152606401610626565b9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa081015182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc081015160208301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810151604083015251606082015290565b6107e86112c0565b60006107f66102bf84610647565b90506102d08382610c75565b6040811461086c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f424c533a20696e76616c6964207369676e6174757265000000000000000000006044820152606401610626565b600061087a828401846118e4565b90508360008167ffffffffffffffff811115610898576108986112de565b6040519080825280602002602001820160405280156108d157816020015b6108be6112a2565b8152602001906001900390816108b65790505b50905060008267ffffffffffffffff8111156108ef576108ef6112de565b60405190808252806020026020018201604052801561092857816020015b6109156112c0565b81526020019060019003908161090d5790505b50905060005b838110156109d957600089898381811061094a5761094a6117f0565b905060200281019061095c919061181f565b61096590611944565b905061097081610647565b848381518110610982576109826117f0565b60200260200101819052506109b3816105278685815181106109a6576109a66117f0565b6020026020010151610adf565b8383815181106109c5576109c56117f0565b60209081029190910101525060010161092e565b506040517f9141376300000000000000000000000000000000000000000000000000000000815273__$b745eded4b1aee1100521038d570dd85f1$__90639141376390610a2e90879086908690600401611a5a565b602060405180830381865af4158015610a4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6f91906119c5565b610ad5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f424c533a2076616c69646174655369676e617475726573206661696c656400006044820152606401610626565b5050505050505050565b600081604051602001610af291906116cb565b604051602081830303815290604052805190602001209050919050565b6000610b1a83610d4d565b604080516020810192909252810183905230606082015246608082015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660a082015260c00160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600083600081518110610bbd57610bbd6117f0565b6020026020010151600001519050600084600081518110610be057610be06117f0565b602090810291909101810151015190506001805b8651811015610c5657610c478484848a8581518110610c1557610c156117f0565b6020026020010151600001518b8681518110610c3357610c336117f0565b60200260200101516020015160018c610df1565b91955093509150600101610bf4565b50610c638383838861113e565b90855260208501525091949350505050565b610c7d6112c0565b6000610c898484610b0f565b905073__$b745eded4b1aee1100521038d570dd85f1$__63a850a9097fd84c4373167c517e9ccd66803f86d8a4f49e7e1315a7a73b516affea7428f82b83604051602001610cd991815260200190565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610d05929190611afe565b6040805180830381865af4158015610d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d459190611b17565b949350505050565b80516020808301516040808501518051908401206060860151805190850120608087015160a088015160c089015160e08a01516101008b01518051908a0120965160009a610af29a909998910173ffffffffffffffffffffffffffffffffffffffff999099168952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6000808089158015610e01575088155b15610e13575085915084905083611131565b86158015610e1f575085155b15610e31575088915087905086611131565b610e396112a2565b8480610e4757610e47611b6c565b898a0981528480610e5a57610e5a611b6c565b81518a0960208201528480610e7157610e71611b6c565b86870960408201528480610e8757610e87611b6c565b6040820151870960608201526040805160808101909152808680610ead57610ead611b6c565b60408401518e0981526020018680610ec757610ec7611b6c565b60608401518d0981526020018680610ee157610ee1611b6c565b83518b0981526020018680610ef857610ef8611b6c565b60208401518a09905260408101518151919250141580610f2057506060810151602082015114155b610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f557365206a6163446f75626c652066756e6374696f6e20696e737465616400006044820152606401610626565b610f8e6112a2565b8580610f9c57610f9c611b6c565b8251610fa89088611bca565b60408401510881528580610fbe57610fbe611b6c565b6020830151610fcd9088611bca565b60608401510860208201528580610fe657610fe6611b6c565b8151800960408201528580610ffd57610ffd611b6c565b815160408301510960608201526000868061101a5761101a611b6c565b60608301516110299089611bca565b888061103757611037611b6c565b60208501518009089050868061104f5761104f611b6c565b878061105d5761105d611b6c565b888061106b5761106b611b6c565b60408501518651096002096110809089611bca565b820890506000878061109457611094611b6c565b88806110a2576110a2611b6c565b6110ac848b611bca565b8a806110ba576110ba611b6c565b604087015188510908602085015109905087806110d9576110d9611b6c565b88806110e7576110e7611b6c565b60608501516020870151096110fc908a611bca565b820890506000888061111057611110611b6c565b898061111e5761111e611b6c565b8b8f098551099297509095509093505050505b9750975097945050505050565b600080600061114d85856111ad565b90506000848061115f5761115f611b6c565b82830990506000858061117457611174611b6c565b828a0990506000868061118957611189611b6c565b878061119757611197611b6c565b8486098a09919a91995090975050505050505050565b600082158015906111be5750818314155b80156111c957508115155b61122f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c6964206e756d6265720000000000000000000000000000000000006044820152606401610626565b6000600183825b8615611297576112468783611bdd565b905082868061125757611257611b6c565b878061126557611265611b6c565b8584096112729089611bca565b86089094509250866112848183611c18565b61128e9084611bca565b97509150611236565b509195945050505050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715611331576113316112de565b60405290565b6040805190810167ffffffffffffffff81118282101715611331576113316112de565b803573ffffffffffffffffffffffffffffffffffffffff8116811461137e57600080fd5b919050565b600082601f83011261139457600080fd5b813567ffffffffffffffff808211156113af576113af6112de565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156113f5576113f56112de565b8160405283815286602085880101111561140e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000610140828403121561144157600080fd5b61144961130d565b90506114548261135a565b815260208201356020820152604082013567ffffffffffffffff8082111561147b57600080fd5b61148785838601611383565b604084015260608401359150808211156114a057600080fd5b6114ac85838601611383565b60608401526080840135608084015260a084013560a084015260c084013560c084015260e084013560e0840152610100915081840135818111156114ef57600080fd5b6114fb86828701611383565b83850152506101209150818401358181111561151657600080fd5b61152286828701611383565b8385015250505092915050565b60006020828403121561154157600080fd5b813567ffffffffffffffff81111561155857600080fd5b610d458482850161142e565b60006020828403121561157657600080fd5b813563ffffffff811681146102d057600080fd5b60008083601f84011261159c57600080fd5b50813567ffffffffffffffff8111156115b457600080fd5b6020830191508360208260051b85010111156115cf57600080fd5b9250929050565b600080602083850312156115e957600080fd5b823567ffffffffffffffff81111561160057600080fd5b61160c8582860161158a565b90969095509350505050565b6000815180845260005b8181101561163e57602081850181015186830182015201611622565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006102d06020830184611618565b6000602082840312156116a157600080fd5b813567ffffffffffffffff8111156116b857600080fd5b820161014081850312156102d057600080fd5b60808101818360005b60048110156116f35781518352602092830192909101906001016116d4565b50505092915050565b60006020828403121561170e57600080fd5b813567ffffffffffffffff81111561172557600080fd5b610d4584828501611383565b60408101818360005b60028110156116f357815183526020928301929091019060010161173a565b6000806000806040858703121561176f57600080fd5b843567ffffffffffffffff8082111561178757600080fd5b6117938883890161158a565b909650945060208701359150808211156117ac57600080fd5b818701915087601f8301126117c057600080fd5b8135818111156117cf57600080fd5b8860208285010111156117e157600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec183360301811261185357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261189257600080fd5b83018035915067ffffffffffffffff8211156118ad57600080fd5b6020019150368190038213156115cf57600080fd5b600080604083850312156118d557600080fd5b50508035926020909101359150565b6000604082840312156118f657600080fd5b82601f83011261190557600080fd5b61190d611337565b80604084018581111561191f57600080fd5b845b81811015611939578035845260209384019301611921565b509095945050505050565b60006104d9368361142e565b8060005b6002811015611973578151845260209384019390910190600101611954565b50505050565b8060005b600481101561197357815184526020938401939091019060010161197d565b61010081016119ab8286611950565b6119b86040830185611979565b610d4560c0830184611950565b6000602082840312156119d757600080fd5b815180151581146102d057600080fd5b6000608082840312156119f957600080fd5b82601f830112611a0857600080fd5b6040516080810181811067ffffffffffffffff82111715611a2b57611a2b6112de565b604052806080840185811115611a4057600080fd5b845b81811015611297578051835260209283019201611a42565b60006080808301611a6b8488611950565b60406080604086015281875180845260a087019150602093506020890160005b82811015611aae57611a9e848351611979565b9286019290850190600101611a8b565b50505085810360608701528651808252602091820194509087019060005b81811015611aef57611adf868451611950565b9483019491840191600101611acc565b50939998505050505050505050565b828152604060208201526000610d456040830184611618565b600060408284031215611b2957600080fd5b82601f830112611b3857600080fd5b611b40611337565b806040840185811115611b5257600080fd5b845b81811015611939578051845260209384019301611b54565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104d9576104d9611b9b565b600082611c13577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176104d9576104d9611b9b56fea2646970667358221220abac851e71bdec03b2dc4a74d19cd42fc6aaad7e7b79d7679c8e7615de1200a664736f6c63430008170033"; - -type BLSSignatureAggregatorConstructorParams = - | [ - linkLibraryAddresses: BLSSignatureAggregatorLibraryAddresses, - signer?: Signer - ] - | ConstructorParameters; - -const isSuperArgs = ( - xs: BLSSignatureAggregatorConstructorParams -): xs is ConstructorParameters => { - return ( - typeof xs[0] === "string" || - (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || - "_isInterface" in xs[0] - ); -}; - -export class BLSSignatureAggregator__factory extends ContractFactory { - constructor(...args: BLSSignatureAggregatorConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - const [linkLibraryAddresses, signer] = args; - super( - _abi, - BLSSignatureAggregator__factory.linkBytecode(linkLibraryAddresses), - signer - ); - } - } - - static linkBytecode( - linkLibraryAddresses: BLSSignatureAggregatorLibraryAddresses - ): string { - let linkedBytecode = _bytecode; - - linkedBytecode = linkedBytecode.replace( - new RegExp("__\\$b745eded4b1aee1100521038d570dd85f1\\$__", "g"), - linkLibraryAddresses["contracts/samples/bls/lib/BLSOpen.sol:BLSOpen"] - .replace(/^0x/, "") - .toLowerCase() - ); - - return linkedBytecode; - } - - 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): BLSSignatureAggregator { - return super.attach(address) as BLSSignatureAggregator; - } - override connect(signer: Signer): BLSSignatureAggregator__factory { - return super.connect(signer) as BLSSignatureAggregator__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): BLSSignatureAggregatorInterface { - return new utils.Interface(_abi) as BLSSignatureAggregatorInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): BLSSignatureAggregator { - return new Contract( - address, - _abi, - signerOrProvider - ) as BLSSignatureAggregator; - } -} - -export interface BLSSignatureAggregatorLibraryAddresses { - ["contracts/samples/bls/lib/BLSOpen.sol:BLSOpen"]: string; -} diff --git a/packages/types/src/contracts/EPv7/factories/samples/bls/IBLSAccount__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/bls/IBLSAccount__factory.ts deleted file mode 100644 index a71c0c5e..00000000 --- a/packages/types/src/contracts/EPv7/factories/samples/bls/IBLSAccount__factory.ts +++ /dev/null @@ -1,139 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IBLSAccount, - IBLSAccountInterface, -} from "../../../samples/bls/IBLSAccount"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256[4]", - name: "oldPublicKey", - type: "uint256[4]", - }, - { - indexed: false, - internalType: "uint256[4]", - name: "newPublicKey", - type: "uint256[4]", - }, - ], - name: "PublicKeyChanged", - type: "event", - }, - { - inputs: [], - name: "getBlsPublicKey", - outputs: [ - { - internalType: "uint256[4]", - name: "", - type: "uint256[4]", - }, - ], - 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: "uint256", - name: "maxFeePerGas", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPriorityFeePerGas", - type: "uint256", - }, - { - internalType: "bytes", - name: "paymasterAndData", - type: "bytes", - }, - { - internalType: "bytes", - name: "signature", - type: "bytes", - }, - ], - internalType: "struct 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 IBLSAccount__factory { - static readonly abi = _abi; - static createInterface(): IBLSAccountInterface { - return new utils.Interface(_abi) as IBLSAccountInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IBLSAccount { - return new Contract(address, _abi, signerOrProvider) as IBLSAccount; - } -} diff --git a/packages/types/src/contracts/EPv7/factories/samples/bls/index.ts b/packages/types/src/contracts/EPv7/factories/samples/bls/index.ts deleted file mode 100644 index eaf1080b..00000000 --- a/packages/types/src/contracts/EPv7/factories/samples/bls/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { BLSAccount__factory } from "./BLSAccount__factory"; -export { BLSAccountFactory__factory } from "./BLSAccountFactory__factory"; -export { BLSSignatureAggregator__factory } from "./BLSSignatureAggregator__factory"; -export { IBLSAccount__factory } from "./IBLSAccount__factory"; diff --git a/packages/types/src/contracts/EPv7/factories/samples/index.ts b/packages/types/src/contracts/EPv7/factories/samples/index.ts index cd5ec86a..f8e72e31 100644 --- a/packages/types/src/contracts/EPv7/factories/samples/index.ts +++ b/packages/types/src/contracts/EPv7/factories/samples/index.ts @@ -1,7 +1,6 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export * as bls from "./bls"; export * as callback from "./callback"; export * as utils from "./utils"; export { IOracle__factory } from "./IOracle__factory"; 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 index da5a6fd1..4a8b98ba 100644 --- a/packages/types/src/contracts/EPv7/factories/samples/utils/OracleHelper__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/samples/utils/OracleHelper__factory.ts @@ -73,7 +73,7 @@ const _abi = [ outputs: [ { internalType: "uint256", - name: "newPrice", + name: "", type: "uint256", }, ], diff --git a/packages/types/src/contracts/EPv7/interfaces/IAccount.ts b/packages/types/src/contracts/EPv7/interfaces/IAccount.ts index f28a6533..0a0a8429 100644 --- a/packages/types/src/contracts/EPv7/interfaces/IAccount.ts +++ b/packages/types/src/contracts/EPv7/interfaces/IAccount.ts @@ -21,7 +21,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export type PackedUserOperationStruct = { sender: PromiseOrValue; @@ -30,8 +30,7 @@ export type PackedUserOperationStruct = { callData: PromiseOrValue; accountGasLimits: PromiseOrValue; preVerificationGas: PromiseOrValue; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; + gasFees: PromiseOrValue; paymasterAndData: PromiseOrValue; signature: PromiseOrValue; }; @@ -43,8 +42,7 @@ export type PackedUserOperationStructOutput = [ string, string, BigNumber, - BigNumber, - BigNumber, + string, string, string ] & { @@ -54,15 +52,14 @@ export type PackedUserOperationStructOutput = [ callData: string; accountGasLimits: string; preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; + gasFees: string; paymasterAndData: string; signature: string; }; export interface IAccountInterface extends utils.Interface { functions: { - "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": FunctionFragment; + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; }; getFunction(nameOrSignatureOrTopic: "validateUserOp"): FunctionFragment; diff --git a/packages/types/src/contracts/EPv7/interfaces/IAccountExecute.ts b/packages/types/src/contracts/EPv7/interfaces/IAccountExecute.ts index 7ff4a58a..2d136e9d 100644 --- a/packages/types/src/contracts/EPv7/interfaces/IAccountExecute.ts +++ b/packages/types/src/contracts/EPv7/interfaces/IAccountExecute.ts @@ -21,7 +21,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export type PackedUserOperationStruct = { sender: PromiseOrValue; @@ -30,8 +30,7 @@ export type PackedUserOperationStruct = { callData: PromiseOrValue; accountGasLimits: PromiseOrValue; preVerificationGas: PromiseOrValue; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; + gasFees: PromiseOrValue; paymasterAndData: PromiseOrValue; signature: PromiseOrValue; }; @@ -43,8 +42,7 @@ export type PackedUserOperationStructOutput = [ string, string, BigNumber, - BigNumber, - BigNumber, + string, string, string ] & { @@ -54,15 +52,14 @@ export type PackedUserOperationStructOutput = [ callData: string; accountGasLimits: string; preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; + gasFees: string; paymasterAndData: string; signature: string; }; export interface IAccountExecuteInterface extends utils.Interface { functions: { - "executeUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes),bytes32)": FunctionFragment; + "executeUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32)": FunctionFragment; }; getFunction(nameOrSignatureOrTopic: "executeUserOp"): FunctionFragment; diff --git a/packages/types/src/contracts/EPv7/interfaces/IAggregator.ts b/packages/types/src/contracts/EPv7/interfaces/IAggregator.ts index 86fac771..f4ee5301 100644 --- a/packages/types/src/contracts/EPv7/interfaces/IAggregator.ts +++ b/packages/types/src/contracts/EPv7/interfaces/IAggregator.ts @@ -19,7 +19,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export type PackedUserOperationStruct = { sender: PromiseOrValue; @@ -28,8 +28,7 @@ export type PackedUserOperationStruct = { callData: PromiseOrValue; accountGasLimits: PromiseOrValue; preVerificationGas: PromiseOrValue; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; + gasFees: PromiseOrValue; paymasterAndData: PromiseOrValue; signature: PromiseOrValue; }; @@ -41,8 +40,7 @@ export type PackedUserOperationStructOutput = [ string, string, BigNumber, - BigNumber, - BigNumber, + string, string, string ] & { @@ -52,17 +50,16 @@ export type PackedUserOperationStructOutput = [ callData: string; accountGasLimits: string; preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; + gasFees: string; paymasterAndData: string; signature: string; }; export interface IAggregatorInterface extends utils.Interface { functions: { - "aggregateSignatures((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[])": FunctionFragment; - "validateSignatures((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],bytes)": FunctionFragment; - "validateUserOpSignature((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": FunctionFragment; + "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( diff --git a/packages/types/src/contracts/EPv7/interfaces/IEntryPoint.ts b/packages/types/src/contracts/EPv7/interfaces/IEntryPoint.ts index d744b7dc..30dbdb91 100644 --- a/packages/types/src/contracts/EPv7/interfaces/IEntryPoint.ts +++ b/packages/types/src/contracts/EPv7/interfaces/IEntryPoint.ts @@ -26,7 +26,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export type PackedUserOperationStruct = { sender: PromiseOrValue; @@ -35,8 +35,7 @@ export type PackedUserOperationStruct = { callData: PromiseOrValue; accountGasLimits: PromiseOrValue; preVerificationGas: PromiseOrValue; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; + gasFees: PromiseOrValue; paymasterAndData: PromiseOrValue; signature: PromiseOrValue; }; @@ -48,8 +47,7 @@ export type PackedUserOperationStructOutput = [ string, string, BigNumber, - BigNumber, - BigNumber, + string, string, string ] & { @@ -59,8 +57,7 @@ export type PackedUserOperationStructOutput = [ callData: string; accountGasLimits: string; preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; + gasFees: string; paymasterAndData: string; signature: string; }; @@ -116,9 +113,9 @@ export interface IEntryPointInterface extends utils.Interface { "getDepositInfo(address)": FunctionFragment; "getNonce(address,uint192)": FunctionFragment; "getSenderAddress(bytes)": FunctionFragment; - "getUserOpHash((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": FunctionFragment; - "handleAggregatedOps(((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)": FunctionFragment; - "handleOps((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],address)": 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; @@ -249,6 +246,7 @@ export interface IEntryPointInterface extends utils.Interface { "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; }; @@ -262,6 +260,7 @@ export interface IEntryPointInterface extends utils.Interface { getEvent(nameOrSignatureOrTopic: "StakeUnlocked"): EventFragment; getEvent(nameOrSignatureOrTopic: "StakeWithdrawn"): EventFragment; getEvent(nameOrSignatureOrTopic: "UserOperationEvent"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationPrefundTooLow"): EventFragment; getEvent(nameOrSignatureOrTopic: "UserOperationRevertReason"): EventFragment; getEvent(nameOrSignatureOrTopic: "Withdrawn"): EventFragment; } @@ -372,6 +371,19 @@ export type UserOperationEventEvent = TypedEvent< 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; @@ -748,6 +760,17 @@ export interface IEntryPoint extends BaseContract { 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, diff --git a/packages/types/src/contracts/EPv7/interfaces/IEntryPointSimulations.ts b/packages/types/src/contracts/EPv7/interfaces/IEntryPointSimulations.ts index d0434ad1..75dade4c 100644 --- a/packages/types/src/contracts/EPv7/interfaces/IEntryPointSimulations.ts +++ b/packages/types/src/contracts/EPv7/interfaces/IEntryPointSimulations.ts @@ -26,7 +26,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export type PackedUserOperationStruct = { sender: PromiseOrValue; @@ -35,8 +35,7 @@ export type PackedUserOperationStruct = { callData: PromiseOrValue; accountGasLimits: PromiseOrValue; preVerificationGas: PromiseOrValue; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; + gasFees: PromiseOrValue; paymasterAndData: PromiseOrValue; signature: PromiseOrValue; }; @@ -48,8 +47,7 @@ export type PackedUserOperationStructOutput = [ string, string, BigNumber, - BigNumber, - BigNumber, + string, string, string ] & { @@ -59,8 +57,7 @@ export type PackedUserOperationStructOutput = [ callData: string; accountGasLimits: string; preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; + gasFees: string; paymasterAndData: string; signature: string; }; @@ -207,12 +204,12 @@ export interface IEntryPointSimulationsInterface extends utils.Interface { "getDepositInfo(address)": FunctionFragment; "getNonce(address,uint192)": FunctionFragment; "getSenderAddress(bytes)": FunctionFragment; - "getUserOpHash((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": FunctionFragment; - "handleAggregatedOps(((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)": FunctionFragment; - "handleOps((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],address)": 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,uint256,uint256,bytes,bytes),address,bytes)": FunctionFragment; - "simulateValidation((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": 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; @@ -364,6 +361,7 @@ export interface IEntryPointSimulationsInterface extends utils.Interface { "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; }; @@ -377,6 +375,7 @@ export interface IEntryPointSimulationsInterface extends utils.Interface { getEvent(nameOrSignatureOrTopic: "StakeUnlocked"): EventFragment; getEvent(nameOrSignatureOrTopic: "StakeWithdrawn"): EventFragment; getEvent(nameOrSignatureOrTopic: "UserOperationEvent"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UserOperationPrefundTooLow"): EventFragment; getEvent(nameOrSignatureOrTopic: "UserOperationRevertReason"): EventFragment; getEvent(nameOrSignatureOrTopic: "Withdrawn"): EventFragment; } @@ -487,6 +486,19 @@ export type UserOperationEventEvent = TypedEvent< 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; @@ -899,6 +911,17 @@ export interface IEntryPointSimulations extends BaseContract { 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, diff --git a/packages/types/src/contracts/EPv7/interfaces/INonceManager.ts b/packages/types/src/contracts/EPv7/interfaces/INonceManager.ts index 0208b86c..f632a634 100644 --- a/packages/types/src/contracts/EPv7/interfaces/INonceManager.ts +++ b/packages/types/src/contracts/EPv7/interfaces/INonceManager.ts @@ -21,7 +21,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export interface INonceManagerInterface extends utils.Interface { functions: { diff --git a/packages/types/src/contracts/EPv7/interfaces/IPaymaster.ts b/packages/types/src/contracts/EPv7/interfaces/IPaymaster.ts index d7e26573..e9a35244 100644 --- a/packages/types/src/contracts/EPv7/interfaces/IPaymaster.ts +++ b/packages/types/src/contracts/EPv7/interfaces/IPaymaster.ts @@ -21,7 +21,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export type PackedUserOperationStruct = { sender: PromiseOrValue; @@ -30,8 +30,7 @@ export type PackedUserOperationStruct = { callData: PromiseOrValue; accountGasLimits: PromiseOrValue; preVerificationGas: PromiseOrValue; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; + gasFees: PromiseOrValue; paymasterAndData: PromiseOrValue; signature: PromiseOrValue; }; @@ -43,8 +42,7 @@ export type PackedUserOperationStructOutput = [ string, string, BigNumber, - BigNumber, - BigNumber, + string, string, string ] & { @@ -54,8 +52,7 @@ export type PackedUserOperationStructOutput = [ callData: string; accountGasLimits: string; preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; + gasFees: string; paymasterAndData: string; signature: string; }; @@ -63,7 +60,7 @@ export type PackedUserOperationStructOutput = [ export interface IPaymasterInterface extends utils.Interface { functions: { "postOp(uint8,bytes,uint256,uint256)": FunctionFragment; - "validatePaymasterUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": FunctionFragment; + "validatePaymasterUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; }; getFunction( diff --git a/packages/types/src/contracts/EPv7/interfaces/IStakeManager.ts b/packages/types/src/contracts/EPv7/interfaces/IStakeManager.ts index d29afcf0..a674ed45 100644 --- a/packages/types/src/contracts/EPv7/interfaces/IStakeManager.ts +++ b/packages/types/src/contracts/EPv7/interfaces/IStakeManager.ts @@ -26,7 +26,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export declare namespace IStakeManager { export type DepositInfoStruct = { diff --git a/packages/types/src/contracts/EPv7/samples/IOracle.ts b/packages/types/src/contracts/EPv7/samples/IOracle.ts index ad43bbf3..08fc47a3 100644 --- a/packages/types/src/contracts/EPv7/samples/IOracle.ts +++ b/packages/types/src/contracts/EPv7/samples/IOracle.ts @@ -19,7 +19,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export interface IOracleInterface extends utils.Interface { functions: { diff --git a/packages/types/src/contracts/EPv7/samples/LegacyTokenPaymaster.ts b/packages/types/src/contracts/EPv7/samples/LegacyTokenPaymaster.ts index a7e88842..60b6d403 100644 --- a/packages/types/src/contracts/EPv7/samples/LegacyTokenPaymaster.ts +++ b/packages/types/src/contracts/EPv7/samples/LegacyTokenPaymaster.ts @@ -26,7 +26,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export type PackedUserOperationStruct = { sender: PromiseOrValue; @@ -35,8 +35,7 @@ export type PackedUserOperationStruct = { callData: PromiseOrValue; accountGasLimits: PromiseOrValue; preVerificationGas: PromiseOrValue; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; + gasFees: PromiseOrValue; paymasterAndData: PromiseOrValue; signature: PromiseOrValue; }; @@ -48,8 +47,7 @@ export type PackedUserOperationStructOutput = [ string, string, BigNumber, - BigNumber, - BigNumber, + string, string, string ] & { @@ -59,8 +57,7 @@ export type PackedUserOperationStructOutput = [ callData: string; accountGasLimits: string; preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; + gasFees: string; paymasterAndData: string; signature: string; }; @@ -88,7 +85,7 @@ export interface LegacyTokenPaymasterInterface extends utils.Interface { "transferFrom(address,address,uint256)": FunctionFragment; "transferOwnership(address)": FunctionFragment; "unlockStake()": FunctionFragment; - "validatePaymasterUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": FunctionFragment; + "validatePaymasterUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; "withdrawStake(address)": FunctionFragment; "withdrawTo(address,uint256)": FunctionFragment; }; diff --git a/packages/types/src/contracts/EPv7/samples/SimpleAccount.ts b/packages/types/src/contracts/EPv7/samples/SimpleAccount.ts index 565d3308..1ca2fd3f 100644 --- a/packages/types/src/contracts/EPv7/samples/SimpleAccount.ts +++ b/packages/types/src/contracts/EPv7/samples/SimpleAccount.ts @@ -26,7 +26,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export type PackedUserOperationStruct = { sender: PromiseOrValue; @@ -35,8 +35,7 @@ export type PackedUserOperationStruct = { callData: PromiseOrValue; accountGasLimits: PromiseOrValue; preVerificationGas: PromiseOrValue; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; + gasFees: PromiseOrValue; paymasterAndData: PromiseOrValue; signature: PromiseOrValue; }; @@ -48,8 +47,7 @@ export type PackedUserOperationStructOutput = [ string, string, BigNumber, - BigNumber, - BigNumber, + string, string, string ] & { @@ -59,8 +57,7 @@ export type PackedUserOperationStructOutput = [ callData: string; accountGasLimits: string; preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; + gasFees: string; paymasterAndData: string; signature: string; }; @@ -82,7 +79,7 @@ export interface SimpleAccountInterface extends utils.Interface { "proxiableUUID()": FunctionFragment; "supportsInterface(bytes4)": FunctionFragment; "upgradeToAndCall(address,bytes)": FunctionFragment; - "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": FunctionFragment; + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; "withdrawDepositTo(address,uint256)": FunctionFragment; }; diff --git a/packages/types/src/contracts/EPv7/samples/SimpleAccountFactory.ts b/packages/types/src/contracts/EPv7/samples/SimpleAccountFactory.ts index 2066ee49..0c6b96b8 100644 --- a/packages/types/src/contracts/EPv7/samples/SimpleAccountFactory.ts +++ b/packages/types/src/contracts/EPv7/samples/SimpleAccountFactory.ts @@ -21,7 +21,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export interface SimpleAccountFactoryInterface extends utils.Interface { functions: { diff --git a/packages/types/src/contracts/EPv7/samples/TokenPaymaster.ts b/packages/types/src/contracts/EPv7/samples/TokenPaymaster.ts index 3679222c..05e5d446 100644 --- a/packages/types/src/contracts/EPv7/samples/TokenPaymaster.ts +++ b/packages/types/src/contracts/EPv7/samples/TokenPaymaster.ts @@ -26,7 +26,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export type PackedUserOperationStruct = { sender: PromiseOrValue; @@ -35,8 +35,7 @@ export type PackedUserOperationStruct = { callData: PromiseOrValue; accountGasLimits: PromiseOrValue; preVerificationGas: PromiseOrValue; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; + gasFees: PromiseOrValue; paymasterAndData: PromiseOrValue; signature: PromiseOrValue; }; @@ -48,8 +47,7 @@ export type PackedUserOperationStructOutput = [ string, string, BigNumber, - BigNumber, - BigNumber, + string, string, string ] & { @@ -59,8 +57,7 @@ export type PackedUserOperationStructOutput = [ callData: string; accountGasLimits: string; preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; + gasFees: string; paymasterAndData: string; signature: string; }; @@ -89,6 +86,7 @@ export declare namespace TokenPaymaster { export declare namespace OracleHelper { export type OracleHelperConfigStruct = { cacheTimeToLive: PromiseOrValue; + maxOracleRoundAge: PromiseOrValue; tokenOracle: PromiseOrValue; nativeOracle: PromiseOrValue; tokenToNativeOracle: PromiseOrValue; @@ -98,21 +96,23 @@ export declare namespace OracleHelper { }; export type OracleHelperConfigStructOutput = [ + number, number, string, string, boolean, boolean, boolean, - number + BigNumber ] & { cacheTimeToLive: number; + maxOracleRoundAge: number; tokenOracle: string; nativeOracle: string; tokenToNativeOracle: boolean; tokenOracleReverse: boolean; nativeOracleReverse: boolean; - priceUpdateThreshold: number; + priceUpdateThreshold: BigNumber; }; } @@ -144,13 +144,15 @@ export interface TokenPaymasterInterface extends utils.Interface { "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,uint256,uint256,bytes,bytes),bytes32,uint256)": 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; @@ -171,6 +173,7 @@ export interface TokenPaymasterInterface extends utils.Interface { | "setTokenPaymasterConfig" | "setUniswapConfiguration" | "token" + | "tokenPaymasterConfig" | "tokenToWei" | "transferOwnership" | "uniswap" @@ -178,6 +181,7 @@ export interface TokenPaymasterInterface extends utils.Interface { | "updateCachedPrice" | "validatePaymasterUserOp" | "weiToToken" + | "withdrawEth" | "withdrawStake" | "withdrawTo" | "withdrawToken" @@ -228,6 +232,10 @@ export interface TokenPaymasterInterface extends utils.Interface { values: [UniswapHelper.UniswapHelperConfigStruct] ): string; encodeFunctionData(functionFragment: "token", values?: undefined): string; + encodeFunctionData( + functionFragment: "tokenPaymasterConfig", + values?: undefined + ): string; encodeFunctionData( functionFragment: "tokenToWei", values: [PromiseOrValue, PromiseOrValue] @@ -257,6 +265,10 @@ export interface TokenPaymasterInterface extends utils.Interface { functionFragment: "weiToToken", values: [PromiseOrValue, PromiseOrValue] ): string; + encodeFunctionData( + functionFragment: "withdrawEth", + values: [PromiseOrValue, PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "withdrawStake", values: [PromiseOrValue] @@ -301,6 +313,10 @@ export interface TokenPaymasterInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "tokenPaymasterConfig", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "tokenToWei", data: BytesLike): Result; decodeFunctionResult( functionFragment: "transferOwnership", @@ -320,6 +336,10 @@ export interface TokenPaymasterInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult(functionFragment: "weiToToken", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawEth", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "withdrawStake", data: BytesLike @@ -414,7 +434,7 @@ export interface UserOperationSponsoredEventObject { user: string; actualTokenCharge: BigNumber; actualGasCost: BigNumber; - actualTokenPrice: BigNumber; + actualTokenPriceWithMarkup: BigNumber; } export type UserOperationSponsoredEvent = TypedEvent< [string, BigNumber, BigNumber, BigNumber], @@ -494,6 +514,17 @@ export interface TokenPaymaster extends BaseContract { 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, @@ -529,6 +560,12 @@ export interface TokenPaymaster extends BaseContract { overrides?: CallOverrides ): Promise<[BigNumber]>; + withdrawEth( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + withdrawStake( withdrawAddress: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } @@ -592,6 +629,17 @@ export interface TokenPaymaster extends BaseContract { 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, @@ -627,6 +675,12 @@ export interface TokenPaymaster extends BaseContract { overrides?: CallOverrides ): Promise; + withdrawEth( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + withdrawStake( withdrawAddress: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } @@ -686,6 +740,17 @@ export interface TokenPaymaster extends BaseContract { 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, @@ -721,6 +786,12 @@ export interface TokenPaymaster extends BaseContract { overrides?: CallOverrides ): Promise; + withdrawEth( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + withdrawStake( withdrawAddress: PromiseOrValue, overrides?: CallOverrides @@ -793,13 +864,13 @@ export interface TokenPaymaster extends BaseContract { user?: PromiseOrValue | null, actualTokenCharge?: null, actualGasCost?: null, - actualTokenPrice?: null + actualTokenPriceWithMarkup?: null ): UserOperationSponsoredEventFilter; UserOperationSponsored( user?: PromiseOrValue | null, actualTokenCharge?: null, actualGasCost?: null, - actualTokenPrice?: null + actualTokenPriceWithMarkup?: null ): UserOperationSponsoredEventFilter; }; @@ -847,6 +918,8 @@ export interface TokenPaymaster extends BaseContract { token(overrides?: CallOverrides): Promise; + tokenPaymasterConfig(overrides?: CallOverrides): Promise; + tokenToWei( amount: PromiseOrValue, price: PromiseOrValue, @@ -882,6 +955,12 @@ export interface TokenPaymaster extends BaseContract { overrides?: CallOverrides ): Promise; + withdrawEth( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + withdrawStake( withdrawAddress: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } @@ -948,6 +1027,10 @@ export interface TokenPaymaster extends BaseContract { token(overrides?: CallOverrides): Promise; + tokenPaymasterConfig( + overrides?: CallOverrides + ): Promise; + tokenToWei( amount: PromiseOrValue, price: PromiseOrValue, @@ -983,6 +1066,12 @@ export interface TokenPaymaster extends BaseContract { overrides?: CallOverrides ): Promise; + withdrawEth( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + withdrawStake( withdrawAddress: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } diff --git a/packages/types/src/contracts/EPv7/samples/VerifyingPaymaster.ts b/packages/types/src/contracts/EPv7/samples/VerifyingPaymaster.ts index ef7e6d62..0b443b4a 100644 --- a/packages/types/src/contracts/EPv7/samples/VerifyingPaymaster.ts +++ b/packages/types/src/contracts/EPv7/samples/VerifyingPaymaster.ts @@ -26,7 +26,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../common"; export type PackedUserOperationStruct = { sender: PromiseOrValue; @@ -35,8 +35,7 @@ export type PackedUserOperationStruct = { callData: PromiseOrValue; accountGasLimits: PromiseOrValue; preVerificationGas: PromiseOrValue; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; + gasFees: PromiseOrValue; paymasterAndData: PromiseOrValue; signature: PromiseOrValue; }; @@ -48,8 +47,7 @@ export type PackedUserOperationStructOutput = [ string, string, BigNumber, - BigNumber, - BigNumber, + string, string, string ] & { @@ -59,8 +57,7 @@ export type PackedUserOperationStructOutput = [ callData: string; accountGasLimits: string; preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; + gasFees: string; paymasterAndData: string; signature: string; }; @@ -71,14 +68,14 @@ export interface VerifyingPaymasterInterface extends utils.Interface { "deposit()": FunctionFragment; "entryPoint()": FunctionFragment; "getDeposit()": FunctionFragment; - "getHash((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes),uint48,uint48)": 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,uint256,uint256,bytes,bytes),bytes32,uint256)": FunctionFragment; + "validatePaymasterUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": FunctionFragment; "verifyingSigner()": FunctionFragment; "withdrawStake(address)": FunctionFragment; "withdrawTo(address,uint256)": FunctionFragment; diff --git a/packages/types/src/contracts/EPv7/samples/bls/BLSAccount.ts b/packages/types/src/contracts/EPv7/samples/bls/BLSAccount.ts deleted file mode 100644 index bd322650..00000000 --- a/packages/types/src/contracts/EPv7/samples/bls/BLSAccount.ts +++ /dev/null @@ -1,972 +0,0 @@ -/* 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; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; - paymasterAndData: PromiseOrValue; - signature: PromiseOrValue; -}; - -export type PackedUserOperationStructOutput = [ - string, - BigNumber, - string, - string, - string, - BigNumber, - BigNumber, - BigNumber, - string, - string -] & { - sender: string; - nonce: BigNumber; - initCode: string; - callData: string; - accountGasLimits: string; - preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; - paymasterAndData: string; - signature: string; -}; - -export interface BLSAccountInterface extends utils.Interface { - functions: { - "UPGRADE_INTERFACE_VERSION()": FunctionFragment; - "addDeposit()": FunctionFragment; - "aggregator()": FunctionFragment; - "entryPoint()": FunctionFragment; - "execute(address,uint256,bytes)": FunctionFragment; - "executeBatch(address[],uint256[],bytes[])": FunctionFragment; - "getBlsPublicKey()": FunctionFragment; - "getDeposit()": FunctionFragment; - "getNonce()": FunctionFragment; - "initialize(address)": FunctionFragment; - "initialize(uint256[4])": 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; - "setBlsPublicKey(uint256[4])": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "upgradeToAndCall(address,bytes)": FunctionFragment; - "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": FunctionFragment; - "withdrawDepositTo(address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "UPGRADE_INTERFACE_VERSION" - | "addDeposit" - | "aggregator" - | "entryPoint" - | "execute" - | "executeBatch" - | "getBlsPublicKey" - | "getDeposit" - | "getNonce" - | "initialize(address)" - | "initialize(uint256[4])" - | "onERC1155BatchReceived" - | "onERC1155Received" - | "onERC721Received" - | "owner" - | "proxiableUUID" - | "setBlsPublicKey" - | "supportsInterface" - | "upgradeToAndCall" - | "validateUserOp" - | "withdrawDepositTo" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "UPGRADE_INTERFACE_VERSION", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "addDeposit", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "aggregator", - 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: "getBlsPublicKey", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getDeposit", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "getNonce", values?: undefined): string; - encodeFunctionData( - functionFragment: "initialize(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "initialize(uint256[4])", - values: [ - [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - 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: "setBlsPublicKey", - values: [ - [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ] - ): 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: "aggregator", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "entryPoint", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeBatch", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getBlsPublicKey", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "getDeposit", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "getNonce", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "initialize(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "initialize(uint256[4])", - 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: "setBlsPublicKey", - 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; - "PublicKeyChanged(uint256[4],uint256[4])": EventFragment; - "SimpleAccountInitialized(address,address)": EventFragment; - "Upgraded(address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "PublicKeyChanged"): 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 PublicKeyChangedEventObject { - oldPublicKey: [BigNumber, BigNumber, BigNumber, BigNumber]; - newPublicKey: [BigNumber, BigNumber, BigNumber, BigNumber]; -} -export type PublicKeyChangedEvent = TypedEvent< - [ - [BigNumber, BigNumber, BigNumber, BigNumber], - [BigNumber, BigNumber, BigNumber, BigNumber] - ], - PublicKeyChangedEventObject ->; - -export type PublicKeyChangedEventFilter = - 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 BLSAccount extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: BLSAccountInterface; - - 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; - - aggregator(overrides?: CallOverrides): Promise<[string]>; - - 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; - - getBlsPublicKey( - overrides?: CallOverrides - ): Promise<[[BigNumber, BigNumber, BigNumber, BigNumber]]>; - - getDeposit(overrides?: CallOverrides): Promise<[BigNumber]>; - - getNonce(overrides?: CallOverrides): Promise<[BigNumber]>; - - "initialize(address)"( - anOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "initialize(uint256[4])"( - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - 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]>; - - setBlsPublicKey( - newPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - 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; - - aggregator(overrides?: CallOverrides): 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; - - getBlsPublicKey( - overrides?: CallOverrides - ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; - - getDeposit(overrides?: CallOverrides): Promise; - - getNonce(overrides?: CallOverrides): Promise; - - "initialize(address)"( - anOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "initialize(uint256[4])"( - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - 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; - - setBlsPublicKey( - newPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - overrides?: Overrides & { from?: PromiseOrValue } - ): 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; - - aggregator(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; - - getBlsPublicKey( - overrides?: CallOverrides - ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; - - getDeposit(overrides?: CallOverrides): Promise; - - getNonce(overrides?: CallOverrides): Promise; - - "initialize(address)"( - anOwner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "initialize(uint256[4])"( - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - 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; - - setBlsPublicKey( - newPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - 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; - - "PublicKeyChanged(uint256[4],uint256[4])"( - oldPublicKey?: null, - newPublicKey?: null - ): PublicKeyChangedEventFilter; - PublicKeyChanged( - oldPublicKey?: null, - newPublicKey?: null - ): PublicKeyChangedEventFilter; - - "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; - - aggregator(overrides?: CallOverrides): 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; - - getBlsPublicKey(overrides?: CallOverrides): Promise; - - getDeposit(overrides?: CallOverrides): Promise; - - getNonce(overrides?: CallOverrides): Promise; - - "initialize(address)"( - anOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "initialize(uint256[4])"( - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - 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; - - setBlsPublicKey( - newPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - overrides?: Overrides & { from?: PromiseOrValue } - ): 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; - - aggregator(overrides?: CallOverrides): 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; - - getBlsPublicKey(overrides?: CallOverrides): Promise; - - getDeposit(overrides?: CallOverrides): Promise; - - getNonce(overrides?: CallOverrides): Promise; - - "initialize(address)"( - anOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "initialize(uint256[4])"( - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - 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; - - setBlsPublicKey( - newPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - overrides?: Overrides & { from?: PromiseOrValue } - ): 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/bls/BLSAccountFactory.ts b/packages/types/src/contracts/EPv7/samples/bls/BLSAccountFactory.ts deleted file mode 100644 index ed6ff9e9..00000000 --- a/packages/types/src/contracts/EPv7/samples/bls/BLSAccountFactory.ts +++ /dev/null @@ -1,239 +0,0 @@ -/* 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 BLSAccountFactoryInterface extends utils.Interface { - functions: { - "accountImplementation()": FunctionFragment; - "createAccount(uint256,uint256[4])": FunctionFragment; - "getAddress(uint256,uint256[4])": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "accountImplementation" - | "createAccount" - | "getAddress" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "accountImplementation", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "createAccount", - values: [ - PromiseOrValue, - [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ] - ): string; - encodeFunctionData( - functionFragment: "getAddress", - values: [ - PromiseOrValue, - [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ] - ): string; - - decodeFunctionResult( - functionFragment: "accountImplementation", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createAccount", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "getAddress", data: BytesLike): Result; - - events: {}; -} - -export interface BLSAccountFactory extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: BLSAccountFactoryInterface; - - 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( - salt: PromiseOrValue, - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getAddress( - salt: PromiseOrValue, - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - overrides?: CallOverrides - ): Promise<[string]>; - }; - - accountImplementation(overrides?: CallOverrides): Promise; - - createAccount( - salt: PromiseOrValue, - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getAddress( - salt: PromiseOrValue, - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - overrides?: CallOverrides - ): Promise; - - callStatic: { - accountImplementation(overrides?: CallOverrides): Promise; - - createAccount( - salt: PromiseOrValue, - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - overrides?: CallOverrides - ): Promise; - - getAddress( - salt: PromiseOrValue, - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - accountImplementation(overrides?: CallOverrides): Promise; - - createAccount( - salt: PromiseOrValue, - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getAddress( - salt: PromiseOrValue, - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - accountImplementation( - overrides?: CallOverrides - ): Promise; - - createAccount( - salt: PromiseOrValue, - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getAddress( - salt: PromiseOrValue, - aPublicKey: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ], - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/packages/types/src/contracts/EPv7/samples/bls/BLSSignatureAggregator.ts b/packages/types/src/contracts/EPv7/samples/bls/BLSSignatureAggregator.ts deleted file mode 100644 index b1c384d8..00000000 --- a/packages/types/src/contracts/EPv7/samples/bls/BLSSignatureAggregator.ts +++ /dev/null @@ -1,449 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - PayableOverrides, - 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; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; - paymasterAndData: PromiseOrValue; - signature: PromiseOrValue; -}; - -export type PackedUserOperationStructOutput = [ - string, - BigNumber, - string, - string, - string, - BigNumber, - BigNumber, - BigNumber, - string, - string -] & { - sender: string; - nonce: BigNumber; - initCode: string; - callData: string; - accountGasLimits: string; - preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; - paymasterAndData: string; - signature: string; -}; - -export interface BLSSignatureAggregatorInterface extends utils.Interface { - functions: { - "BLS_DOMAIN()": FunctionFragment; - "N()": FunctionFragment; - "addStake(uint32)": FunctionFragment; - "aggregateSignatures((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[])": FunctionFragment; - "entryPoint()": FunctionFragment; - "getTrailingPublicKey(bytes)": FunctionFragment; - "getUserOpHash((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": FunctionFragment; - "getUserOpPublicKey((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": FunctionFragment; - "userOpToMessage((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": FunctionFragment; - "validateSignatures((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes)[],bytes)": FunctionFragment; - "validateUserOpSignature((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes))": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "BLS_DOMAIN" - | "N" - | "addStake" - | "aggregateSignatures" - | "entryPoint" - | "getTrailingPublicKey" - | "getUserOpHash" - | "getUserOpPublicKey" - | "userOpToMessage" - | "validateSignatures" - | "validateUserOpSignature" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "BLS_DOMAIN", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "N", values?: undefined): string; - encodeFunctionData( - functionFragment: "addStake", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "aggregateSignatures", - values: [PackedUserOperationStruct[]] - ): string; - encodeFunctionData( - functionFragment: "entryPoint", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getTrailingPublicKey", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getUserOpHash", - values: [PackedUserOperationStruct] - ): string; - encodeFunctionData( - functionFragment: "getUserOpPublicKey", - values: [PackedUserOperationStruct] - ): string; - encodeFunctionData( - functionFragment: "userOpToMessage", - values: [PackedUserOperationStruct] - ): string; - encodeFunctionData( - functionFragment: "validateSignatures", - values: [PackedUserOperationStruct[], PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "validateUserOpSignature", - values: [PackedUserOperationStruct] - ): string; - - decodeFunctionResult(functionFragment: "BLS_DOMAIN", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "N", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "addStake", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "aggregateSignatures", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "entryPoint", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getTrailingPublicKey", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getUserOpHash", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getUserOpPublicKey", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "userOpToMessage", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "validateSignatures", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "validateUserOpSignature", - data: BytesLike - ): Result; - - events: {}; -} - -export interface BLSSignatureAggregator extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: BLSSignatureAggregatorInterface; - - 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: { - BLS_DOMAIN(overrides?: CallOverrides): Promise<[string]>; - - N(overrides?: CallOverrides): Promise<[BigNumber]>; - - addStake( - delay: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - aggregateSignatures( - userOps: PackedUserOperationStruct[], - overrides?: CallOverrides - ): Promise<[string] & { aggregatedSignature: string }>; - - entryPoint(overrides?: CallOverrides): Promise<[string]>; - - getTrailingPublicKey( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise< - [[BigNumber, BigNumber, BigNumber, BigNumber]] & { - publicKey: [BigNumber, BigNumber, BigNumber, BigNumber]; - } - >; - - getUserOpHash( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise<[string]>; - - getUserOpPublicKey( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise< - [[BigNumber, BigNumber, BigNumber, BigNumber]] & { - publicKey: [BigNumber, BigNumber, BigNumber, BigNumber]; - } - >; - - userOpToMessage( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise<[[BigNumber, BigNumber]]>; - - validateSignatures( - userOps: PackedUserOperationStruct[], - signature: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - validateUserOpSignature( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise<[string] & { sigForUserOp: string }>; - }; - - BLS_DOMAIN(overrides?: CallOverrides): Promise; - - N(overrides?: CallOverrides): Promise; - - addStake( - delay: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - aggregateSignatures( - userOps: PackedUserOperationStruct[], - overrides?: CallOverrides - ): Promise; - - entryPoint(overrides?: CallOverrides): Promise; - - getTrailingPublicKey( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; - - getUserOpHash( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise; - - getUserOpPublicKey( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; - - userOpToMessage( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise<[BigNumber, BigNumber]>; - - validateSignatures( - userOps: PackedUserOperationStruct[], - signature: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - validateUserOpSignature( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise; - - callStatic: { - BLS_DOMAIN(overrides?: CallOverrides): Promise; - - N(overrides?: CallOverrides): Promise; - - addStake( - delay: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - aggregateSignatures( - userOps: PackedUserOperationStruct[], - overrides?: CallOverrides - ): Promise; - - entryPoint(overrides?: CallOverrides): Promise; - - getTrailingPublicKey( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; - - getUserOpHash( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise; - - getUserOpPublicKey( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; - - userOpToMessage( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise<[BigNumber, BigNumber]>; - - validateSignatures( - userOps: PackedUserOperationStruct[], - signature: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - validateUserOpSignature( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - BLS_DOMAIN(overrides?: CallOverrides): Promise; - - N(overrides?: CallOverrides): Promise; - - addStake( - delay: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - aggregateSignatures( - userOps: PackedUserOperationStruct[], - overrides?: CallOverrides - ): Promise; - - entryPoint(overrides?: CallOverrides): Promise; - - getTrailingPublicKey( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getUserOpHash( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise; - - getUserOpPublicKey( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise; - - userOpToMessage( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise; - - validateSignatures( - userOps: PackedUserOperationStruct[], - signature: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - validateUserOpSignature( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - BLS_DOMAIN(overrides?: CallOverrides): Promise; - - N(overrides?: CallOverrides): Promise; - - addStake( - delay: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - aggregateSignatures( - userOps: PackedUserOperationStruct[], - overrides?: CallOverrides - ): Promise; - - entryPoint(overrides?: CallOverrides): Promise; - - getTrailingPublicKey( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getUserOpHash( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise; - - getUserOpPublicKey( - userOp: PackedUserOperationStruct, - overrides?: CallOverrides - ): Promise; - - userOpToMessage( - userOp: 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/samples/bls/IBLSAccount.ts b/packages/types/src/contracts/EPv7/samples/bls/IBLSAccount.ts deleted file mode 100644 index bfd17b66..00000000 --- a/packages/types/src/contracts/EPv7/samples/bls/IBLSAccount.ts +++ /dev/null @@ -1,216 +0,0 @@ -/* 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, - 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; - maxFeePerGas: PromiseOrValue; - maxPriorityFeePerGas: PromiseOrValue; - paymasterAndData: PromiseOrValue; - signature: PromiseOrValue; -}; - -export type PackedUserOperationStructOutput = [ - string, - BigNumber, - string, - string, - string, - BigNumber, - BigNumber, - BigNumber, - string, - string -] & { - sender: string; - nonce: BigNumber; - initCode: string; - callData: string; - accountGasLimits: string; - preVerificationGas: BigNumber; - maxFeePerGas: BigNumber; - maxPriorityFeePerGas: BigNumber; - paymasterAndData: string; - signature: string; -}; - -export interface IBLSAccountInterface extends utils.Interface { - functions: { - "getBlsPublicKey()": FunctionFragment; - "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: "getBlsPublicKey" | "validateUserOp" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "getBlsPublicKey", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "validateUserOp", - values: [ - PackedUserOperationStruct, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult( - functionFragment: "getBlsPublicKey", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "validateUserOp", - data: BytesLike - ): Result; - - events: { - "PublicKeyChanged(uint256[4],uint256[4])": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "PublicKeyChanged"): EventFragment; -} - -export interface PublicKeyChangedEventObject { - oldPublicKey: [BigNumber, BigNumber, BigNumber, BigNumber]; - newPublicKey: [BigNumber, BigNumber, BigNumber, BigNumber]; -} -export type PublicKeyChangedEvent = TypedEvent< - [ - [BigNumber, BigNumber, BigNumber, BigNumber], - [BigNumber, BigNumber, BigNumber, BigNumber] - ], - PublicKeyChangedEventObject ->; - -export type PublicKeyChangedEventFilter = - TypedEventFilter; - -export interface IBLSAccount extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IBLSAccountInterface; - - 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: { - getBlsPublicKey( - overrides?: CallOverrides - ): Promise<[[BigNumber, BigNumber, BigNumber, BigNumber]]>; - - validateUserOp( - userOp: PackedUserOperationStruct, - userOpHash: PromiseOrValue, - missingAccountFunds: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - getBlsPublicKey( - overrides?: CallOverrides - ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; - - validateUserOp( - userOp: PackedUserOperationStruct, - userOpHash: PromiseOrValue, - missingAccountFunds: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - getBlsPublicKey( - overrides?: CallOverrides - ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; - - validateUserOp( - userOp: PackedUserOperationStruct, - userOpHash: PromiseOrValue, - missingAccountFunds: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "PublicKeyChanged(uint256[4],uint256[4])"( - oldPublicKey?: null, - newPublicKey?: null - ): PublicKeyChangedEventFilter; - PublicKeyChanged( - oldPublicKey?: null, - newPublicKey?: null - ): PublicKeyChangedEventFilter; - }; - - estimateGas: { - getBlsPublicKey(overrides?: CallOverrides): Promise; - - validateUserOp( - userOp: PackedUserOperationStruct, - userOpHash: PromiseOrValue, - missingAccountFunds: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - getBlsPublicKey(overrides?: CallOverrides): Promise; - - validateUserOp( - userOp: PackedUserOperationStruct, - userOpHash: PromiseOrValue, - missingAccountFunds: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/packages/types/src/contracts/EPv7/samples/bls/index.ts b/packages/types/src/contracts/EPv7/samples/bls/index.ts deleted file mode 100644 index fc8bf796..00000000 --- a/packages/types/src/contracts/EPv7/samples/bls/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { BLSAccount } from "./BLSAccount"; -export type { BLSAccountFactory } from "./BLSAccountFactory"; -export type { BLSSignatureAggregator } from "./BLSSignatureAggregator"; -export type { IBLSAccount } from "./IBLSAccount"; diff --git a/packages/types/src/contracts/EPv7/samples/callback/TokenCallbackHandler.ts b/packages/types/src/contracts/EPv7/samples/callback/TokenCallbackHandler.ts index 3767d353..0dc03aa7 100644 --- a/packages/types/src/contracts/EPv7/samples/callback/TokenCallbackHandler.ts +++ b/packages/types/src/contracts/EPv7/samples/callback/TokenCallbackHandler.ts @@ -19,7 +19,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../../common"; +} from "../../../common"; export interface TokenCallbackHandlerInterface extends utils.Interface { functions: { diff --git a/packages/types/src/contracts/EPv7/samples/index.ts b/packages/types/src/contracts/EPv7/samples/index.ts index 93c1909d..9db764af 100644 --- a/packages/types/src/contracts/EPv7/samples/index.ts +++ b/packages/types/src/contracts/EPv7/samples/index.ts @@ -1,8 +1,6 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -import type * as bls from "./bls"; -export type { bls }; import type * as callback from "./callback"; export type { callback }; import type * as utils from "./utils"; diff --git a/packages/types/src/contracts/EPv7/samples/utils/IOracle.ts b/packages/types/src/contracts/EPv7/samples/utils/IOracle.ts index b2d3eefe..8a5e66f5 100644 --- a/packages/types/src/contracts/EPv7/samples/utils/IOracle.ts +++ b/packages/types/src/contracts/EPv7/samples/utils/IOracle.ts @@ -17,7 +17,7 @@ import type { TypedEvent, TypedListener, OnEvent, -} from "../../common"; +} from "../../../common"; export interface IOracleInterface extends utils.Interface { functions: { diff --git a/packages/types/src/contracts/EPv7/samples/utils/OracleHelper.ts b/packages/types/src/contracts/EPv7/samples/utils/OracleHelper.ts index 69a335b1..c82649d9 100644 --- a/packages/types/src/contracts/EPv7/samples/utils/OracleHelper.ts +++ b/packages/types/src/contracts/EPv7/samples/utils/OracleHelper.ts @@ -24,7 +24,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../../common"; +} from "../../../common"; export interface OracleHelperInterface extends utils.Interface { functions: { diff --git a/packages/types/src/contracts/EPv7/samples/utils/UniswapHelper.ts b/packages/types/src/contracts/EPv7/samples/utils/UniswapHelper.ts index 58d2543a..316627ca 100644 --- a/packages/types/src/contracts/EPv7/samples/utils/UniswapHelper.ts +++ b/packages/types/src/contracts/EPv7/samples/utils/UniswapHelper.ts @@ -23,7 +23,7 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../../common"; +} from "../../../common"; export interface UniswapHelperInterface extends utils.Interface { functions: { diff --git a/packages/types/src/contracts/UserOperation.ts b/packages/types/src/contracts/UserOperation.ts index 1193f9d3..dff5fb5d 100644 --- a/packages/types/src/contracts/UserOperation.ts +++ b/packages/types/src/contracts/UserOperation.ts @@ -1,4 +1,9 @@ import { BigNumberish, BytesLike } from "ethers"; +import { PackedUserOperationStruct } from "./EPv7/interfaces/IPaymaster"; + +export type NotPromise = { + [P in keyof T]: Exclude> +} export interface UserOperation { sender: string; @@ -18,24 +23,4 @@ export interface UserOperation { signature: BytesLike; } -export interface UserOperation6And7 { - sender: string; - nonce: BigNumberish; - callData: BytesLike; - callGasLimit: BigNumberish; - verificationGasLimit: BigNumberish; - preVerificationGas: BigNumberish; - maxFeePerGas: BigNumberish; - maxPriorityFeePerGas: BigNumberish; - signature: BytesLike; - - factory?: string; - factoryData?: BytesLike; - paymaster?: string; - paymasterVerificationGasLimit?: BigNumberish; - paymasterPostOpGasLimit?: BigNumberish; - paymasterData?: BytesLike; - - initCode?: BytesLike; - paymasterAndData?: BytesLike; -} +export type PackedUserOperation = NotPromise \ No newline at end of file diff --git a/packages/types/src/contracts/EPv7/common.ts b/packages/types/src/contracts/common.ts similarity index 93% rename from packages/types/src/contracts/EPv7/common.ts rename to packages/types/src/contracts/common.ts index 2fa9b74c..ed9cc606 100644 --- a/packages/types/src/contracts/EPv7/common.ts +++ b/packages/types/src/contracts/common.ts @@ -43,4 +43,4 @@ export type GetARGsTypeFromFactory = F extends MinEthersFactory ? Parameters : never; -export type PromiseOrValue = T; // deleted Promise on purpose +export type PromiseOrValue = T | Promise; // deleted Promise on purpose 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..73fa4487 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 \ @@ -12,5 +12,4 @@ ENTRYPOINT geth \ --dev \ --allow-insecure-unlock \ --rpc.allow-unprotected-txs \ - --dev.gaslimit 20000000 \ - --ignore-legacy-receipts + --dev.gaslimit 20000000 From ab982684da86acfc1f9360734e5ab335a3211ff5 Mon Sep 17 00:00:00 2001 From: marie-fourier Date: Tue, 27 Feb 2024 16:31:13 +0500 Subject: [PATCH 08/12] fix safe validation --- .../EntryPointService/eventListeners/0.0.7.ts | 2 +- .../src/services/EntryPointService/service.ts | 14 ++ .../utils/decodeRevertReason.ts | 2 +- .../EntryPointService/versions/0.0.7.ts | 135 +++++++----------- .../executor/src/services/MempoolService.ts | 4 +- .../UserOpValidation/validators/safe.ts | 18 +-- test/geth-dev/Dockerfile | 3 +- 7 files changed, 73 insertions(+), 105 deletions(-) diff --git a/packages/executor/src/services/EntryPointService/eventListeners/0.0.7.ts b/packages/executor/src/services/EntryPointService/eventListeners/0.0.7.ts index 47ad39c7..a9ae4fec 100644 --- a/packages/executor/src/services/EntryPointService/eventListeners/0.0.7.ts +++ b/packages/executor/src/services/EntryPointService/eventListeners/0.0.7.ts @@ -5,7 +5,7 @@ import { UserOperationEventEvent, EntryPoint, } from "types/lib/contracts/EPv7/core/EntryPoint"; -import { TypedEvent } from "types/lib/contracts/EPv7/common"; +import { TypedEvent } from "types/lib/contracts/common"; import { ReputationService } from "../../ReputationService"; export class EntryPointV7EventsService { diff --git a/packages/executor/src/services/EntryPointService/service.ts b/packages/executor/src/services/EntryPointService/service.ts index e9c85921..a87d7fbe 100644 --- a/packages/executor/src/services/EntryPointService/service.ts +++ b/packages/executor/src/services/EntryPointService/service.ts @@ -9,6 +9,8 @@ import { 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 { @@ -62,6 +64,12 @@ export class EntryPointService { 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); @@ -76,6 +84,12 @@ export class EntryPointService { 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); diff --git a/packages/executor/src/services/EntryPointService/utils/decodeRevertReason.ts b/packages/executor/src/services/EntryPointService/utils/decodeRevertReason.ts index bfbe55a3..a55fd4e6 100644 --- a/packages/executor/src/services/EntryPointService/utils/decodeRevertReason.ts +++ b/packages/executor/src/services/EntryPointService/utils/decodeRevertReason.ts @@ -2,7 +2,7 @@ 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/src/contracts/EPv7/factories/interfaces' +import { IPaymaster__factory } from 'types/lib/contracts/EPv7/factories/interfaces' const decodeRevertReasonContracts = new Interface([ ...EntryPointSimulations__factory.createInterface().fragments, diff --git a/packages/executor/src/services/EntryPointService/versions/0.0.7.ts b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts index 8ec9edba..99af8676 100644 --- a/packages/executor/src/services/EntryPointService/versions/0.0.7.ts +++ b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts @@ -1,18 +1,20 @@ import { EntryPoint, - UserOperationEventEvent, + 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 { UserOperation } from "types/lib/contracts/UserOperation"; +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, IStakeManager } from "types/lib/contracts/EPv7/interfaces"; +import { IEntryPointSimulations } from "types/lib/contracts/EPv7/interfaces"; +import { IEntryPointSimulations__factory } from "types/lib/contracts/EPv7/factories/interfaces"; import { hexlify, arrayify, @@ -22,7 +24,7 @@ import { UserOperationReceipt, UserOperationByHashResponse, } from "types/lib/api/interfaces"; -import { encodeUserOp, packUserOp } from "../utils"; +import { encodeUserOp, mergeValidationDataValues, packUserOp, unpackUserOp } from "../utils"; import { Log, NetworkConfig, @@ -32,8 +34,8 @@ import { import { deepHexlify } from "../../../utils"; import { DefaultGasOverheads } from "../constants"; import { IEntryPointService } from "./base"; -import { IEntryPointSimulations__factory } from "types/lib/contracts/EPv7/factories/interfaces"; import { StateOverrides } from "../interfaces"; +import { decodeRevertReason } from "../utils/decodeRevertReason"; const entryPointSimulations = IEntryPointSimulations__factory.createInterface() @@ -73,10 +75,17 @@ export class EntryPointV7Service implements IEntryPointService { to: this.address, data } - const errorResult = await this.provider - .send('eth_call', [tx, "latest", stateOverrides]) - .catch((err) => this.nonGethErrorHandler(err)); - return this.parseErrorResult(userOp, errorResult); + 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( @@ -195,7 +204,7 @@ export class EntryPointV7Service implements IEntryPointService { throw new Error("unable to parse transaction"); } const parsed = this.contract.interface.parseTransaction(tx); - const ops: UserOperation[] = parsed?.args.ops; + const ops: PackedUserOperation[] = parsed?.args.ops; if (ops.length == 0) { throw new Error("failed to parse transaction"); } @@ -209,7 +218,7 @@ export class EntryPointV7Service implements IEntryPointService { } return deepHexlify({ - userOperation: op, + userOperation: unpackUserOp(op), entryPoint: this.address, transactionHash: tx.hash, blockHash: tx.blockHash ?? "", @@ -249,20 +258,34 @@ export class EntryPointV7Service implements IEntryPointService { userOp: UserOperation, data: string ): UserOpValidationResult { - const [decodedSimulations]: - [IEntryPointSimulations.ValidationResultStructOutput] = entryPointSimulations - .decodeFunctionResult("simulateValidation", data); - const { name: errorName, args: errorArgs } = - this.contract.interface.parseError(data); - const errFullName = `${errorName}(${errorArgs.toString()})`; - const errResult = this.parseErrorResult(userOp, { - errorName, - errorArgs, - }); - if (!errorName.includes("Result")) { - throw new Error(errFullName); + 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) } - return errResult; } private nonGethErrorHandler(errorResult: any): any { @@ -291,69 +314,7 @@ export class EntryPointV7Service implements IEntryPointService { } catch (err) { /* empty */ } - return errorResult; - } - - private parseErrorResult( - userOp: UserOperation, - 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( - addr: string | undefined, - info: StakeInfo - ): StakeInfo | undefined { - return addr == null - ? undefined - : { - ...info, - addr, - }; - } - - return { - returnInfo, - senderInfo: { - ...senderInfo, - addr: userOp.sender, - }, - factoryInfo: fillEntity(userOp.factory, factoryInfo), - paymasterInfo: fillEntity(userOp.paymaster, paymasterInfo), - aggregatorInfo: fillEntity( - aggregatorInfo?.actualAggregator, - aggregatorInfo?.stakeInfo - ), - }; + throw errorResult; } private filterLogs(userOpEvent: UserOperationEventEvent, logs: Log[]): Log[] { diff --git a/packages/executor/src/services/MempoolService.ts b/packages/executor/src/services/MempoolService.ts index 4f2453a2..46e13ff3 100644 --- a/packages/executor/src/services/MempoolService.ts +++ b/packages/executor/src/services/MempoolService.ts @@ -338,7 +338,7 @@ export class MempoolService { const paymaster = this.entryPointService.getPaymaster(entryPoint, userOp); if (paymaster) { - if (accounts.includes(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 @@ -348,7 +348,7 @@ export class MempoolService { const factory = this.entryPointService.getFactory(entryPoint, userOp); if (factory) { - if (accounts.includes(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 diff --git a/packages/executor/src/services/UserOpValidation/validators/safe.ts b/packages/executor/src/services/UserOpValidation/validators/safe.ts index 101ddab2..ac54b1f9 100644 --- a/packages/executor/src/services/UserOpValidation/validators/safe.ts +++ b/packages/executor/src/services/UserOpValidation/validators/safe.ts @@ -321,19 +321,11 @@ export class SafeValidationService { let requireStakeSlot: string | undefined; for (const slot of [...Object.keys(writes), ...Object.keys(reads)]) { if (isSlotAssociatedWith(slot, sender, entitySlots)) { - const epVersion = - this.entryPointService.getEntryPointVersion(entryPoint); - const hasInitCode = userOp.factory && userOp.factory.length > 2 - if ( - hasInitCode == true && - 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/test/geth-dev/Dockerfile b/test/geth-dev/Dockerfile index 73fa4487..476ab5e2 100644 --- a/test/geth-dev/Dockerfile +++ b/test/geth-dev/Dockerfile @@ -12,4 +12,5 @@ ENTRYPOINT geth \ --dev \ --allow-insecure-unlock \ --rpc.allow-unprotected-txs \ - --dev.gaslimit 20000000 + --dev.gaslimit 20000000 \ + --rpc.txfeecap 100 From 539119e21fbb95b53e96275a1a6e15444bd8c349 Mon Sep 17 00:00:00 2001 From: marie-fourier Date: Tue, 27 Feb 2024 17:40:23 +0500 Subject: [PATCH 09/12] epv7 tests --- .../EntryPointService/versions/0.0.7.ts | 14 ++++- .../UserOpValidation/validators/estimation.ts | 26 ++++---- packages/executor/test/constants.ts | 4 +- packages/executor/test/fixtures/getClient.ts | 7 ++- packages/executor/test/fixtures/getConfig.ts | 2 +- packages/executor/test/fixtures/index.ts | 2 +- .../fixtures/{userOpV6.ts => userOpV7.ts} | 61 +++++++------------ packages/executor/test/mocks/GethTracer.ts | 2 +- .../executor/test/unit/modules/eth.test.ts | 4 +- .../test/unit/services/MempoolService.test.ts | 2 +- .../unit/services/ReputationService.test.ts | 2 +- .../services/UserOpValidationService.test.ts | 9 +-- .../test/utils/applyEstimatedUserOp.ts | 4 +- packages/executor/test/utils/setBalance.ts | 1 - packages/types/src/api/interfaces.ts | 4 +- .../factories/core/EntryPoint__factory.ts | 4 +- .../samples/SimpleAccountFactory__factory.ts | 2 +- 17 files changed, 70 insertions(+), 80 deletions(-) rename packages/executor/test/fixtures/{userOpV6.ts => userOpV7.ts} (65%) diff --git a/packages/executor/src/services/EntryPointService/versions/0.0.7.ts b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts index 99af8676..a5986f8d 100644 --- a/packages/executor/src/services/EntryPointService/versions/0.0.7.ts +++ b/packages/executor/src/services/EntryPointService/versions/0.0.7.ts @@ -64,9 +64,17 @@ export class EntryPointV7Service implements IEntryPointService { to: this.address, data } - return await this.provider - .send('eth_call', [tx, "latest", stateOverrides]) - .catch((err) => this.nonGethErrorHandler(err)); + 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 { diff --git a/packages/executor/src/services/UserOpValidation/validators/estimation.ts b/packages/executor/src/services/UserOpValidation/validators/estimation.ts index 6cc86434..6169b706 100644 --- a/packages/executor/src/services/UserOpValidation/validators/estimation.ts +++ b/packages/executor/src/services/UserOpValidation/validators/estimation.ts @@ -5,6 +5,7 @@ import { Logger } from "types/lib"; import { UserOperation } from "types/lib/contracts/UserOperation"; import { ExecutionResult } from "../../../interfaces"; import { EntryPointService } from "../../EntryPointService"; +import { mergeValidationDataValues } from "../../EntryPointService/utils"; export class EstimationService { constructor( @@ -17,22 +18,21 @@ export class EstimationService { userOp: UserOperation, entryPoint: string ): Promise { - const errorResult = await this.entryPointService.simulateHandleOp( + const returnInfo = await this.entryPointService.simulateHandleOp( entryPoint, userOp ); - - if (errorResult.errorName === "FailedOp") { - throw new RpcError( - errorResult.errorArgs.at(-1), - RpcErrorCodes.VALIDATION_FAILED - ); - } - - if (errorResult.errorName !== "ExecutionResult") { - throw errorResult; + 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, } - - return errorResult.errorArgs; } } 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 6bd567f1..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/contracts/EPv6"; 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 1b89a428..8d0508b4 100644 --- a/packages/executor/test/fixtures/getConfig.ts +++ b/packages/executor/test/fixtures/getConfig.ts @@ -5,7 +5,7 @@ import { ConfigOptions, NetworkConfig } from "../../src/interfaces"; const BaseConfig: ConfigOptions = { config: { - entryPointsV6: [EntryPointAddress], + entryPoints: [EntryPointAddress], relayers: [TestAccountMnemonic], rpcEndpoint: DefaultRpcUrl, beneficiary: "", diff --git a/packages/executor/test/fixtures/index.ts b/packages/executor/test/fixtures/index.ts index f40700dd..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 "./userOpV6"; +export * from "./userOpV7"; export * from "./modules"; diff --git a/packages/executor/test/fixtures/userOpV6.ts b/packages/executor/test/fixtures/userOpV7.ts similarity index 65% rename from packages/executor/test/fixtures/userOpV6.ts rename to packages/executor/test/fixtures/userOpV7.ts index 4abd3844..60083c33 100644 --- a/packages/executor/test/fixtures/userOpV6.ts +++ b/packages/executor/test/fixtures/userOpV7.ts @@ -1,20 +1,20 @@ -import { IEntryPoint__factory, SimpleAccountFactory__factory, SimpleAccount__factory } from "types/src/contracts/EPv6" 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/contracts/EPv6/EntryPoint"; +import { arrayify, defaultAbiCoder, keccak256 } from "ethers/lib/utils"; import { applyEstimatedUserOp, randomAddress } from "../utils"; import { Eth } from "../../src/modules"; -import { EntryPointV6Service } from "../../src/services/EntryPointService/versions"; +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(EntryPointV6Service.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/modules/eth.test.ts b/packages/executor/test/unit/modules/eth.test.ts index cf2ddc32..4b0f1f37 100644 --- a/packages/executor/test/unit/modules/eth.test.ts +++ b/packages/executor/test/unit/modules/eth.test.ts @@ -3,9 +3,9 @@ import { Wallet } from "ethers"; import { createRandomUnsignedUserOp, getClient, getConfigs, getCounterFactualAddress, getModules, testAccounts } from "../../fixtures"; import { setBalance } from "../../utils"; import { EntryPointAddress } from "../../constants"; -import { EstimatedUserOperationGas } from "types/src/api/interfaces"; +import { EstimatedUserOperationGas } from "types/lib/api/interfaces"; -describe("Eth module", async () => { +describe.only("Eth module", async () => { const client = await getClient(); // runs anvil const wallet = new Wallet(testAccounts[0]); const aaWalletAddress = await getCounterFactualAddress(wallet.address); 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/types/src/api/interfaces.ts b/packages/types/src/api/interfaces.ts index 122ea89e..604867fe 100644 --- a/packages/types/src/api/interfaces.ts +++ b/packages/types/src/api/interfaces.ts @@ -3,7 +3,7 @@ import { IWhitelistedEntities } from "../executor"; import { UserOperation } from "../contracts/UserOperation"; export type EstimatedUserOperationGas = - | { + & { preVerificationGas: BigNumberish; verificationGas: BigNumberish; verificationGasLimit: BigNumberish; @@ -11,7 +11,7 @@ export type EstimatedUserOperationGas = validAfter?: BigNumberish; validUntil?: BigNumberish; } - | GetGasPriceResponse; + & GetGasPriceResponse; export type UserOperationByHashResponse = { userOperation: UserOperation; diff --git a/packages/types/src/contracts/EPv7/factories/core/EntryPoint__factory.ts b/packages/types/src/contracts/EPv7/factories/core/EntryPoint__factory.ts index c2f1ca16..7067638d 100644 --- a/packages/types/src/contracts/EPv7/factories/core/EntryPoint__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/core/EntryPoint__factory.ts @@ -1006,8 +1006,8 @@ const _abi = [ }, ] as const; -const _bytecode = - "0x60a08060405234620000825760016002556101df8181016001600160401b038111838210176200006c57829162003f2b833903906000f080156200006057608052604051613ea39081620000888239608051818181610d22015261324b0152f35b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b600080fdfe60806040526004361015610024575b361561001957600080fd5b61002233612748565b005b60003560e01c806242dc5314611b0057806301ffc9a7146119ae5780630396cb60146116765780630bd28e3b146115fa5780631b2e01b814611566578063205c2878146113d157806322cdde4c1461136b57806335567e1a146112b35780635287ce12146111a557806370a0823114611140578063765e827f14610e82578063850aaf6214610dc35780639b249f6914610c74578063b760faf914610c3a578063bb9fe6bf14610a68578063c23a5cea146107c4578063dbed18e0146101a15763fc7e286d0361000e573461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61013a61229f565b16600052600060205260a0604060002065ffffffffffff6001825492015460405192835260ff8116151560208401526dffffffffffffffffffffffffffff8160081c16604084015263ffffffff8160781c16606084015260981c166080820152f35b600080fd5b3461019c576101af36612317565b906101b86129bd565b60009160005b82811061056f57506101d08493612588565b6000805b8481106102fc5750507fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000809360005b81811061024757610240868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2613ba7565b6001600255005b6102a261025582848a612796565b73ffffffffffffffffffffffffffffffffffffffff6102766020830161282a565b167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a2806127d6565b906000915b8083106102b957505050600101610209565b909194976102f36102ed6001926102e78c8b6102e0826102da8e8b8d61269d565b9261265a565b5191613597565b90612409565b99612416565b950191906102a7565b6020610309828789612796565b61031f61031682806127d6565b9390920161282a565b9160009273ffffffffffffffffffffffffffffffffffffffff8091165b8285106103505750505050506001016101d4565b909192939561037f83610378610366848c61265a565b516103728b898b61269d565b856129f6565b9290613dd7565b9116840361050a576104a5576103958491613dd7565b9116610440576103b5576103aa600191612416565b96019392919061033c565b60a487604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608489604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b61057a818487612796565b9361058585806127d6565b919095602073ffffffffffffffffffffffffffffffffffffffff6105aa82840161282a565b1697600192838a1461076657896105da575b5050505060019293949550906105d191612409565b939291016101be565b8060406105e892019061284b565b918a3b1561019c57929391906040519485937f2dd8113300000000000000000000000000000000000000000000000000000000855288604486016040600488015252606490818601918a60051b8701019680936000915b8c83106106e657505050505050838392610684927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8560009803016024860152612709565b03818a5afa90816106d7575b506106c657602486604051907f86a9f7500000000000000000000000000000000000000000000000000000000082526004820152fd5b93945084936105d1600189806105bc565b6106e0906121bd565b88610690565b91939596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c908a9294969a0301865288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18336030181121561019c57836107538793858394016128ec565b9a0196019301909189979695949261063f565b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b3461019c576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576107fc61229f565b33600052600082526001604060002001908154916dffffffffffffffffffffffffffff8360081c16928315610a0a5765ffffffffffff8160981c1680156109ac57421061094e5760009373ffffffffffffffffffffffffffffffffffffffff859485947fffffffffffffff000000000000000000000000000000000000000000000000ff86951690556040517fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda33391806108da8786836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a2165af16108e8612450565b50156108f057005b606490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b3461019c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c573360005260006020526001604060002001805463ffffffff8160781c16908115610bdc5760ff1615610b7e5765ffffffffffff908142160191818311610b4f5780547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001678ffffffffffff00000000000000000000000000000000000000609885901b161790556040519116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a2005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610022610c6f61229f565b612748565b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043567ffffffffffffffff811161019c576020610cc8610d1b9236906004016122c2565b919073ffffffffffffffffffffffffffffffffffffffff9260405194859283927f570e1a360000000000000000000000000000000000000000000000000000000084528560048501526024840191612709565b03816000857f0000000000000000000000000000000000000000000000000000000000000000165af1908115610db757602492600092610d86575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b610da991925060203d602011610db0575b610da181836121ed565b8101906126dd565b9083610d56565b503d610d97565b6040513d6000823e3d90fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610dfa61229f565b60243567ffffffffffffffff811161019c57600091610e1e839236906004016122c2565b90816040519283928337810184815203915af4610e39612450565b90610e7e6040519283927f99410554000000000000000000000000000000000000000000000000000000008452151560048401526040602484015260448301906123c6565b0390fd5b3461019c57610e9036612317565b610e9b9291926129bd565b610ea483612588565b60005b848110610f1c57506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000915b858310610eec576102408585613ba7565b909193600190610f12610f0087898761269d565b610f0a888661265a565b519088613597565b0194019190610edb565b610f47610f40610f2e8385979561265a565b51610f3a84898761269d565b846129f6565b9190613dd7565b73ffffffffffffffffffffffffffffffffffffffff929183166110db5761107657610f7190613dd7565b911661101157610f8657600101929092610ea7565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608483604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61118c61229f565b1660005260006020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff6111f161229f565b6000608060405161120181612155565b828152826020820152826040820152826060820152015216600052600060205260a06040600020608060405161123681612155565b6001835493848352015490602081019060ff8316151582526dffffffffffffffffffffffffffff60408201818560081c16815263ffffffff936060840193858760781c16855265ffffffffffff978891019660981c1686526040519788525115156020880152511660408601525116606084015251166080820152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760206112ec61229f565b73ffffffffffffffffffffffffffffffffffffffff6113096122f0565b911660005260018252604060002077ffffffffffffffffffffffffffffffffffffffffffffffff821660005282526040600020547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b3461019c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60208136011261019c576004359067ffffffffffffffff821161019c5761012090823603011261019c576113c9602091600401612480565b604051908152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761140861229f565b60243590336000526000602052604060002090815491828411611508576000808573ffffffffffffffffffffffffffffffffffffffff8295839561144c848a612443565b90556040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af16114a2612450565b50156114aa57005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761159d61229f565b73ffffffffffffffffffffffffffffffffffffffff6115ba6122f0565b9116600052600160205277ffffffffffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043577ffffffffffffffffffffffffffffffffffffffffffffffff811680910361019c5733600052600160205260406000209060005260205260406000206116728154612416565b9055005b6020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043563ffffffff9182821680920361019c5733600052600081526040600020928215611950576001840154908160781c1683106118f2576116f86dffffffffffffffffffffffffffff9182349160081c16612409565b93841561189457818511611836579065ffffffffffff61180592546040519061172082612155565b8152848101926001845260408201908816815260608201878152600160808401936000855233600052600089526040600020905181550194511515917fffffffffffffffffffffffffff0000000000000000000000000000000000000060ff72ffffffff0000000000000000000000000000006effffffffffffffffffffffffffff008954945160081b16945160781b1694169116171717835551167fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff78ffffffffffff0000000000000000000000000000000000000083549260981b169116179055565b6040519283528201527fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c0160403392a2005b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361019c57807f60fc6b6e0000000000000000000000000000000000000000000000000000000060209214908115611ad6575b8115611aac575b8115611a82575b8115611a58575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501482611a4d565b7f3e84f0210000000000000000000000000000000000000000000000000000000081149150611a46565b7fcf28ef970000000000000000000000000000000000000000000000000000000081149150611a3f565b7f915074d80000000000000000000000000000000000000000000000000000000081149150611a38565b3461019c576102007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5767ffffffffffffffff60043581811161019c573660238201121561019c57611b62903690602481600401359101612268565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101c0811261019c5761014060405191611b9e83612155565b1261019c5760405192611bb0846121a0565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361019c578452602093604435858201526064356040820152608435606082015260a435608082015260c43560a082015260e43560c08201526101043573ffffffffffffffffffffffffffffffffffffffff8116810361019c5760e08201526101243561010082015261014435610120820152825261016435848301526101843560408301526101a43560608301526101c43560808301526101e43590811161019c57611c7c9036906004016122c2565b905a3033036120f7578351606081015195603f5a0260061c61271060a0840151890101116120ce5760009681519182611ff0575b5050505090611cca915a9003608085015101923691612268565b925a90600094845193611cdc85613ccc565b9173ffffffffffffffffffffffffffffffffffffffff60e0870151168015600014611ea957505073ffffffffffffffffffffffffffffffffffffffff855116935b5a9003019360a06060820151910151016080860151850390818111611e95575b50508302604085015192818410600014611dce5750506003811015611da157600203611d79576113c99293508093611d7481613d65565b613cf6565b5050507fdeadaa51000000000000000000000000000000000000000000000000000000008152fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b81611dde92979396940390613c98565b506003841015611e6857507f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f60808683015192519473ffffffffffffffffffffffffffffffffffffffff865116948873ffffffffffffffffffffffffffffffffffffffff60e0890151169701519160405192835215898301528760408301526060820152a46113c9565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b6064919003600a0204909301928780611d3d565b8095918051611eba575b5050611d1d565b6003861015611fc1576002860315611eb35760a088015190823b1561019c57600091611f2491836040519586809581947f7c627b210000000000000000000000000000000000000000000000000000000083528d60048401526080602484015260848301906123c6565b8b8b0260448301528b60648301520393f19081611fad575b50611fa65787893d610800808211611f9e575b506040519282828501016040528184528284013e610e7e6040519283927fad7954bc000000000000000000000000000000000000000000000000000000008452600484015260248301906123c6565b905083611f4f565b8980611eb3565b611fb89199506121bd565b6000978a611f3c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91600092918380938c73ffffffffffffffffffffffffffffffffffffffff885116910192f115612023575b808080611cb0565b611cca929195503d6108008082116120c6575b5060405190888183010160405280825260008983013e805161205f575b5050600194909161201b565b7f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a20188870151918973ffffffffffffffffffffffffffffffffffffffff8551169401516120bc604051928392835260408d84015260408301906123c6565b0390a38680612053565b905088612036565b877fdeaddead000000000000000000000000000000000000000000000000000000006000526000fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b60a0810190811067ffffffffffffffff82111761217157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610140810190811067ffffffffffffffff82111761217157604052565b67ffffffffffffffff811161217157604052565b6060810190811067ffffffffffffffff82111761217157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761217157604052565b67ffffffffffffffff811161217157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926122748261222e565b9161228260405193846121ed565b82948184528183011161019c578281602093846000960137010152565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9181601f8401121561019c5782359167ffffffffffffffff831161019c576020838186019501011161019c57565b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261019c5760043567ffffffffffffffff9283821161019c578060238301121561019c57816004013593841161019c5760248460051b8301011161019c57602401919060243573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b60005b8381106123b65750506000910152565b81810151838201526020016123a6565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612402815180928187528780880191016123a3565b0116010190565b91908201809211610b4f57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b4f5760010190565b91908203918211610b4f57565b3d1561247b573d906124618261222e565b9161246f60405193846121ed565b82523d6000602084013e565b606090565b604061248e8183018361284b565b90818351918237206124a3606084018461284b565b90818451918237209260c06124bb60e083018361284b565b908186519182372091845195602087019473ffffffffffffffffffffffffffffffffffffffff833516865260208301358789015260608801526080870152608081013560a087015260a081013582870152013560e08501526101009081850152835261012083019167ffffffffffffffff918484108385111761217157838252845190206101408501908152306101608601524661018086015260608452936101a00191821183831017612171575251902090565b67ffffffffffffffff81116121715760051b60200190565b9061259282612570565b6040906125a260405191826121ed565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06125d08295612570565b019160005b8381106125e25750505050565b60209082516125f081612155565b83516125fb816121a0565b600081526000849181838201528187820152816060818184015260809282848201528260a08201528260c08201528260e082015282610100820152826101208201528652818587015281898701528501528301528286010152016125d5565b805182101561266e5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919081101561266e5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18136030182121561019c570190565b9081602091031261019c575173ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b7f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4602073ffffffffffffffffffffffffffffffffffffffff61278a3485613c98565b936040519485521692a2565b919081101561266e5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18136030182121561019c570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c57602001918160051b3603831361019c57565b3573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c5760200191813603831361019c57565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561019c57016020813591019167ffffffffffffffff821161019c57813603831361019c57565b61012091813573ffffffffffffffffffffffffffffffffffffffff811680910361019c576129626129476129ba9561299b93855260208601356020860152612937604087018761289c565b9091806040880152860191612709565b612954606086018661289c565b908583036060870152612709565b6080840135608084015260a084013560a084015260c084013560c084015261298d60e085018561289c565b9084830360e0860152612709565b916129ac610100918281019061289c565b929091818503910152612709565b90565b60028054146129cc5760028055565b60046040517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b926000905a93805194843573ffffffffffffffffffffffffffffffffffffffff811680910361019c5786526020850135602087015260808501356fffffffffffffffffffffffffffffffff90818116606089015260801c604088015260a086013560c088015260c086013590811661010088015260801c610120870152612a8060e086018661284b565b801561357b576034811061351d578060141161019c578060241161019c5760341161019c57602481013560801c60a0880152601481013560801c60808801523560601c60e08701525b612ad285612480565b60208301526040860151946effffffffffffffffffffffffffffff8660c08901511760608901511760808901511760a0890151176101008901511761012089015117116134bf57604087015160608801510160808801510160a08801510160c0880151016101008801510296835173ffffffffffffffffffffffffffffffffffffffff81511690612b66604085018561284b565b806131e4575b505060e0015173ffffffffffffffffffffffffffffffffffffffff1690600082156131ac575b6020612bd7918b828a01516000868a604051978896879586937f19822f7c00000000000000000000000000000000000000000000000000000000855260048501613db5565b0393f160009181613178575b50612c8b573d8c610800808311612c83575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141323320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123c6565b915082612bf5565b9a92939495969798999a91156130f2575b509773ffffffffffffffffffffffffffffffffffffffff835116602084015190600052600160205260406000208160401c60005260205267ffffffffffffffff604060002091825492612cee84612416565b9055160361308d575a8503116130285773ffffffffffffffffffffffffffffffffffffffff60e0606093015116612d42575b509060a09184959697986040608096015260608601520135905a900301910152565b969550505a9683519773ffffffffffffffffffffffffffffffffffffffff60e08a01511680600052600060205260406000208054848110612fc3576080612dcd9a9b9c600093878094039055015192602089015183604051809d819582947f52b7512c0000000000000000000000000000000000000000000000000000000084528c60048501613db5565b039286f1978860009160009a612f36575b50612e86573d8b610800808311612e7e575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141333320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123c6565b915082612df0565b9991929394959697989998925a900311612eab57509096959094939291906080612d20565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602760448201527f41413336206f766572207061796d6173746572566572696669636174696f6e4760648201527f61734c696d6974000000000000000000000000000000000000000000000000006084820152fd5b915098503d90816000823e612f4b82826121ed565b604081838101031261019c5780519067ffffffffffffffff821161019c57828101601f83830101121561019c578181015191612f868361222e565b93612f9460405195866121ed565b838552820160208483850101011161019c57602092612fba9184808701918501016123a3565b01519838612dde565b60848b604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b608490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413236206f76657220766572696669636174696f6e4761734c696d697400006064820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152fd5b600052600060205260406000208054808c11613113578b9003905538612c9c565b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152fd5b9091506020813d6020116131a4575b81613194602093836121ed565b8101031261019c57519038612be3565b3d9150613187565b508060005260006020526040600020548a81116000146131d75750612bd7602060005b915050612b92565b6020612bd7918c036131cf565b833b61345a57604088510151602060405180927f570e1a360000000000000000000000000000000000000000000000000000000082528260048301528160008161323260248201898b612709565b039273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690f1908115610db75760009161343b575b5073ffffffffffffffffffffffffffffffffffffffff811680156133d6578503613371573b1561330c5760141161019c5773ffffffffffffffffffffffffffffffffffffffff9183887fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d604060e0958787602086015195510151168251913560601c82526020820152a391612b6c565b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152fd5b60848e604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313420696e6974436f6465206d7573742072657475726e2073656e6465726064820152fd5b60848f604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601b60448201527f4141313320696e6974436f6465206661696c6564206f72204f4f4700000000006064820152fd5b613454915060203d602011610db057610da181836121ed565b3861327c565b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b5050600060e087015260006080870152600060a0870152612ac9565b9092915a906060810151916040928351967fffffffff00000000000000000000000000000000000000000000000000000000886135d7606084018461284b565b600060038211613b9f575b7f8dd7712f0000000000000000000000000000000000000000000000000000000094168403613a445750505061379d6000926136b292602088015161363a8a5193849360208501528b602485015260648401906128ec565b90604483015203906136727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0928381018352826121ed565b61379189519485927e42dc5300000000000000000000000000000000000000000000000000000000602085015261020060248501526102248401906123c6565b613760604484018b60806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152876123c6565b039081018352826121ed565b6020918183809351910182305af1600051988652156137bf575b505050505050565b909192939495965060003d8214613a3a575b7fdeaddead00000000000000000000000000000000000000000000000000000000810361385b57608487878051917f220266b600000000000000000000000000000000000000000000000000000000835260048301526024820152600f60448201527f41413935206f7574206f662067617300000000000000000000000000000000006064820152fd5b7fdeadaa510000000000000000000000000000000000000000000000000000000091929395949650146000146138c55750506138a961389e6138b8935a90612443565b608085015190612409565b9083015183611d748295613d65565b905b3880808080806137b7565b909261395290828601518651907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f479273ffffffffffffffffffffffffffffffffffffffff9580878551169401516139483d610800808211613a32575b508a519084818301018c5280825260008583013e8a805194859485528401528a8301906123c6565b0390a35a90612443565b916139636080860193845190612409565b926000905a94829488519761397789613ccc565b948260e08b0151168015600014613a1857505050875116955b5a9003019560a06060820151910151019051860390818111613a04575b5050840290850151928184106000146139de57505080611e68575090816139d89293611d7481613d65565b906138ba565b6139ee9082849397950390613c98565b50611e68575090826139ff92613cf6565b6139d8565b6064919003600a02049094019338806139ad565b90919892509751613a2a575b50613990565b955038613a24565b905038613920565b8181803e516137d1565b613b97945082935090613a8c917e42dc53000000000000000000000000000000000000000000000000000000006020613b6b9501526102006024860152610224850191612709565b613b3a604484018860806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152846123c6565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018952886121ed565b60008761379d565b5081356135e2565b73ffffffffffffffffffffffffffffffffffffffff168015613c3a57600080809381935af1613bd4612450565b5015613bdc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff166000526000602052613cc66040600020918254612409565b80915590565b610120610100820151910151808214613cf257480180821015613ced575090565b905090565b5090565b9190917f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f6080602083015192519473ffffffffffffffffffffffffffffffffffffffff946020868851169660e089015116970151916040519283526000602084015260408301526060820152a4565b60208101519051907f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e60208073ffffffffffffffffffffffffffffffffffffffff855116940151604051908152a3565b613dcd604092959493956060835260608301906128ec565b9460208201520152565b8015613e6457600060408051613dec816121d1565b828152826020820152015273ffffffffffffffffffffffffffffffffffffffff811690604065ffffffffffff91828160a01c16908115613e5c575b60d01c92825191613e37836121d1565b8583528460208401521691829101524211908115613e5457509091565b905042109091565b839150613e27565b5060009060009056fea264697066735822122052e85c850273cd303b6d331b8bd89c3fd32d10a4b81cca818b10c82c0d73866264736f6c6343000817003360808060405234610016576101c3908161001c8239f35b600080fdfe6080600436101561000f57600080fd5b6000803560e01c63570e1a361461002557600080fd5b3461018a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018a576004359167ffffffffffffffff9081841161018657366023850112156101865783600401358281116101825736602482870101116101825780601411610182577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec810192808411610155577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81600b8501160116830190838210908211176101555792846024819482600c60209a968b9960405286845289840196603889018837830101525193013560601c5af1908051911561014d575b5073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b90503861012e565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8380fd5b8280fd5b80fdfea264697066735822122000b8a0795c5eae5c1809a029b16dcc5c2cdba4cc2da41140ae204c18e59ca3ea64736f6c63430008170033"; +export const _bytecode = + "0x60a08060405234620000825760016002556101df8181016001600160401b038111838210176200006c57829162003f2b833903906000f080156200006057608052604051613ea39081620000888239608051818181610d22015261324b0152f35b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b600080fdfe60806040526004361015610024575b361561001957600080fd5b61002233612748565b005b60003560e01c806242dc5314611b0057806301ffc9a7146119ae5780630396cb60146116765780630bd28e3b146115fa5780631b2e01b814611566578063205c2878146113d157806322cdde4c1461136b57806335567e1a146112b35780635287ce12146111a557806370a0823114611140578063765e827f14610e82578063850aaf6214610dc35780639b249f6914610c74578063b760faf914610c3a578063bb9fe6bf14610a68578063c23a5cea146107c4578063dbed18e0146101a15763fc7e286d0361000e573461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61013a61229f565b16600052600060205260a0604060002065ffffffffffff6001825492015460405192835260ff8116151560208401526dffffffffffffffffffffffffffff8160081c16604084015263ffffffff8160781c16606084015260981c166080820152f35b600080fd5b3461019c576101af36612317565b906101b86129bd565b60009160005b82811061056f57506101d08493612588565b6000805b8481106102fc5750507fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000809360005b81811061024757610240868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2613ba7565b6001600255005b6102a261025582848a612796565b73ffffffffffffffffffffffffffffffffffffffff6102766020830161282a565b167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a2806127d6565b906000915b8083106102b957505050600101610209565b909194976102f36102ed6001926102e78c8b6102e0826102da8e8b8d61269d565b9261265a565b5191613597565b90612409565b99612416565b950191906102a7565b6020610309828789612796565b61031f61031682806127d6565b9390920161282a565b9160009273ffffffffffffffffffffffffffffffffffffffff8091165b8285106103505750505050506001016101d4565b909192939561037f83610378610366848c61265a565b516103728b898b61269d565b856129f6565b9290613dd7565b9116840361050a576104a5576103958491613dd7565b9116610440576103b5576103aa600191612416565b96019392919061033c565b60a487604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608489604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b61057a818487612796565b9361058585806127d6565b919095602073ffffffffffffffffffffffffffffffffffffffff6105aa82840161282a565b1697600192838a1461076657896105da575b5050505060019293949550906105d191612409565b939291016101be565b8060406105e892019061284b565b918a3b1561019c57929391906040519485937f2dd8113300000000000000000000000000000000000000000000000000000000855288604486016040600488015252606490818601918a60051b8701019680936000915b8c83106106e657505050505050838392610684927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8560009803016024860152612709565b03818a5afa90816106d7575b506106c657602486604051907f86a9f7500000000000000000000000000000000000000000000000000000000082526004820152fd5b93945084936105d1600189806105bc565b6106e0906121bd565b88610690565b91939596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c908a9294969a0301865288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18336030181121561019c57836107538793858394016128ec565b9a0196019301909189979695949261063f565b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b3461019c576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576107fc61229f565b33600052600082526001604060002001908154916dffffffffffffffffffffffffffff8360081c16928315610a0a5765ffffffffffff8160981c1680156109ac57421061094e5760009373ffffffffffffffffffffffffffffffffffffffff859485947fffffffffffffff000000000000000000000000000000000000000000000000ff86951690556040517fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda33391806108da8786836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a2165af16108e8612450565b50156108f057005b606490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b3461019c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c573360005260006020526001604060002001805463ffffffff8160781c16908115610bdc5760ff1615610b7e5765ffffffffffff908142160191818311610b4f5780547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001678ffffffffffff00000000000000000000000000000000000000609885901b161790556040519116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a2005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610022610c6f61229f565b612748565b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043567ffffffffffffffff811161019c576020610cc8610d1b9236906004016122c2565b919073ffffffffffffffffffffffffffffffffffffffff9260405194859283927f570e1a360000000000000000000000000000000000000000000000000000000084528560048501526024840191612709565b03816000857f0000000000000000000000000000000000000000000000000000000000000000165af1908115610db757602492600092610d86575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b610da991925060203d602011610db0575b610da181836121ed565b8101906126dd565b9083610d56565b503d610d97565b6040513d6000823e3d90fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610dfa61229f565b60243567ffffffffffffffff811161019c57600091610e1e839236906004016122c2565b90816040519283928337810184815203915af4610e39612450565b90610e7e6040519283927f99410554000000000000000000000000000000000000000000000000000000008452151560048401526040602484015260448301906123c6565b0390fd5b3461019c57610e9036612317565b610e9b9291926129bd565b610ea483612588565b60005b848110610f1c57506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000915b858310610eec576102408585613ba7565b909193600190610f12610f0087898761269d565b610f0a888661265a565b519088613597565b0194019190610edb565b610f47610f40610f2e8385979561265a565b51610f3a84898761269d565b846129f6565b9190613dd7565b73ffffffffffffffffffffffffffffffffffffffff929183166110db5761107657610f7190613dd7565b911661101157610f8657600101929092610ea7565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608483604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61118c61229f565b1660005260006020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff6111f161229f565b6000608060405161120181612155565b828152826020820152826040820152826060820152015216600052600060205260a06040600020608060405161123681612155565b6001835493848352015490602081019060ff8316151582526dffffffffffffffffffffffffffff60408201818560081c16815263ffffffff936060840193858760781c16855265ffffffffffff978891019660981c1686526040519788525115156020880152511660408601525116606084015251166080820152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760206112ec61229f565b73ffffffffffffffffffffffffffffffffffffffff6113096122f0565b911660005260018252604060002077ffffffffffffffffffffffffffffffffffffffffffffffff821660005282526040600020547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b3461019c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60208136011261019c576004359067ffffffffffffffff821161019c5761012090823603011261019c576113c9602091600401612480565b604051908152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761140861229f565b60243590336000526000602052604060002090815491828411611508576000808573ffffffffffffffffffffffffffffffffffffffff8295839561144c848a612443565b90556040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af16114a2612450565b50156114aa57005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761159d61229f565b73ffffffffffffffffffffffffffffffffffffffff6115ba6122f0565b9116600052600160205277ffffffffffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043577ffffffffffffffffffffffffffffffffffffffffffffffff811680910361019c5733600052600160205260406000209060005260205260406000206116728154612416565b9055005b6020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043563ffffffff9182821680920361019c5733600052600081526040600020928215611950576001840154908160781c1683106118f2576116f86dffffffffffffffffffffffffffff9182349160081c16612409565b93841561189457818511611836579065ffffffffffff61180592546040519061172082612155565b8152848101926001845260408201908816815260608201878152600160808401936000855233600052600089526040600020905181550194511515917fffffffffffffffffffffffffff0000000000000000000000000000000000000060ff72ffffffff0000000000000000000000000000006effffffffffffffffffffffffffff008954945160081b16945160781b1694169116171717835551167fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff78ffffffffffff0000000000000000000000000000000000000083549260981b169116179055565b6040519283528201527fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c0160403392a2005b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361019c57807f60fc6b6e0000000000000000000000000000000000000000000000000000000060209214908115611ad6575b8115611aac575b8115611a82575b8115611a58575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501482611a4d565b7f3e84f0210000000000000000000000000000000000000000000000000000000081149150611a46565b7fcf28ef970000000000000000000000000000000000000000000000000000000081149150611a3f565b7f915074d80000000000000000000000000000000000000000000000000000000081149150611a38565b3461019c576102007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5767ffffffffffffffff60043581811161019c573660238201121561019c57611b62903690602481600401359101612268565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101c0811261019c5761014060405191611b9e83612155565b1261019c5760405192611bb0846121a0565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361019c578452602093604435858201526064356040820152608435606082015260a435608082015260c43560a082015260e43560c08201526101043573ffffffffffffffffffffffffffffffffffffffff8116810361019c5760e08201526101243561010082015261014435610120820152825261016435848301526101843560408301526101a43560608301526101c43560808301526101e43590811161019c57611c7c9036906004016122c2565b905a3033036120f7578351606081015195603f5a0260061c61271060a0840151890101116120ce5760009681519182611ff0575b5050505090611cca915a9003608085015101923691612268565b925a90600094845193611cdc85613ccc565b9173ffffffffffffffffffffffffffffffffffffffff60e0870151168015600014611ea957505073ffffffffffffffffffffffffffffffffffffffff855116935b5a9003019360a06060820151910151016080860151850390818111611e95575b50508302604085015192818410600014611dce5750506003811015611da157600203611d79576113c99293508093611d7481613d65565b613cf6565b5050507fdeadaa51000000000000000000000000000000000000000000000000000000008152fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b81611dde92979396940390613c98565b506003841015611e6857507f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f60808683015192519473ffffffffffffffffffffffffffffffffffffffff865116948873ffffffffffffffffffffffffffffffffffffffff60e0890151169701519160405192835215898301528760408301526060820152a46113c9565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b6064919003600a0204909301928780611d3d565b8095918051611eba575b5050611d1d565b6003861015611fc1576002860315611eb35760a088015190823b1561019c57600091611f2491836040519586809581947f7c627b210000000000000000000000000000000000000000000000000000000083528d60048401526080602484015260848301906123c6565b8b8b0260448301528b60648301520393f19081611fad575b50611fa65787893d610800808211611f9e575b506040519282828501016040528184528284013e610e7e6040519283927fad7954bc000000000000000000000000000000000000000000000000000000008452600484015260248301906123c6565b905083611f4f565b8980611eb3565b611fb89199506121bd565b6000978a611f3c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91600092918380938c73ffffffffffffffffffffffffffffffffffffffff885116910192f115612023575b808080611cb0565b611cca929195503d6108008082116120c6575b5060405190888183010160405280825260008983013e805161205f575b5050600194909161201b565b7f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a20188870151918973ffffffffffffffffffffffffffffffffffffffff8551169401516120bc604051928392835260408d84015260408301906123c6565b0390a38680612053565b905088612036565b877fdeaddead000000000000000000000000000000000000000000000000000000006000526000fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b60a0810190811067ffffffffffffffff82111761217157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610140810190811067ffffffffffffffff82111761217157604052565b67ffffffffffffffff811161217157604052565b6060810190811067ffffffffffffffff82111761217157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761217157604052565b67ffffffffffffffff811161217157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926122748261222e565b9161228260405193846121ed565b82948184528183011161019c578281602093846000960137010152565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9181601f8401121561019c5782359167ffffffffffffffff831161019c576020838186019501011161019c57565b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261019c5760043567ffffffffffffffff9283821161019c578060238301121561019c57816004013593841161019c5760248460051b8301011161019c57602401919060243573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b60005b8381106123b65750506000910152565b81810151838201526020016123a6565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612402815180928187528780880191016123a3565b0116010190565b91908201809211610b4f57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b4f5760010190565b91908203918211610b4f57565b3d1561247b573d906124618261222e565b9161246f60405193846121ed565b82523d6000602084013e565b606090565b604061248e8183018361284b565b90818351918237206124a3606084018461284b565b90818451918237209260c06124bb60e083018361284b565b908186519182372091845195602087019473ffffffffffffffffffffffffffffffffffffffff833516865260208301358789015260608801526080870152608081013560a087015260a081013582870152013560e08501526101009081850152835261012083019167ffffffffffffffff918484108385111761217157838252845190206101408501908152306101608601524661018086015260608452936101a00191821183831017612171575251902090565b67ffffffffffffffff81116121715760051b60200190565b9061259282612570565b6040906125a260405191826121ed565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06125d08295612570565b019160005b8381106125e25750505050565b60209082516125f081612155565b83516125fb816121a0565b600081526000849181838201528187820152816060818184015260809282848201528260a08201528260c08201528260e082015282610100820152826101208201528652818587015281898701528501528301528286010152016125d5565b805182101561266e5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919081101561266e5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18136030182121561019c570190565b9081602091031261019c575173ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b7f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4602073ffffffffffffffffffffffffffffffffffffffff61278a3485613c98565b936040519485521692a2565b919081101561266e5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18136030182121561019c570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c57602001918160051b3603831361019c57565b3573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c5760200191813603831361019c57565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561019c57016020813591019167ffffffffffffffff821161019c57813603831361019c57565b61012091813573ffffffffffffffffffffffffffffffffffffffff811680910361019c576129626129476129ba9561299b93855260208601356020860152612937604087018761289c565b9091806040880152860191612709565b612954606086018661289c565b908583036060870152612709565b6080840135608084015260a084013560a084015260c084013560c084015261298d60e085018561289c565b9084830360e0860152612709565b916129ac610100918281019061289c565b929091818503910152612709565b90565b60028054146129cc5760028055565b60046040517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b926000905a93805194843573ffffffffffffffffffffffffffffffffffffffff811680910361019c5786526020850135602087015260808501356fffffffffffffffffffffffffffffffff90818116606089015260801c604088015260a086013560c088015260c086013590811661010088015260801c610120870152612a8060e086018661284b565b801561357b576034811061351d578060141161019c578060241161019c5760341161019c57602481013560801c60a0880152601481013560801c60808801523560601c60e08701525b612ad285612480565b60208301526040860151946effffffffffffffffffffffffffffff8660c08901511760608901511760808901511760a0890151176101008901511761012089015117116134bf57604087015160608801510160808801510160a08801510160c0880151016101008801510296835173ffffffffffffffffffffffffffffffffffffffff81511690612b66604085018561284b565b806131e4575b505060e0015173ffffffffffffffffffffffffffffffffffffffff1690600082156131ac575b6020612bd7918b828a01516000868a604051978896879586937f19822f7c00000000000000000000000000000000000000000000000000000000855260048501613db5565b0393f160009181613178575b50612c8b573d8c610800808311612c83575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141323320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123c6565b915082612bf5565b9a92939495969798999a91156130f2575b509773ffffffffffffffffffffffffffffffffffffffff835116602084015190600052600160205260406000208160401c60005260205267ffffffffffffffff604060002091825492612cee84612416565b9055160361308d575a8503116130285773ffffffffffffffffffffffffffffffffffffffff60e0606093015116612d42575b509060a09184959697986040608096015260608601520135905a900301910152565b969550505a9683519773ffffffffffffffffffffffffffffffffffffffff60e08a01511680600052600060205260406000208054848110612fc3576080612dcd9a9b9c600093878094039055015192602089015183604051809d819582947f52b7512c0000000000000000000000000000000000000000000000000000000084528c60048501613db5565b039286f1978860009160009a612f36575b50612e86573d8b610800808311612e7e575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141333320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123c6565b915082612df0565b9991929394959697989998925a900311612eab57509096959094939291906080612d20565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602760448201527f41413336206f766572207061796d6173746572566572696669636174696f6e4760648201527f61734c696d6974000000000000000000000000000000000000000000000000006084820152fd5b915098503d90816000823e612f4b82826121ed565b604081838101031261019c5780519067ffffffffffffffff821161019c57828101601f83830101121561019c578181015191612f868361222e565b93612f9460405195866121ed565b838552820160208483850101011161019c57602092612fba9184808701918501016123a3565b01519838612dde565b60848b604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b608490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413236206f76657220766572696669636174696f6e4761734c696d697400006064820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152fd5b600052600060205260406000208054808c11613113578b9003905538612c9c565b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152fd5b9091506020813d6020116131a4575b81613194602093836121ed565b8101031261019c57519038612be3565b3d9150613187565b508060005260006020526040600020548a81116000146131d75750612bd7602060005b915050612b92565b6020612bd7918c036131cf565b833b61345a57604088510151602060405180927f570e1a360000000000000000000000000000000000000000000000000000000082528260048301528160008161323260248201898b612709565b039273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690f1908115610db75760009161343b575b5073ffffffffffffffffffffffffffffffffffffffff811680156133d6578503613371573b1561330c5760141161019c5773ffffffffffffffffffffffffffffffffffffffff9183887fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d604060e0958787602086015195510151168251913560601c82526020820152a391612b6c565b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152fd5b60848e604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313420696e6974436f6465206d7573742072657475726e2073656e6465726064820152fd5b60848f604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601b60448201527f4141313320696e6974436f6465206661696c6564206f72204f4f4700000000006064820152fd5b613454915060203d602011610db057610da181836121ed565b3861327c565b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b5050600060e087015260006080870152600060a0870152612ac9565b9092915a906060810151916040928351967fffffffff00000000000000000000000000000000000000000000000000000000886135d7606084018461284b565b600060038211613b9f575b7f8dd7712f0000000000000000000000000000000000000000000000000000000094168403613a445750505061379d6000926136b292602088015161363a8a5193849360208501528b602485015260648401906128ec565b90604483015203906136727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0928381018352826121ed565b61379189519485927e42dc5300000000000000000000000000000000000000000000000000000000602085015261020060248501526102248401906123c6565b613760604484018b60806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152876123c6565b039081018352826121ed565b6020918183809351910182305af1600051988652156137bf575b505050505050565b909192939495965060003d8214613a3a575b7fdeaddead00000000000000000000000000000000000000000000000000000000810361385b57608487878051917f220266b600000000000000000000000000000000000000000000000000000000835260048301526024820152600f60448201527f41413935206f7574206f662067617300000000000000000000000000000000006064820152fd5b7fdeadaa510000000000000000000000000000000000000000000000000000000091929395949650146000146138c55750506138a961389e6138b8935a90612443565b608085015190612409565b9083015183611d748295613d65565b905b3880808080806137b7565b909261395290828601518651907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f479273ffffffffffffffffffffffffffffffffffffffff9580878551169401516139483d610800808211613a32575b508a519084818301018c5280825260008583013e8a805194859485528401528a8301906123c6565b0390a35a90612443565b916139636080860193845190612409565b926000905a94829488519761397789613ccc565b948260e08b0151168015600014613a1857505050875116955b5a9003019560a06060820151910151019051860390818111613a04575b5050840290850151928184106000146139de57505080611e68575090816139d89293611d7481613d65565b906138ba565b6139ee9082849397950390613c98565b50611e68575090826139ff92613cf6565b6139d8565b6064919003600a02049094019338806139ad565b90919892509751613a2a575b50613990565b955038613a24565b905038613920565b8181803e516137d1565b613b97945082935090613a8c917e42dc53000000000000000000000000000000000000000000000000000000006020613b6b9501526102006024860152610224850191612709565b613b3a604484018860806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152846123c6565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018952886121ed565b60008761379d565b5081356135e2565b73ffffffffffffffffffffffffffffffffffffffff168015613c3a57600080809381935af1613bd4612450565b5015613bdc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff166000526000602052613cc66040600020918254612409565b80915590565b610120610100820151910151808214613cf257480180821015613ced575090565b905090565b5090565b9190917f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f6080602083015192519473ffffffffffffffffffffffffffffffffffffffff946020868851169660e089015116970151916040519283526000602084015260408301526060820152a4565b60208101519051907f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e60208073ffffffffffffffffffffffffffffffffffffffff855116940151604051908152a3565b613dcd604092959493956060835260608301906128ec565b9460208201520152565b8015613e6457600060408051613dec816121d1565b828152826020820152015273ffffffffffffffffffffffffffffffffffffffff811690604065ffffffffffff91828160a01c16908115613e5c575b60d01c92825191613e37836121d1565b8583528460208401521691829101524211908115613e5457509091565b905042109091565b839150613e27565b5060009060009056fea2646970667358221220b094fd69f04977ae9458e5ba422d01cd2d20dbcfca0992ff37f19aa07deec25464736f6c6343000817003360808060405234610016576101c3908161001c8239f35b600080fdfe6080600436101561000f57600080fd5b6000803560e01c63570e1a361461002557600080fd5b3461018a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018a576004359167ffffffffffffffff9081841161018657366023850112156101865783600401358281116101825736602482870101116101825780601411610182577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec810192808411610155577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81600b8501160116830190838210908211176101555792846024819482600c60209a968b9960405286845289840196603889018837830101525193013560601c5af1908051911561014d575b5073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b90503861012e565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8380fd5b8280fd5b80fdfea26469706673582212207adef8895ad3393b02fab10a111d85ea80ff35366aa43995f4ea20e67f29200664736f6c63430008170033"; type EntryPointConstructorParams = | [signer?: Signer] diff --git a/packages/types/src/contracts/EPv7/factories/samples/SimpleAccountFactory__factory.ts b/packages/types/src/contracts/EPv7/factories/samples/SimpleAccountFactory__factory.ts index 95801e1b..5d3a5ee5 100644 --- a/packages/types/src/contracts/EPv7/factories/samples/SimpleAccountFactory__factory.ts +++ b/packages/types/src/contracts/EPv7/factories/samples/SimpleAccountFactory__factory.ts @@ -85,7 +85,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405234801561001057600080fd5b506040516129e13803806129e183398101604081905261002f91610088565b8060405161003c9061007b565b6001600160a01b039091168152602001604051809103906000f080158015610068573d6000803e3d6000fd5b506001600160a01b0316608052506100b8565b612011806109d083390190565b60006020828403121561009a57600080fd5b81516001600160a01b03811681146100b157600080fd5b9392505050565b6080516108f06100e060003960008181604b01528181610114015261025801526108f06000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806311464fbe146100465780635fbfb9cf146100965780638cb84e18146100a9575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61006d6100a436600461039d565b6100bc565b61006d6100b736600461039d565b6101ee565b6000806100c984846101ee565b905073ffffffffffffffffffffffffffffffffffffffff81163b80156100f1575090506101e8565b60405173ffffffffffffffffffffffffffffffffffffffff8616602482015284907f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052516101b790610390565b6101c2929190610406565b8190604051809103906000f59050801580156101e2573d6000803e3d6000fd5b50925050505b92915050565b60006103578260001b6040518060200161020790610390565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905273ffffffffffffffffffffffffffffffffffffffff871660248201527f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052905161030093929101610406565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261033c9291602001610474565b6040516020818303038152906040528051906020012061035e565b9392505050565b60006103578383306000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b610417806104a483390190565b600080604083850312156103b057600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146103d457600080fd5b946020939093013593505050565b60005b838110156103fd5781810151838201526020016103e5565b50506000910152565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600082518060408401526104418160608501602087016103e2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b600083516104868184602088016103e2565b83519083019061049a8183602088016103e2565b0194935050505056fe608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220d7f23a80daebb5531c9e4a18d87e812fca112e5df7e56433218edcc12bbe415d64736f6c63430008170033a26469706673582212200f09449c3a9b4369df8dd51570502df18543778fc5ffb2dae690fe468f31e42164736f6c6343000817003360c0604052306080523480156200001557600080fd5b50604051620020113803806200201183398101604081905262000038916200010a565b6001600160a01b03811660a0526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051611e70620001a160003960008181610320015281816106f00152818161079e0152818161092601528181610b6301528181610baa01528181610d6a015261121e015260008181610f3301528181610f5c015261117d0152611e706000f3fe6080604052600436106101125760003560e01c80638da5cb5b116100a5578063bc197c8111610074578063c4d66de811610059578063c4d66de8146103c1578063d087d288146103e1578063f23a6e61146103f657600080fd5b8063bc197c8114610364578063c399ec88146103ac57600080fd5b80638da5cb5b14610269578063ad3cb1cc146102bb578063b0d691fe14610311578063b61d27f61461034457600080fd5b80634a58db19116100e15780634a58db19146102195780634d44560d146102215780634f1ef2861461024157806352d1902d1461025457600080fd5b806301ffc9a71461011e578063150b7a021461015357806319822f7c146101c957806347e1da2a146101f757600080fd5b3661011957005b600080fd5b34801561012a57600080fd5b5061013e61013936600461179b565b61043c565b60405190151581526020015b60405180910390f35b34801561015f57600080fd5b5061019861016e366004611848565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161014a565b3480156101d557600080fd5b506101e96101e43660046118bb565b610521565b60405190815260200161014a565b34801561020357600080fd5b50610217610212366004611954565b610547565b005b6102176106ee565b34801561022d57600080fd5b5061021761023c3660046119ee565b610794565b61021761024f366004611a49565b610843565b34801561026057600080fd5b506101e9610862565b34801561027557600080fd5b506000546102969073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014a565b3480156102c757600080fd5b506103046040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161014a9190611b4f565b34801561031d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610296565b34801561035057600080fd5b5061021761035f366004611ba0565b610891565b34801561037057600080fd5b5061019861037f366004611bfc565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103b857600080fd5b506101e96108e0565b3480156103cd57600080fd5b506102176103dc366004611cbb565b610997565b3480156103ed57600080fd5b506101e9610b16565b34801561040257600080fd5b50610198610411366004611cd8565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a020000000000000000000000000000000000000000000000000000000014806104cf57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061051b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061052b610b92565b6105358484610c33565b905061054082610ce7565b9392505050565b61054f610d52565b8481148015610565575082158061056557508281145b6105d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206172726179206c656e677468730000000000000000000000000060448201526064015b60405180910390fd5b600083900361067c5760005b858110156106765761066e8787838181106105f9576105f9611d42565b905060200201602081019061060e9190611cbb565b600085858581811061062257610622611d42565b90506020028101906106349190611d71565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e1392505050565b6001016105dc565b506106e6565b60005b858110156106e4576106dc87878381811061069c5761069c611d42565b90506020020160208101906106b19190611cbb565b8686848181106106c3576106c3611d42565b9050602002013585858581811061062257610622611d42565b60010161067f565b505b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024016000604051808303818588803b15801561077957600080fd5b505af115801561078d573d6000803e3d6000fd5b5050505050565b61079c610e90565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c287890604401600060405180830381600087803b15801561082f57600080fd5b505af11580156106e6573d6000803e3d6000fd5b61084b610f1b565b6108548261101f565b61085e8282611027565b5050565b600061086c611165565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610899610d52565b6108da848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e1392505050565b50505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561096e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109929190611dd6565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e25750825b905060008267ffffffffffffffff1660011480156109ff5750303b155b905081158015610a0d575080155b15610a44576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aa55784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610aae866111d4565b83156106e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610951565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016105c7565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120610cae81610c74610100870187611d71565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061126892505050565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614610cda57600191505061051b565b5060009392505050565b50565b8015610ce45760405160009033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d806000811461078d576040519150601f19603f3d011682016040523d82523d6000602084013e61078d565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610dad575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e7460448201526064016105c7565b6000808473ffffffffffffffffffffffffffffffffffffffff168484604051610e3c9190611def565b60006040518083038185875af1925050503d8060008114610e79576040519150601f19603f3d011682016040523d82523d6000602084013e610e7e565b606091505b50915091508161078d57805160208201fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331480610eb557503330145b610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e65720000000000000000000000000000000000000000000060448201526064016105c7565b3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610fe857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610fcf7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610c31576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ce4610e90565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156110ac575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526110a991810190611dd6565b60015b6110fa576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016105c7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611156576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016105c7565b6111608383611292565b505050565b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c31576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217835560405191927f0000000000000000000000000000000000000000000000000000000000000000909116917f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de9190a350565b60008060008061127886866112f5565b9250925092506112888282611342565b5090949350505050565b61129b82611446565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156112ed576111608282611515565b61085e611598565b6000806000835160410361132f5760208401516040850151606086015160001a611321888285856115d0565b95509550955050505061133b565b50508151600091506002905b9250925092565b600082600381111561135657611356611e0b565b0361135f575050565b600182600381111561137357611373611e0b565b036113aa576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156113be576113be611e0b565b036113f8576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016105c7565b600382600381111561140c5761140c611e0b565b0361085e576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016105c7565b8073ffffffffffffffffffffffffffffffffffffffff163b6000036114af576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016105c7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161153f9190611def565b600060405180830381855af49150503d806000811461157a576040519150601f19603f3d011682016040523d82523d6000602084013e61157f565b606091505b509150915061158f8583836116ca565b95945050505050565b3415610c31576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561160b57506000915060039050826116c0565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561165f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166116b6575060009250600191508290506116c0565b9250600091508190505b9450945094915050565b6060826116df576116da82611759565b610540565b8151158015611703575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611752576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016105c7565b5080610540565b8051156117695780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156117ad57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054057600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610ce457600080fd5b60008083601f84011261181157600080fd5b50813567ffffffffffffffff81111561182957600080fd5b60208301915083602082850101111561184157600080fd5b9250929050565b60008060008060006080868803121561186057600080fd5b853561186b816117dd565b9450602086013561187b816117dd565b935060408601359250606086013567ffffffffffffffff81111561189e57600080fd5b6118aa888289016117ff565b969995985093965092949392505050565b6000806000606084860312156118d057600080fd5b833567ffffffffffffffff8111156118e757600080fd5b840161012081870312156118fa57600080fd5b95602085013595506040909401359392505050565b60008083601f84011261192157600080fd5b50813567ffffffffffffffff81111561193957600080fd5b6020830191508360208260051b850101111561184157600080fd5b6000806000806000806060878903121561196d57600080fd5b863567ffffffffffffffff8082111561198557600080fd5b6119918a838b0161190f565b909850965060208901359150808211156119aa57600080fd5b6119b68a838b0161190f565b909650945060408901359150808211156119cf57600080fd5b506119dc89828a0161190f565b979a9699509497509295939492505050565b60008060408385031215611a0157600080fd5b8235611a0c816117dd565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611a5c57600080fd5b8235611a67816117dd565b9150602083013567ffffffffffffffff80821115611a8457600080fd5b818501915085601f830112611a9857600080fd5b813581811115611aaa57611aaa611a1a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611af057611af0611a1a565b81604052828152886020848701011115611b0957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015611b46578181015183820152602001611b2e565b50506000910152565b6020815260008251806020840152611b6e816040850160208701611b2b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060008060608587031215611bb657600080fd5b8435611bc1816117dd565b935060208501359250604085013567ffffffffffffffff811115611be457600080fd5b611bf0878288016117ff565b95989497509550505050565b60008060008060008060008060a0898b031215611c1857600080fd5b8835611c23816117dd565b97506020890135611c33816117dd565b9650604089013567ffffffffffffffff80821115611c5057600080fd5b611c5c8c838d0161190f565b909850965060608b0135915080821115611c7557600080fd5b611c818c838d0161190f565b909650945060808b0135915080821115611c9a57600080fd5b50611ca78b828c016117ff565b999c989b5096995094979396929594505050565b600060208284031215611ccd57600080fd5b8135610540816117dd565b60008060008060008060a08789031215611cf157600080fd5b8635611cfc816117dd565b95506020870135611d0c816117dd565b94506040870135935060608701359250608087013567ffffffffffffffff811115611d3657600080fd5b6119dc89828a016117ff565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611da657600080fd5b83018035915067ffffffffffffffff821115611dc157600080fd5b60200191503681900382131561184157600080fd5b600060208284031215611de857600080fd5b5051919050565b60008251611e01818460208701611b2b565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212208e00b008820ddab58bc26e8c549037ddb1856c813b28e958454043f722621b9d64736f6c63430008170033"; + "0x60a060405234801561001057600080fd5b506040516129e13803806129e183398101604081905261002f91610088565b8060405161003c9061007b565b6001600160a01b039091168152602001604051809103906000f080158015610068573d6000803e3d6000fd5b506001600160a01b0316608052506100b8565b612011806109d083390190565b60006020828403121561009a57600080fd5b81516001600160a01b03811681146100b157600080fd5b9392505050565b6080516108f06100e060003960008181604b01528181610114015261025801526108f06000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806311464fbe146100465780635fbfb9cf146100965780638cb84e18146100a9575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61006d6100a436600461039d565b6100bc565b61006d6100b736600461039d565b6101ee565b6000806100c984846101ee565b905073ffffffffffffffffffffffffffffffffffffffff81163b80156100f1575090506101e8565b60405173ffffffffffffffffffffffffffffffffffffffff8616602482015284907f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052516101b790610390565b6101c2929190610406565b8190604051809103906000f59050801580156101e2573d6000803e3d6000fd5b50925050505b92915050565b60006103578260001b6040518060200161020790610390565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905273ffffffffffffffffffffffffffffffffffffffff871660248201527f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052905161030093929101610406565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261033c9291602001610474565b6040516020818303038152906040528051906020012061035e565b9392505050565b60006103578383306000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b610417806104a483390190565b600080604083850312156103b057600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146103d457600080fd5b946020939093013593505050565b60005b838110156103fd5781810151838201526020016103e5565b50506000910152565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600082518060408401526104418160608501602087016103e2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b600083516104868184602088016103e2565b83519083019061049a8183602088016103e2565b0194935050505056fe608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220d7f23a80daebb5531c9e4a18d87e812fca112e5df7e56433218edcc12bbe415d64736f6c63430008170033a2646970667358221220f5be4d2659f1a124e46d76b875ad5264a1c62d421946ca067d6132fa6cc4309964736f6c6343000817003360c0604052306080523480156200001557600080fd5b50604051620020113803806200201183398101604081905262000038916200010a565b6001600160a01b03811660a0526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051611e70620001a160003960008181610320015281816106f00152818161079e0152818161092601528181610b6301528181610baa01528181610d6a015261121e015260008181610f3301528181610f5c015261117d0152611e706000f3fe6080604052600436106101125760003560e01c80638da5cb5b116100a5578063bc197c8111610074578063c4d66de811610059578063c4d66de8146103c1578063d087d288146103e1578063f23a6e61146103f657600080fd5b8063bc197c8114610364578063c399ec88146103ac57600080fd5b80638da5cb5b14610269578063ad3cb1cc146102bb578063b0d691fe14610311578063b61d27f61461034457600080fd5b80634a58db19116100e15780634a58db19146102195780634d44560d146102215780634f1ef2861461024157806352d1902d1461025457600080fd5b806301ffc9a71461011e578063150b7a021461015357806319822f7c146101c957806347e1da2a146101f757600080fd5b3661011957005b600080fd5b34801561012a57600080fd5b5061013e61013936600461179b565b61043c565b60405190151581526020015b60405180910390f35b34801561015f57600080fd5b5061019861016e366004611848565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161014a565b3480156101d557600080fd5b506101e96101e43660046118bb565b610521565b60405190815260200161014a565b34801561020357600080fd5b50610217610212366004611954565b610547565b005b6102176106ee565b34801561022d57600080fd5b5061021761023c3660046119ee565b610794565b61021761024f366004611a49565b610843565b34801561026057600080fd5b506101e9610862565b34801561027557600080fd5b506000546102969073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014a565b3480156102c757600080fd5b506103046040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161014a9190611b4f565b34801561031d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610296565b34801561035057600080fd5b5061021761035f366004611ba0565b610891565b34801561037057600080fd5b5061019861037f366004611bfc565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103b857600080fd5b506101e96108e0565b3480156103cd57600080fd5b506102176103dc366004611cbb565b610997565b3480156103ed57600080fd5b506101e9610b16565b34801561040257600080fd5b50610198610411366004611cd8565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a020000000000000000000000000000000000000000000000000000000014806104cf57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061051b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061052b610b92565b6105358484610c33565b905061054082610ce7565b9392505050565b61054f610d52565b8481148015610565575082158061056557508281145b6105d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206172726179206c656e677468730000000000000000000000000060448201526064015b60405180910390fd5b600083900361067c5760005b858110156106765761066e8787838181106105f9576105f9611d42565b905060200201602081019061060e9190611cbb565b600085858581811061062257610622611d42565b90506020028101906106349190611d71565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e1392505050565b6001016105dc565b506106e6565b60005b858110156106e4576106dc87878381811061069c5761069c611d42565b90506020020160208101906106b19190611cbb565b8686848181106106c3576106c3611d42565b9050602002013585858581811061062257610622611d42565b60010161067f565b505b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024016000604051808303818588803b15801561077957600080fd5b505af115801561078d573d6000803e3d6000fd5b5050505050565b61079c610e90565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c287890604401600060405180830381600087803b15801561082f57600080fd5b505af11580156106e6573d6000803e3d6000fd5b61084b610f1b565b6108548261101f565b61085e8282611027565b5050565b600061086c611165565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610899610d52565b6108da848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e1392505050565b50505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561096e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109929190611dd6565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e25750825b905060008267ffffffffffffffff1660011480156109ff5750303b155b905081158015610a0d575080155b15610a44576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aa55784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610aae866111d4565b83156106e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610951565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016105c7565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120610cae81610c74610100870187611d71565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061126892505050565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614610cda57600191505061051b565b5060009392505050565b50565b8015610ce45760405160009033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d806000811461078d576040519150601f19603f3d011682016040523d82523d6000602084013e61078d565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610dad575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e7460448201526064016105c7565b6000808473ffffffffffffffffffffffffffffffffffffffff168484604051610e3c9190611def565b60006040518083038185875af1925050503d8060008114610e79576040519150601f19603f3d011682016040523d82523d6000602084013e610e7e565b606091505b50915091508161078d57805160208201fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331480610eb557503330145b610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e65720000000000000000000000000000000000000000000060448201526064016105c7565b3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610fe857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610fcf7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610c31576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ce4610e90565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156110ac575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526110a991810190611dd6565b60015b6110fa576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016105c7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611156576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016105c7565b6111608383611292565b505050565b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c31576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217835560405191927f0000000000000000000000000000000000000000000000000000000000000000909116917f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de9190a350565b60008060008061127886866112f5565b9250925092506112888282611342565b5090949350505050565b61129b82611446565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156112ed576111608282611515565b61085e611598565b6000806000835160410361132f5760208401516040850151606086015160001a611321888285856115d0565b95509550955050505061133b565b50508151600091506002905b9250925092565b600082600381111561135657611356611e0b565b0361135f575050565b600182600381111561137357611373611e0b565b036113aa576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156113be576113be611e0b565b036113f8576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016105c7565b600382600381111561140c5761140c611e0b565b0361085e576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016105c7565b8073ffffffffffffffffffffffffffffffffffffffff163b6000036114af576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016105c7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161153f9190611def565b600060405180830381855af49150503d806000811461157a576040519150601f19603f3d011682016040523d82523d6000602084013e61157f565b606091505b509150915061158f8583836116ca565b95945050505050565b3415610c31576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561160b57506000915060039050826116c0565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561165f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166116b6575060009250600191508290506116c0565b9250600091508190505b9450945094915050565b6060826116df576116da82611759565b610540565b8151158015611703575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611752576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016105c7565b5080610540565b8051156117695780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156117ad57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054057600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610ce457600080fd5b60008083601f84011261181157600080fd5b50813567ffffffffffffffff81111561182957600080fd5b60208301915083602082850101111561184157600080fd5b9250929050565b60008060008060006080868803121561186057600080fd5b853561186b816117dd565b9450602086013561187b816117dd565b935060408601359250606086013567ffffffffffffffff81111561189e57600080fd5b6118aa888289016117ff565b969995985093965092949392505050565b6000806000606084860312156118d057600080fd5b833567ffffffffffffffff8111156118e757600080fd5b840161012081870312156118fa57600080fd5b95602085013595506040909401359392505050565b60008083601f84011261192157600080fd5b50813567ffffffffffffffff81111561193957600080fd5b6020830191508360208260051b850101111561184157600080fd5b6000806000806000806060878903121561196d57600080fd5b863567ffffffffffffffff8082111561198557600080fd5b6119918a838b0161190f565b909850965060208901359150808211156119aa57600080fd5b6119b68a838b0161190f565b909650945060408901359150808211156119cf57600080fd5b506119dc89828a0161190f565b979a9699509497509295939492505050565b60008060408385031215611a0157600080fd5b8235611a0c816117dd565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611a5c57600080fd5b8235611a67816117dd565b9150602083013567ffffffffffffffff80821115611a8457600080fd5b818501915085601f830112611a9857600080fd5b813581811115611aaa57611aaa611a1a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611af057611af0611a1a565b81604052828152886020848701011115611b0957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015611b46578181015183820152602001611b2e565b50506000910152565b6020815260008251806020840152611b6e816040850160208701611b2b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060008060608587031215611bb657600080fd5b8435611bc1816117dd565b935060208501359250604085013567ffffffffffffffff811115611be457600080fd5b611bf0878288016117ff565b95989497509550505050565b60008060008060008060008060a0898b031215611c1857600080fd5b8835611c23816117dd565b97506020890135611c33816117dd565b9650604089013567ffffffffffffffff80821115611c5057600080fd5b611c5c8c838d0161190f565b909850965060608b0135915080821115611c7557600080fd5b611c818c838d0161190f565b909650945060808b0135915080821115611c9a57600080fd5b50611ca78b828c016117ff565b999c989b5096995094979396929594505050565b600060208284031215611ccd57600080fd5b8135610540816117dd565b60008060008060008060a08789031215611cf157600080fd5b8635611cfc816117dd565b95506020870135611d0c816117dd565b94506040870135935060608701359250608087013567ffffffffffffffff811115611d3657600080fd5b6119dc89828a016117ff565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611da657600080fd5b83018035915067ffffffffffffffff821115611dc157600080fd5b60200191503681900382131561184157600080fd5b600060208284031215611de857600080fd5b5051919050565b60008251611e01818460208701611b2b565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220646ccd794d1cd309da39b56bcfe1238dae05a9d8106dddf47fe099a78d7801e864736f6c63430008170033"; type SimpleAccountFactoryConstructorParams = | [signer?: Signer] From c518ed7bec3fde2d095d9a0758d74bedb9b1a5d7 Mon Sep 17 00:00:00 2001 From: marie-fourier Date: Wed, 28 Feb 2024 14:44:33 +0500 Subject: [PATCH 10/12] delete epv6 fields from mempool entry --- packages/executor/src/entities/interfaces.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/executor/src/entities/interfaces.ts b/packages/executor/src/entities/interfaces.ts index 449ee746..809d18ec 100644 --- a/packages/executor/src/entities/interfaces.ts +++ b/packages/executor/src/entities/interfaces.ts @@ -23,14 +23,12 @@ 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; From 0dfcc6b750bab5c603ac06744bd502de51dc21ca Mon Sep 17 00:00:00 2001 From: marie-fourier Date: Wed, 28 Feb 2024 15:13:02 +0500 Subject: [PATCH 11/12] disable p2p mode & update readme --- README.md | 3 +++ packages/cli/src/cmds/node/handler.ts | 12 +++++++----- packages/executor/src/modules/eth.ts | 17 +++++++++-------- 3 files changed, 19 insertions(+), 13 deletions(-) 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/cli/src/cmds/node/handler.ts b/packages/cli/src/cmds/node/handler.ts index 56475ba9..eacf6b02 100644 --- a/packages/cli/src/cmds/node/handler.ts +++ b/packages/cli/src/cmds/node/handler.ts @@ -12,15 +12,17 @@ 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; + + const params = await getNodeConfigFromArgs(args); + + //create the necessary directories + mkdir(params.dataDir); logger.info(`Using the configFile from ${params.configFile}`); logger.info(`Initialised the dataDir at ${params.dataDir}`); diff --git a/packages/executor/src/modules/eth.ts b/packages/executor/src/modules/eth.ts index 3bd22adb..69d74e8c 100644 --- a/packages/executor/src/modules/eth.ts +++ b/packages/executor/src/modules/eth.ts @@ -13,7 +13,7 @@ import { ECDSA_DUMMY_SIGNATURE, estimateMantlePVG, AddressZero, - getCanonicalMempool, + serializeMempoolId, } from "params/lib"; import { Logger } from "types/lib"; import { PerChainMetrics } from "monitoring/lib"; @@ -111,17 +111,14 @@ export class Eth { ) { const nodeApi = this.getNodeAPI(); if (nodeApi) { - const { mempoolId } = getCanonicalMempool(this.chainId, { - entryPoint: this.config.canonicalEntryPoint, - mempoolId: this.config.canonicalMempoolId, - }); - if (mempoolId.length > 0) { + 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(), - mempoolId + serializeMempoolId(canonicalMempoolId) ); this.metrics?.useropsSent?.inc(); } @@ -283,9 +280,11 @@ 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.entryPointService.calcPreverificationGas( entryPoint, @@ -296,6 +295,8 @@ export class Eth { validAfter: BigNumber.from(validAfter), validUntil: BigNumber.from(validUntil), callGasLimit, + maxFeePerGas: gasFee.maxFeePerGas, + maxPriorityFeePerGas: gasFee.maxPriorityFeePerGas }; } From 8d5bab76fb9ea53bc8fe488dcc783c468110b707 Mon Sep 17 00:00:00 2001 From: marie-fourier Date: Wed, 28 Feb 2024 15:16:34 +0500 Subject: [PATCH 12/12] fix: disable p2p mode --- packages/cli/src/cmds/node/handler.ts | 114 +++++++++++++------------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/packages/cli/src/cmds/node/handler.ts b/packages/cli/src/cmds/node/handler.ts index eacf6b02..87f3bbbb 100644 --- a/packages/cli/src/cmds/node/handler.ts +++ b/packages/cli/src/cmds/node/handler.ts @@ -19,71 +19,71 @@ export async function nodeHandler(args: IGlobalArgs): Promise { logger.info("P2P is not yet available for EntryPoint v7. Stay tuned"); return; - const params = await getNodeConfigFromArgs(args); + // const params = await getNodeConfigFromArgs(args); - //create the necessary directories - mkdir(params.dataDir); + // //create the necessary directories + // mkdir(params.dataDir); - logger.info(`Using the configFile from ${params.configFile}`); - logger.info(`Initialised the dataDir at ${params.dataDir}`); - logger.info("Boot ENR: " + params.p2p["bootEnrs"].length); + // logger.info(`Using the configFile from ${params.configFile}`); + // logger.info(`Initialised the dataDir at ${params.dataDir}`); + // logger.info("Boot ENR: " + params.p2p["bootEnrs"].length); - 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, - }); - } + // 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 db = new RocksDbController( - params.dataDir, - getNamespaceByValue(Namespace.userOps) - ); - await db.start(); + // const db = new RocksDbController( + // params.dataDir, + // getNamespaceByValue(Namespace.userOps) + // ); + // await db.start(); - const { enr, peerId } = await initPeerIdAndEnr(args, logger); + // 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 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<{