From 319c7a5bcb10c74e204b9747b1f5fbf1cca41a8a Mon Sep 17 00:00:00 2001 From: Adam Hodges Date: Sat, 19 Aug 2023 00:55:37 -0400 Subject: [PATCH] Kernel v2.1 --- abi/ECDSAKernelFactory.json | 112 ---- abi/Kernel.json | 91 ++- abi/KernelFactory.json | 289 ++++++++- src/constants/kernel.ts | 6 +- src/preset/builder/kernel.ts | 21 +- src/typechain/Kernel.ts | 126 +++- src/typechain/KernelFactory.ts | 609 ++++++++++++++++-- .../factories/KernelFactory__factory.ts | 287 ++++++++- src/typechain/factories/Kernel__factory.ts | 91 ++- src/typechain/factories/index.ts | 1 - src/typechain/index.ts | 2 - 11 files changed, 1343 insertions(+), 292 deletions(-) delete mode 100644 abi/ECDSAKernelFactory.json diff --git a/abi/ECDSAKernelFactory.json b/abi/ECDSAKernelFactory.json deleted file mode 100644 index 333d2f8..0000000 --- a/abi/ECDSAKernelFactory.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "abi": [ - { - "inputs": [ - { - "internalType": "contract KernelFactory", - "name": "_singletonFactory", - "type": "address" - }, - { - "internalType": "contract ECDSAValidator", - "name": "_validator", - "type": "address" - }, - { - "internalType": "contract IEntryPoint", - "name": "_entryPoint", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - } - ], - "name": "createAccount", - "outputs": [ - { - "internalType": "contract EIP1967Proxy", - "name": "proxy", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "entryPoint", - "outputs": [ - { - "internalType": "contract IEntryPoint", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - } - ], - "name": "getAccountAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "singletonFactory", - "outputs": [ - { - "internalType": "contract KernelFactory", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "validator", - "outputs": [ - { - "internalType": "contract ECDSAValidator", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ] -} diff --git a/abi/Kernel.json b/abi/Kernel.json index 67ea32f..6111498 100644 --- a/abi/Kernel.json +++ b/abi/Kernel.json @@ -11,6 +11,26 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [], + "name": "AlreadyInitialized", + "type": "error" + }, + { + "inputs": [], + "name": "DisabledMode", + "type": "error" + }, + { + "inputs": [], + "name": "NotAuthorizedCaller", + "type": "error" + }, + { + "inputs": [], + "name": "NotEntryPoint", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -82,7 +102,50 @@ ], "name": "disableMode", "outputs": [], - "stateMutability": "nonpayable", + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ], + "stateMutability": "view", "type": "function" }, { @@ -123,7 +186,7 @@ ], "name": "execute", "outputs": [], - "stateMutability": "nonpayable", + "stateMutability": "payable", "type": "function" }, { @@ -132,7 +195,7 @@ "outputs": [ { "internalType": "contract IKernelValidator", - "name": "", + "name": "validator", "type": "address" } ], @@ -145,7 +208,7 @@ "outputs": [ { "internalType": "bytes4", - "name": "", + "name": "disabled", "type": "bytes4" } ], @@ -165,13 +228,13 @@ { "components": [ { - "internalType": "uint48", - "name": "validUntil", + "internalType": "ValidAfter", + "name": "validAfter", "type": "uint48" }, { - "internalType": "uint48", - "name": "validAfter", + "internalType": "ValidUntil", + "name": "validUntil", "type": "uint48" }, { @@ -253,7 +316,7 @@ ], "name": "initialize", "outputs": [], - "stateMutability": "nonpayable", + "stateMutability": "payable", "type": "function" }, { @@ -420,7 +483,7 @@ ], "name": "setDefaultValidator", "outputs": [], - "stateMutability": "nonpayable", + "stateMutability": "payable", "type": "function" }, { @@ -458,7 +521,7 @@ ], "name": "setExecution", "outputs": [], - "stateMutability": "nonpayable", + "stateMutability": "payable", "type": "function" }, { @@ -471,7 +534,7 @@ ], "name": "upgradeTo", "outputs": [], - "stateMutability": "nonpayable", + "stateMutability": "payable", "type": "function" }, { @@ -552,12 +615,12 @@ "name": "validateUserOp", "outputs": [ { - "internalType": "uint256", + "internalType": "ValidationData", "name": "validationData", "type": "uint256" } ], - "stateMutability": "nonpayable", + "stateMutability": "payable", "type": "function" }, { diff --git a/abi/KernelFactory.json b/abi/KernelFactory.json index 4b44648..f6b8531 100644 --- a/abi/KernelFactory.json +++ b/abi/KernelFactory.json @@ -2,6 +2,11 @@ "abi": [ { "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, { "internalType": "contract IEntryPoint", "name": "_entryPoint", @@ -11,42 +16,133 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [], + "name": "DeploymentFailed", + "type": "error" + }, + { + "inputs": [], + "name": "NewOwnerIsZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "NoHandoverRequest", + "type": "error" + }, + { + "inputs": [], + "name": "SaltDoesNotStartWithCaller", + "type": "error" + }, + { + "inputs": [], + "name": "Unauthorized", + "type": "error" + }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", - "name": "account", + "name": "proxy", "type": "address" }, { "indexed": true, "internalType": "address", - "name": "validator", + "name": "implementation", "type": "address" - }, + } + ], + "name": "Deployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" + "indexed": true, + "internalType": "address", + "name": "pendingOwner", + "type": "address" + } + ], + "name": "OwnershipHandoverCanceled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pendingOwner", + "type": "address" + } + ], + "name": "OwnershipHandoverRequested", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldOwner", + "type": "address" }, { - "indexed": false, - "internalType": "uint256", - "name": "index", - "type": "uint256" + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" } ], - "name": "AccountCreated", + "name": "OwnershipTransferred", "type": "event" }, { "inputs": [ { - "internalType": "contract IKernelValidator", - "name": "_validator", + "internalType": "uint32", + "name": "unstakeDelaySec", + "type": "uint32" + } + ], + "name": "addStake", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "cancelOwnershipHandover", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pendingOwner", + "type": "address" + } + ], + "name": "completeOwnershipHandover", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_implementation", "type": "address" }, { @@ -63,12 +159,12 @@ "name": "createAccount", "outputs": [ { - "internalType": "contract EIP1967Proxy", + "internalType": "address", "name": "proxy", "type": "address" } ], - "stateMutability": "nonpayable", + "stateMutability": "payable", "type": "function" }, { @@ -86,11 +182,6 @@ }, { "inputs": [ - { - "internalType": "contract IKernelValidator", - "name": "_validator", - "type": "address" - }, { "internalType": "bytes", "name": "_data", @@ -115,29 +206,177 @@ }, { "inputs": [], - "name": "kernelTemplate", + "name": "initCodeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "result", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isAllowedImplementation", "outputs": [ { - "internalType": "contract TempKernel", + "internalType": "bool", "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "pendingOwner", + "type": "address" + } + ], + "name": "ownershipHandoverExpiresAt", + "outputs": [ + { + "internalType": "uint256", + "name": "result", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], - "name": "nextTemplate", + "name": "ownershipHandoverValidFor", "outputs": [ { - "internalType": "contract Kernel", + "internalType": "uint64", "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "predictDeterministicAddress", + "outputs": [ + { + "internalType": "address", + "name": "predicted", "type": "address" } ], "stateMutability": "view", "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "requestOwnershipHandover", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IEntryPoint", + "name": "_entryPoint", + "type": "address" + } + ], + "name": "setEntryPoint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_implementation", + "type": "address" + }, + { + "internalType": "bool", + "name": "_allow", + "type": "bool" + } + ], + "name": "setImplementation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "payable", + "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" } ] } diff --git a/src/constants/kernel.ts b/src/constants/kernel.ts index 257ffe8..de5200b 100644 --- a/src/constants/kernel.ts +++ b/src/constants/kernel.ts @@ -1,7 +1,7 @@ export const Kernel = { - Factory: "0x5D006d3880645ec6e254E18C1F879DAC9Dd71A39", - ECDSAFactory: "0xD49a72cb78C44c6bfbf0d471581B7635cF62E81e", - ECDSAValidator: "0x180D6465F921C7E0DEA0040107D342c87455fFF5", + Factory: "0x5de4839a76cf55d0c90e2061ef4386d962E15ae3", + KernelImpl: "0xf048AD83CB2dfd6037A43902a2A5Be04e53cd2Eb", + ECDSAValidator: "0xd9AB5096a832b9ce79914329DAEE236f8Eea0390", Modes: { Sudo: "0x00000000", Plugin: "0x00000001", diff --git a/src/preset/builder/kernel.ts b/src/preset/builder/kernel.ts index af3cbe9..578f83d 100644 --- a/src/preset/builder/kernel.ts +++ b/src/preset/builder/kernel.ts @@ -10,8 +10,8 @@ import { import { EntryPoint, EntryPoint__factory, - ECDSAKernelFactory, - ECDSAKernelFactory__factory, + KernelFactory, + KernelFactory__factory, Kernel as KernelImpl, Kernel__factory, Multisend, @@ -33,7 +33,7 @@ export class Kernel extends UserOperationBuilder { private signer: ethers.Signer; private provider: ethers.providers.JsonRpcProvider; private entryPoint: EntryPoint; - private factory: ECDSAKernelFactory; + private factory: KernelFactory; private initCode: string; private multisend: Multisend; proxy: KernelImpl; @@ -52,8 +52,8 @@ export class Kernel extends UserOperationBuilder { opts?.entryPoint || ERC4337.EntryPoint, this.provider ); - this.factory = ECDSAKernelFactory__factory.connect( - opts?.factory || KernelConst.ECDSAFactory, + this.factory = KernelFactory__factory.connect( + opts?.factory || KernelConst.Factory, this.provider ); this.initCode = "0x"; @@ -87,10 +87,17 @@ export class Kernel extends UserOperationBuilder { const instance = new Kernel(signer, rpcUrl, opts); try { - instance.initCode = await ethers.utils.hexConcat([ + instance.initCode = ethers.utils.hexConcat([ instance.factory.address, instance.factory.interface.encodeFunctionData("createAccount", [ - await instance.signer.getAddress(), + KernelConst.KernelImpl, + instance.proxy.interface.encodeFunctionData( + "initialize", + [ + KernelConst.ECDSAValidator, + await instance.signer.getAddress(), + ] + ), ethers.BigNumber.from(opts?.salt ?? 0), ]), ]); diff --git a/src/typechain/Kernel.ts b/src/typechain/Kernel.ts index daa3b2b..dba1f93 100644 --- a/src/typechain/Kernel.ts +++ b/src/typechain/Kernel.ts @@ -8,7 +8,7 @@ import type { BytesLike, CallOverrides, ContractTransaction, - Overrides, + PayableOverrides, PopulatedTransaction, Signer, utils, @@ -27,15 +27,15 @@ import type { } from "./common"; export type ExecutionDetailStruct = { - validUntil: BigNumberish; validAfter: BigNumberish; + validUntil: BigNumberish; executor: string; validator: string; }; export type ExecutionDetailStructOutput = [number, number, string, string] & { - validUntil: number; validAfter: number; + validUntil: number; executor: string; validator: string; }; @@ -83,6 +83,7 @@ export type UserOperationStructOutput = [ export interface KernelInterface extends utils.Interface { functions: { "disableMode(bytes4)": FunctionFragment; + "eip712Domain()": FunctionFragment; "entryPoint()": FunctionFragment; "execute(address,uint256,bytes,uint8)": FunctionFragment; "getDefaultValidator()": FunctionFragment; @@ -107,6 +108,7 @@ export interface KernelInterface extends utils.Interface { getFunction( nameOrSignatureOrTopic: | "disableMode" + | "eip712Domain" | "entryPoint" | "execute" | "getDefaultValidator" @@ -132,6 +134,10 @@ export interface KernelInterface extends utils.Interface { functionFragment: "disableMode", values: [BytesLike] ): string; + encodeFunctionData( + functionFragment: "eip712Domain", + values?: undefined + ): string; encodeFunctionData( functionFragment: "entryPoint", values?: undefined @@ -204,6 +210,10 @@ export interface KernelInterface extends utils.Interface { functionFragment: "disableMode", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "eip712Domain", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "entryPoint", data: BytesLike): Result; decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; decodeFunctionResult( @@ -332,9 +342,23 @@ export interface Kernel extends BaseContract { functions: { disableMode( _disableFlag: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; + eip712Domain( + overrides?: CallOverrides + ): Promise< + [string, string, string, BigNumber, string, string, BigNumber[]] & { + fields: string; + name: string; + version: string; + chainId: BigNumber; + verifyingContract: string; + salt: string; + extensions: BigNumber[]; + } + >; + entryPoint(overrides?: CallOverrides): Promise<[string]>; execute( @@ -342,12 +366,16 @@ export interface Kernel extends BaseContract { value: BigNumberish, data: BytesLike, operation: BigNumberish, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; - getDefaultValidator(overrides?: CallOverrides): Promise<[string]>; + getDefaultValidator( + overrides?: CallOverrides + ): Promise<[string] & { validator: string }>; - getDisabledMode(overrides?: CallOverrides): Promise<[string]>; + getDisabledMode( + overrides?: CallOverrides + ): Promise<[string] & { disabled: string }>; getExecution( _selector: BytesLike, @@ -366,7 +394,7 @@ export interface Kernel extends BaseContract { initialize( _defaultValidator: string, _data: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; isValidSignature( @@ -406,7 +434,7 @@ export interface Kernel extends BaseContract { setDefaultValidator( _defaultValidator: string, _data: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; setExecution( @@ -416,19 +444,19 @@ export interface Kernel extends BaseContract { _validUntil: BigNumberish, _validAfter: BigNumberish, _enableData: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; upgradeTo( _newImplementation: string, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; validateUserOp( userOp: UserOperationStruct, userOpHash: BytesLike, missingAccountFunds: BigNumberish, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; version(overrides?: CallOverrides): Promise<[string]>; @@ -436,9 +464,23 @@ export interface Kernel extends BaseContract { disableMode( _disableFlag: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; + eip712Domain( + overrides?: CallOverrides + ): Promise< + [string, string, string, BigNumber, string, string, BigNumber[]] & { + fields: string; + name: string; + version: string; + chainId: BigNumber; + verifyingContract: string; + salt: string; + extensions: BigNumber[]; + } + >; + entryPoint(overrides?: CallOverrides): Promise; execute( @@ -446,7 +488,7 @@ export interface Kernel extends BaseContract { value: BigNumberish, data: BytesLike, operation: BigNumberish, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; getDefaultValidator(overrides?: CallOverrides): Promise; @@ -470,7 +512,7 @@ export interface Kernel extends BaseContract { initialize( _defaultValidator: string, _data: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; isValidSignature( @@ -510,7 +552,7 @@ export interface Kernel extends BaseContract { setDefaultValidator( _defaultValidator: string, _data: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; setExecution( @@ -520,19 +562,19 @@ export interface Kernel extends BaseContract { _validUntil: BigNumberish, _validAfter: BigNumberish, _enableData: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; upgradeTo( _newImplementation: string, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; validateUserOp( userOp: UserOperationStruct, userOpHash: BytesLike, missingAccountFunds: BigNumberish, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; version(overrides?: CallOverrides): Promise; @@ -543,6 +585,20 @@ export interface Kernel extends BaseContract { overrides?: CallOverrides ): Promise; + eip712Domain( + overrides?: CallOverrides + ): Promise< + [string, string, string, BigNumber, string, string, BigNumber[]] & { + fields: string; + name: string; + version: string; + chainId: BigNumber; + verifyingContract: string; + salt: string; + extensions: BigNumber[]; + } + >; + entryPoint(overrides?: CallOverrides): Promise; execute( @@ -670,9 +726,11 @@ export interface Kernel extends BaseContract { estimateGas: { disableMode( _disableFlag: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; + eip712Domain(overrides?: CallOverrides): Promise; + entryPoint(overrides?: CallOverrides): Promise; execute( @@ -680,7 +738,7 @@ export interface Kernel extends BaseContract { value: BigNumberish, data: BytesLike, operation: BigNumberish, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; getDefaultValidator(overrides?: CallOverrides): Promise; @@ -704,7 +762,7 @@ export interface Kernel extends BaseContract { initialize( _defaultValidator: string, _data: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; isValidSignature( @@ -744,7 +802,7 @@ export interface Kernel extends BaseContract { setDefaultValidator( _defaultValidator: string, _data: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; setExecution( @@ -754,19 +812,19 @@ export interface Kernel extends BaseContract { _validUntil: BigNumberish, _validAfter: BigNumberish, _enableData: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; upgradeTo( _newImplementation: string, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; validateUserOp( userOp: UserOperationStruct, userOpHash: BytesLike, missingAccountFunds: BigNumberish, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; version(overrides?: CallOverrides): Promise; @@ -775,9 +833,11 @@ export interface Kernel extends BaseContract { populateTransaction: { disableMode( _disableFlag: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; + eip712Domain(overrides?: CallOverrides): Promise; + entryPoint(overrides?: CallOverrides): Promise; execute( @@ -785,7 +845,7 @@ export interface Kernel extends BaseContract { value: BigNumberish, data: BytesLike, operation: BigNumberish, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; getDefaultValidator( @@ -813,7 +873,7 @@ export interface Kernel extends BaseContract { initialize( _defaultValidator: string, _data: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; isValidSignature( @@ -853,7 +913,7 @@ export interface Kernel extends BaseContract { setDefaultValidator( _defaultValidator: string, _data: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; setExecution( @@ -863,19 +923,19 @@ export interface Kernel extends BaseContract { _validUntil: BigNumberish, _validAfter: BigNumberish, _enableData: BytesLike, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; upgradeTo( _newImplementation: string, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; validateUserOp( userOp: UserOperationStruct, userOpHash: BytesLike, missingAccountFunds: BigNumberish, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; version(overrides?: CallOverrides): Promise; diff --git a/src/typechain/KernelFactory.ts b/src/typechain/KernelFactory.ts index 725a547..5a58793 100644 --- a/src/typechain/KernelFactory.ts +++ b/src/typechain/KernelFactory.ts @@ -9,6 +9,7 @@ import type { CallOverrides, ContractTransaction, Overrides, + PayableOverrides, PopulatedTransaction, Signer, utils, @@ -28,22 +29,62 @@ import type { export interface KernelFactoryInterface extends utils.Interface { functions: { + "addStake(uint32)": FunctionFragment; + "cancelOwnershipHandover()": FunctionFragment; + "completeOwnershipHandover(address)": FunctionFragment; "createAccount(address,bytes,uint256)": FunctionFragment; "entryPoint()": FunctionFragment; - "getAccountAddress(address,bytes,uint256)": FunctionFragment; - "kernelTemplate()": FunctionFragment; - "nextTemplate()": FunctionFragment; + "getAccountAddress(bytes,uint256)": FunctionFragment; + "initCodeHash()": FunctionFragment; + "isAllowedImplementation(address)": FunctionFragment; + "owner()": FunctionFragment; + "ownershipHandoverExpiresAt(address)": FunctionFragment; + "ownershipHandoverValidFor()": FunctionFragment; + "predictDeterministicAddress(bytes32)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "requestOwnershipHandover()": FunctionFragment; + "setEntryPoint(address)": FunctionFragment; + "setImplementation(address,bool)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "unlockStake()": FunctionFragment; + "withdrawStake(address)": FunctionFragment; }; getFunction( nameOrSignatureOrTopic: + | "addStake" + | "cancelOwnershipHandover" + | "completeOwnershipHandover" | "createAccount" | "entryPoint" | "getAccountAddress" - | "kernelTemplate" - | "nextTemplate" + | "initCodeHash" + | "isAllowedImplementation" + | "owner" + | "ownershipHandoverExpiresAt" + | "ownershipHandoverValidFor" + | "predictDeterministicAddress" + | "renounceOwnership" + | "requestOwnershipHandover" + | "setEntryPoint" + | "setImplementation" + | "transferOwnership" + | "unlockStake" + | "withdrawStake" ): FunctionFragment; + encodeFunctionData( + functionFragment: "addStake", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "cancelOwnershipHandover", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "completeOwnershipHandover", + values: [string] + ): string; encodeFunctionData( functionFragment: "createAccount", values: [string, BytesLike, BigNumberish] @@ -54,17 +95,67 @@ export interface KernelFactoryInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "getAccountAddress", - values: [string, BytesLike, BigNumberish] + values: [BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "initCodeHash", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "isAllowedImplementation", + values: [string] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "ownershipHandoverExpiresAt", + values: [string] ): string; encodeFunctionData( - functionFragment: "kernelTemplate", + functionFragment: "ownershipHandoverValidFor", values?: undefined ): string; encodeFunctionData( - functionFragment: "nextTemplate", + functionFragment: "predictDeterministicAddress", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "requestOwnershipHandover", values?: undefined ): string; + encodeFunctionData( + functionFragment: "setEntryPoint", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "setImplementation", + values: [string, boolean] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "unlockStake", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdrawStake", + values: [string] + ): string; + decodeFunctionResult(functionFragment: "addStake", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "cancelOwnershipHandover", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "completeOwnershipHandover", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "createAccount", data: BytesLike @@ -75,33 +166,109 @@ export interface KernelFactoryInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "kernelTemplate", + functionFragment: "initCodeHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isAllowedImplementation", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "ownershipHandoverExpiresAt", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "ownershipHandoverValidFor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "predictDeterministicAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "requestOwnershipHandover", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setEntryPoint", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setImplementation", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "nextTemplate", + functionFragment: "unlockStake", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawStake", data: BytesLike ): Result; events: { - "AccountCreated(address,address,bytes,uint256)": EventFragment; + "Deployed(address,address)": EventFragment; + "OwnershipHandoverCanceled(address)": EventFragment; + "OwnershipHandoverRequested(address)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; }; - getEvent(nameOrSignatureOrTopic: "AccountCreated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Deployed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipHandoverCanceled"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipHandoverRequested"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export interface DeployedEventObject { + proxy: string; + implementation: string; +} +export type DeployedEvent = TypedEvent<[string, string], DeployedEventObject>; + +export type DeployedEventFilter = TypedEventFilter; + +export interface OwnershipHandoverCanceledEventObject { + pendingOwner: string; +} +export type OwnershipHandoverCanceledEvent = TypedEvent< + [string], + OwnershipHandoverCanceledEventObject +>; + +export type OwnershipHandoverCanceledEventFilter = + TypedEventFilter; + +export interface OwnershipHandoverRequestedEventObject { + pendingOwner: string; } +export type OwnershipHandoverRequestedEvent = TypedEvent< + [string], + OwnershipHandoverRequestedEventObject +>; -export interface AccountCreatedEventObject { - account: string; - validator: string; - data: string; - index: BigNumber; +export type OwnershipHandoverRequestedEventFilter = + TypedEventFilter; + +export interface OwnershipTransferredEventObject { + oldOwner: string; + newOwner: string; } -export type AccountCreatedEvent = TypedEvent< - [string, string, string, BigNumber], - AccountCreatedEventObject +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject >; -export type AccountCreatedEventFilter = TypedEventFilter; +export type OwnershipTransferredEventFilter = + TypedEventFilter; export interface KernelFactory extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; @@ -130,50 +297,190 @@ export interface KernelFactory extends BaseContract { removeListener: OnEvent; functions: { + addStake( + unstakeDelaySec: BigNumberish, + overrides?: PayableOverrides & { from?: string } + ): Promise; + + cancelOwnershipHandover( + overrides?: PayableOverrides & { from?: string } + ): Promise; + + completeOwnershipHandover( + pendingOwner: string, + overrides?: PayableOverrides & { from?: string } + ): Promise; + createAccount( - _validator: string, + _implementation: string, _data: BytesLike, _index: BigNumberish, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; entryPoint(overrides?: CallOverrides): Promise<[string]>; getAccountAddress( - _validator: string, _data: BytesLike, _index: BigNumberish, overrides?: CallOverrides ): Promise<[string]>; - kernelTemplate(overrides?: CallOverrides): Promise<[string]>; + initCodeHash( + overrides?: CallOverrides + ): Promise<[string] & { result: string }>; + + isAllowedImplementation( + arg0: string, + overrides?: CallOverrides + ): Promise<[boolean]>; + + owner(overrides?: CallOverrides): Promise<[string] & { result: string }>; + + ownershipHandoverExpiresAt( + pendingOwner: string, + overrides?: CallOverrides + ): Promise<[BigNumber] & { result: BigNumber }>; + + ownershipHandoverValidFor(overrides?: CallOverrides): Promise<[BigNumber]>; + + predictDeterministicAddress( + salt: BytesLike, + overrides?: CallOverrides + ): Promise<[string] & { predicted: string }>; + + renounceOwnership( + overrides?: PayableOverrides & { from?: string } + ): Promise; + + requestOwnershipHandover( + overrides?: PayableOverrides & { from?: string } + ): Promise; + + setEntryPoint( + _entryPoint: string, + overrides?: Overrides & { from?: string } + ): Promise; + + setImplementation( + _implementation: string, + _allow: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: PayableOverrides & { from?: string } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: string } + ): Promise; - nextTemplate(overrides?: CallOverrides): Promise<[string]>; + withdrawStake( + withdrawAddress: string, + overrides?: Overrides & { from?: string } + ): Promise; }; + addStake( + unstakeDelaySec: BigNumberish, + overrides?: PayableOverrides & { from?: string } + ): Promise; + + cancelOwnershipHandover( + overrides?: PayableOverrides & { from?: string } + ): Promise; + + completeOwnershipHandover( + pendingOwner: string, + overrides?: PayableOverrides & { from?: string } + ): Promise; + createAccount( - _validator: string, + _implementation: string, _data: BytesLike, _index: BigNumberish, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; entryPoint(overrides?: CallOverrides): Promise; getAccountAddress( - _validator: string, _data: BytesLike, _index: BigNumberish, overrides?: CallOverrides ): Promise; - kernelTemplate(overrides?: CallOverrides): Promise; + initCodeHash(overrides?: CallOverrides): Promise; + + isAllowedImplementation( + arg0: string, + overrides?: CallOverrides + ): Promise; - nextTemplate(overrides?: CallOverrides): Promise; + owner(overrides?: CallOverrides): Promise; + + ownershipHandoverExpiresAt( + pendingOwner: string, + overrides?: CallOverrides + ): Promise; + + ownershipHandoverValidFor(overrides?: CallOverrides): Promise; + + predictDeterministicAddress( + salt: BytesLike, + overrides?: CallOverrides + ): Promise; + + renounceOwnership( + overrides?: PayableOverrides & { from?: string } + ): Promise; + + requestOwnershipHandover( + overrides?: PayableOverrides & { from?: string } + ): Promise; + + setEntryPoint( + _entryPoint: string, + overrides?: Overrides & { from?: string } + ): Promise; + + setImplementation( + _implementation: string, + _allow: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: PayableOverrides & { from?: string } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: string } + ): Promise; + + withdrawStake( + withdrawAddress: string, + overrides?: Overrides & { from?: string } + ): Promise; callStatic: { + addStake( + unstakeDelaySec: BigNumberish, + overrides?: CallOverrides + ): Promise; + + cancelOwnershipHandover(overrides?: CallOverrides): Promise; + + completeOwnershipHandover( + pendingOwner: string, + overrides?: CallOverrides + ): Promise; + createAccount( - _validator: string, + _implementation: string, _data: BytesLike, _index: BigNumberish, overrides?: CallOverrides @@ -182,73 +489,261 @@ export interface KernelFactory extends BaseContract { entryPoint(overrides?: CallOverrides): Promise; getAccountAddress( - _validator: string, _data: BytesLike, _index: BigNumberish, overrides?: CallOverrides ): Promise; - kernelTemplate(overrides?: CallOverrides): Promise; + initCodeHash(overrides?: CallOverrides): Promise; + + isAllowedImplementation( + arg0: string, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + ownershipHandoverExpiresAt( + pendingOwner: string, + overrides?: CallOverrides + ): Promise; + + ownershipHandoverValidFor(overrides?: CallOverrides): Promise; + + predictDeterministicAddress( + salt: BytesLike, + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + requestOwnershipHandover(overrides?: CallOverrides): Promise; + + setEntryPoint( + _entryPoint: string, + overrides?: CallOverrides + ): Promise; + + setImplementation( + _implementation: string, + _allow: boolean, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: CallOverrides + ): Promise; + + unlockStake(overrides?: CallOverrides): Promise; - nextTemplate(overrides?: CallOverrides): Promise; + withdrawStake( + withdrawAddress: string, + overrides?: CallOverrides + ): Promise; }; filters: { - "AccountCreated(address,address,bytes,uint256)"( - account?: string | null, - validator?: string | null, - data?: null, - index?: null - ): AccountCreatedEventFilter; - AccountCreated( - account?: string | null, - validator?: string | null, - data?: null, - index?: null - ): AccountCreatedEventFilter; + "Deployed(address,address)"( + proxy?: string | null, + implementation?: string | null + ): DeployedEventFilter; + Deployed( + proxy?: string | null, + implementation?: string | null + ): DeployedEventFilter; + + "OwnershipHandoverCanceled(address)"( + pendingOwner?: string | null + ): OwnershipHandoverCanceledEventFilter; + OwnershipHandoverCanceled( + pendingOwner?: string | null + ): OwnershipHandoverCanceledEventFilter; + + "OwnershipHandoverRequested(address)"( + pendingOwner?: string | null + ): OwnershipHandoverRequestedEventFilter; + OwnershipHandoverRequested( + pendingOwner?: string | null + ): OwnershipHandoverRequestedEventFilter; + + "OwnershipTransferred(address,address)"( + oldOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + oldOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; }; estimateGas: { + addStake( + unstakeDelaySec: BigNumberish, + overrides?: PayableOverrides & { from?: string } + ): Promise; + + cancelOwnershipHandover( + overrides?: PayableOverrides & { from?: string } + ): Promise; + + completeOwnershipHandover( + pendingOwner: string, + overrides?: PayableOverrides & { from?: string } + ): Promise; + createAccount( - _validator: string, + _implementation: string, _data: BytesLike, _index: BigNumberish, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; entryPoint(overrides?: CallOverrides): Promise; getAccountAddress( - _validator: string, _data: BytesLike, _index: BigNumberish, overrides?: CallOverrides ): Promise; - kernelTemplate(overrides?: CallOverrides): Promise; + initCodeHash(overrides?: CallOverrides): Promise; + + isAllowedImplementation( + arg0: string, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; - nextTemplate(overrides?: CallOverrides): Promise; + ownershipHandoverExpiresAt( + pendingOwner: string, + overrides?: CallOverrides + ): Promise; + + ownershipHandoverValidFor(overrides?: CallOverrides): Promise; + + predictDeterministicAddress( + salt: BytesLike, + overrides?: CallOverrides + ): Promise; + + renounceOwnership( + overrides?: PayableOverrides & { from?: string } + ): Promise; + + requestOwnershipHandover( + overrides?: PayableOverrides & { from?: string } + ): Promise; + + setEntryPoint( + _entryPoint: string, + overrides?: Overrides & { from?: string } + ): Promise; + + setImplementation( + _implementation: string, + _allow: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: PayableOverrides & { from?: string } + ): Promise; + + unlockStake(overrides?: Overrides & { from?: string }): Promise; + + withdrawStake( + withdrawAddress: string, + overrides?: Overrides & { from?: string } + ): Promise; }; populateTransaction: { + addStake( + unstakeDelaySec: BigNumberish, + overrides?: PayableOverrides & { from?: string } + ): Promise; + + cancelOwnershipHandover( + overrides?: PayableOverrides & { from?: string } + ): Promise; + + completeOwnershipHandover( + pendingOwner: string, + overrides?: PayableOverrides & { from?: string } + ): Promise; + createAccount( - _validator: string, + _implementation: string, _data: BytesLike, _index: BigNumberish, - overrides?: Overrides & { from?: string } + overrides?: PayableOverrides & { from?: string } ): Promise; entryPoint(overrides?: CallOverrides): Promise; getAccountAddress( - _validator: string, _data: BytesLike, _index: BigNumberish, overrides?: CallOverrides ): Promise; - kernelTemplate(overrides?: CallOverrides): Promise; + initCodeHash(overrides?: CallOverrides): Promise; - nextTemplate(overrides?: CallOverrides): Promise; + isAllowedImplementation( + arg0: string, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + ownershipHandoverExpiresAt( + pendingOwner: string, + overrides?: CallOverrides + ): Promise; + + ownershipHandoverValidFor( + overrides?: CallOverrides + ): Promise; + + predictDeterministicAddress( + salt: BytesLike, + overrides?: CallOverrides + ): Promise; + + renounceOwnership( + overrides?: PayableOverrides & { from?: string } + ): Promise; + + requestOwnershipHandover( + overrides?: PayableOverrides & { from?: string } + ): Promise; + + setEntryPoint( + _entryPoint: string, + overrides?: Overrides & { from?: string } + ): Promise; + + setImplementation( + _implementation: string, + _allow: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: PayableOverrides & { from?: string } + ): Promise; + + unlockStake( + overrides?: Overrides & { from?: string } + ): Promise; + + withdrawStake( + withdrawAddress: string, + overrides?: Overrides & { from?: string } + ): Promise; }; } diff --git a/src/typechain/factories/KernelFactory__factory.ts b/src/typechain/factories/KernelFactory__factory.ts index 65d5140..48a7f5a 100644 --- a/src/typechain/factories/KernelFactory__factory.ts +++ b/src/typechain/factories/KernelFactory__factory.ts @@ -9,6 +9,11 @@ import type { KernelFactory, KernelFactoryInterface } from "../KernelFactory"; const _abi = [ { inputs: [ + { + internalType: "address", + name: "_owner", + type: "address", + }, { internalType: "contract IEntryPoint", name: "_entryPoint", @@ -18,42 +23,133 @@ const _abi = [ stateMutability: "nonpayable", type: "constructor", }, + { + inputs: [], + name: "DeploymentFailed", + type: "error", + }, + { + inputs: [], + name: "NewOwnerIsZeroAddress", + type: "error", + }, + { + inputs: [], + name: "NoHandoverRequest", + type: "error", + }, + { + inputs: [], + name: "SaltDoesNotStartWithCaller", + type: "error", + }, + { + inputs: [], + name: "Unauthorized", + type: "error", + }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", - name: "account", + name: "proxy", type: "address", }, { indexed: true, internalType: "address", - name: "validator", + name: "implementation", type: "address", }, + ], + name: "Deployed", + type: "event", + }, + { + anonymous: false, + inputs: [ { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", + indexed: true, + internalType: "address", + name: "pendingOwner", + type: "address", }, + ], + name: "OwnershipHandoverCanceled", + type: "event", + }, + { + anonymous: false, + inputs: [ { - indexed: false, - internalType: "uint256", - name: "index", - type: "uint256", + indexed: true, + internalType: "address", + name: "pendingOwner", + type: "address", + }, + ], + name: "OwnershipHandoverRequested", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", }, ], - name: "AccountCreated", + name: "OwnershipTransferred", type: "event", }, { inputs: [ { - internalType: "contract IKernelValidator", - name: "_validator", + internalType: "uint32", + name: "unstakeDelaySec", + type: "uint32", + }, + ], + name: "addStake", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "cancelOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "pendingOwner", + type: "address", + }, + ], + name: "completeOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_implementation", type: "address", }, { @@ -70,12 +166,12 @@ const _abi = [ name: "createAccount", outputs: [ { - internalType: "contract EIP1967Proxy", + internalType: "address", name: "proxy", type: "address", }, ], - stateMutability: "nonpayable", + stateMutability: "payable", type: "function", }, { @@ -93,11 +189,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "contract IKernelValidator", - name: "_validator", - type: "address", - }, { internalType: "bytes", name: "_data", @@ -122,30 +213,178 @@ const _abi = [ }, { inputs: [], - name: "kernelTemplate", + name: "initCodeHash", + outputs: [ + { + internalType: "bytes32", + name: "result", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "isAllowedImplementation", outputs: [ { - internalType: "contract TempKernel", + internalType: "bool", name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "result", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "pendingOwner", type: "address", }, ], + name: "ownershipHandoverExpiresAt", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256", + }, + ], stateMutability: "view", type: "function", }, { inputs: [], - name: "nextTemplate", + name: "ownershipHandoverValidFor", outputs: [ { - internalType: "contract Kernel", + internalType: "uint64", name: "", + type: "uint64", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + ], + name: "predictDeterministicAddress", + outputs: [ + { + internalType: "address", + name: "predicted", type: "address", }, ], stateMutability: "view", type: "function", }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "requestOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract IEntryPoint", + name: "_entryPoint", + type: "address", + }, + ], + name: "setEntryPoint", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_implementation", + type: "address", + }, + { + internalType: "bool", + name: "_allow", + type: "bool", + }, + ], + name: "setImplementation", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "payable", + 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", + }, ] as const; export class KernelFactory__factory { diff --git a/src/typechain/factories/Kernel__factory.ts b/src/typechain/factories/Kernel__factory.ts index d112edb..9967bdb 100644 --- a/src/typechain/factories/Kernel__factory.ts +++ b/src/typechain/factories/Kernel__factory.ts @@ -18,6 +18,26 @@ const _abi = [ stateMutability: "nonpayable", type: "constructor", }, + { + inputs: [], + name: "AlreadyInitialized", + type: "error", + }, + { + inputs: [], + name: "DisabledMode", + type: "error", + }, + { + inputs: [], + name: "NotAuthorizedCaller", + type: "error", + }, + { + inputs: [], + name: "NotEntryPoint", + type: "error", + }, { anonymous: false, inputs: [ @@ -89,7 +109,50 @@ const _abi = [ ], name: "disableMode", outputs: [], - stateMutability: "nonpayable", + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "eip712Domain", + outputs: [ + { + internalType: "bytes1", + name: "fields", + type: "bytes1", + }, + { + internalType: "string", + name: "name", + type: "string", + }, + { + internalType: "string", + name: "version", + type: "string", + }, + { + internalType: "uint256", + name: "chainId", + type: "uint256", + }, + { + internalType: "address", + name: "verifyingContract", + type: "address", + }, + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "uint256[]", + name: "extensions", + type: "uint256[]", + }, + ], + stateMutability: "view", type: "function", }, { @@ -130,7 +193,7 @@ const _abi = [ ], name: "execute", outputs: [], - stateMutability: "nonpayable", + stateMutability: "payable", type: "function", }, { @@ -139,7 +202,7 @@ const _abi = [ outputs: [ { internalType: "contract IKernelValidator", - name: "", + name: "validator", type: "address", }, ], @@ -152,7 +215,7 @@ const _abi = [ outputs: [ { internalType: "bytes4", - name: "", + name: "disabled", type: "bytes4", }, ], @@ -172,13 +235,13 @@ const _abi = [ { components: [ { - internalType: "uint48", - name: "validUntil", + internalType: "ValidAfter", + name: "validAfter", type: "uint48", }, { - internalType: "uint48", - name: "validAfter", + internalType: "ValidUntil", + name: "validUntil", type: "uint48", }, { @@ -260,7 +323,7 @@ const _abi = [ ], name: "initialize", outputs: [], - stateMutability: "nonpayable", + stateMutability: "payable", type: "function", }, { @@ -427,7 +490,7 @@ const _abi = [ ], name: "setDefaultValidator", outputs: [], - stateMutability: "nonpayable", + stateMutability: "payable", type: "function", }, { @@ -465,7 +528,7 @@ const _abi = [ ], name: "setExecution", outputs: [], - stateMutability: "nonpayable", + stateMutability: "payable", type: "function", }, { @@ -478,7 +541,7 @@ const _abi = [ ], name: "upgradeTo", outputs: [], - stateMutability: "nonpayable", + stateMutability: "payable", type: "function", }, { @@ -559,12 +622,12 @@ const _abi = [ name: "validateUserOp", outputs: [ { - internalType: "uint256", + internalType: "ValidationData", name: "validationData", type: "uint256", }, ], - stateMutability: "nonpayable", + stateMutability: "payable", type: "function", }, { diff --git a/src/typechain/factories/index.ts b/src/typechain/factories/index.ts index ce1657c..7cf5b4b 100644 --- a/src/typechain/factories/index.ts +++ b/src/typechain/factories/index.ts @@ -1,7 +1,6 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export { ECDSAKernelFactory__factory } from "./ECDSAKernelFactory__factory"; export { ECDSAValidator__factory } from "./ECDSAValidator__factory"; export { EntryPoint__factory } from "./EntryPoint__factory"; export { Kernel__factory } from "./Kernel__factory"; diff --git a/src/typechain/index.ts b/src/typechain/index.ts index 43b2eb1..0cf69dc 100644 --- a/src/typechain/index.ts +++ b/src/typechain/index.ts @@ -1,7 +1,6 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export type { ECDSAKernelFactory } from "./ECDSAKernelFactory"; export type { ECDSAValidator } from "./ECDSAValidator"; export type { EntryPoint } from "./EntryPoint"; export type { Kernel } from "./Kernel"; @@ -10,7 +9,6 @@ export type { Multisend } from "./Multisend"; export type { SimpleAccount } from "./SimpleAccount"; export type { SimpleAccountFactory } from "./SimpleAccountFactory"; export * as factories from "./factories"; -export { ECDSAKernelFactory__factory } from "./factories/ECDSAKernelFactory__factory"; export { ECDSAValidator__factory } from "./factories/ECDSAValidator__factory"; export { EntryPoint__factory } from "./factories/EntryPoint__factory"; export { Kernel__factory } from "./factories/Kernel__factory";