@zerodev/sdk 4.3.4 → 4.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/cjs/kernel-zerodev/abis/WeightedValidatorAbi.d.ts +52 -8
  2. package/dist/cjs/kernel-zerodev/abis/WeightedValidatorAbi.js +65 -8
  3. package/dist/cjs/kernel-zerodev/abis/WeightedValidatorAbi.js.map +1 -1
  4. package/dist/cjs/kernel-zerodev/constants.d.ts +2 -2
  5. package/dist/cjs/kernel-zerodev/constants.js +2 -2
  6. package/dist/cjs/kernel-zerodev/constants.js.map +1 -1
  7. package/dist/cjs/kernel-zerodev/validator/recovery-validator.d.ts +1 -0
  8. package/dist/cjs/kernel-zerodev/validator/recovery-validator.js +8 -1
  9. package/dist/cjs/kernel-zerodev/validator/recovery-validator.js.map +1 -1
  10. package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.d.ts +1 -0
  11. package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.js +14 -1
  12. package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.js.map +1 -1
  13. package/dist/esm/kernel-zerodev/abis/WeightedValidatorAbi.d.ts +52 -8
  14. package/dist/esm/kernel-zerodev/abis/WeightedValidatorAbi.js +65 -8
  15. package/dist/esm/kernel-zerodev/abis/WeightedValidatorAbi.js.map +1 -1
  16. package/dist/esm/kernel-zerodev/constants.d.ts +2 -2
  17. package/dist/esm/kernel-zerodev/constants.js +2 -2
  18. package/dist/esm/kernel-zerodev/constants.js.map +1 -1
  19. package/dist/esm/kernel-zerodev/validator/recovery-validator.d.ts +1 -0
  20. package/dist/esm/kernel-zerodev/validator/recovery-validator.js +8 -1
  21. package/dist/esm/kernel-zerodev/validator/recovery-validator.js.map +1 -1
  22. package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.d.ts +1 -0
  23. package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.js +15 -2
  24. package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.js.map +1 -1
  25. package/dist/types/kernel-zerodev/abis/WeightedValidatorAbi.d.ts +52 -8
  26. package/dist/types/kernel-zerodev/abis/WeightedValidatorAbi.d.ts.map +1 -1
  27. package/dist/types/kernel-zerodev/constants.d.ts +2 -2
  28. package/dist/types/kernel-zerodev/constants.d.ts.map +1 -1
  29. package/dist/types/kernel-zerodev/validator/recovery-validator.d.ts +1 -0
  30. package/dist/types/kernel-zerodev/validator/recovery-validator.d.ts.map +1 -1
  31. package/dist/types/kernel-zerodev/validator-provider/recovery-provider.d.ts +1 -0
  32. package/dist/types/kernel-zerodev/validator-provider/recovery-provider.d.ts.map +1 -1
  33. package/package.json +1 -1
  34. package/src/kernel-zerodev/__tests__/config/index.ts +1 -0
  35. package/src/kernel-zerodev/abis/WeightedValidatorAbi.ts +65 -8
  36. package/src/kernel-zerodev/constants.ts +3 -2
  37. package/src/kernel-zerodev/validator/recovery-validator.ts +14 -1
  38. package/src/kernel-zerodev/validator-provider/recovery-provider.ts +27 -2
@@ -1 +1 @@
1
- {"version":3,"file":"recovery-validator.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/recovery-validator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type Address,\n type Hex,\n type SmartAccountSigner,\n type UserOperationRequest,\n type SignTypedDataParams,\n} from \"@alchemy/aa-core\";\nimport {\n KernelBaseValidator,\n ValidatorMode,\n type KernelBaseValidatorParams,\n} from \"./base.js\";\nimport {\n concatHex,\n encodeAbiParameters,\n encodeFunctionData,\n getContract,\n parseAbiParameters,\n type LocalAccount,\n createWalletClient,\n type WalletClient,\n http,\n custom,\n type Transport,\n type Chain,\n type Account,\n publicActions,\n getFunctionSelector,\n type PublicClient,\n} from \"viem\";\nimport { WeightedValidatorAbi } from \"../abis/WeightedValidatorAbi.js\";\nimport { getChainId, getRecoveryData } from \"../api/index.js\";\nimport {\n CHAIN_ID_TO_NODE,\n DUMMY_ECDSA_SIG,\n RECOVERY_ACTION,\n RECOVERY_VALIDATOR_ADDRESS,\n} from \"../constants.js\";\nimport { KernelAccountAbi } from \"../abis/KernelAccountAbi.js\";\nimport { fixSignedData, getChain } from \"../utils.js\";\nimport type { EthereumProvider } from \"./types.js\";\nimport { polygonMumbai } from \"viem/chains\";\nimport { RecoveryActionAbi } from \"../abis/RecoveryActionAbi.js\";\n\ninterface WeightedGuardians {\n [guardian: Address]: number;\n}\nexport interface RecoveryValidatorParams extends KernelBaseValidatorParams {\n guardians?: WeightedGuardians;\n threshold?: number;\n delaySeconds?: number;\n accountSigner?: SmartAccountSigner;\n localAccountOrProvider?: LocalAccount<string> | EthereumProvider;\n walletClient?: WalletClient<Transport, Chain>;\n signatures?: Hex;\n recoveryId?: string;\n}\n\nexport type RecoveryConfig = Required<\n Pick<RecoveryValidatorParams, \"guardians\" | \"threshold\" | \"delaySeconds\">\n>;\n\nexport function isLocalAccount(account: any): account is LocalAccount<string> {\n return account && account.signTransaction !== undefined;\n}\n\nexport function isEthereumProvider(\n provider: any\n): provider is EthereumProvider {\n return provider && provider.request !== undefined;\n}\n\ntype WalletClientAccountType<T> = T extends LocalAccount<string>\n ? Account\n : T extends EthereumProvider\n ? undefined\n : never;\n\nexport const recoverySelector = getFunctionSelector(\n \"doRecovery(address, bytes)\"\n);\n\nexport class RecoveryValidator extends KernelBaseValidator {\n protected guardians?: WeightedGuardians;\n protected threshold?: number;\n protected delaySeconds: number;\n protected accountSigner?: SmartAccountSigner;\n protected localAccountOrProvider?: LocalAccount<string> | EthereumProvider;\n protected signatures?: Hex;\n protected recoveryId?: string;\n walletClient?: WalletClient<\n Transport,\n Chain,\n WalletClientAccountType<typeof this.localAccountOrProvider>\n >;\n\n constructor(params: RecoveryValidatorParams) {\n super(params);\n this.guardians = params.guardians;\n this.threshold = params.threshold;\n this.delaySeconds = params.delaySeconds ?? 0;\n this.accountSigner = params.accountSigner;\n this.mode = params.mode ?? ValidatorMode.plugin;\n this.localAccountOrProvider = params.localAccountOrProvider;\n this.signatures = params.signatures;\n this.validAfter = params.validAfter ?? 0;\n this.validUntil = params.validUntil ?? 0;\n this.executor = params.executor ?? RECOVERY_ACTION;\n this.selector = params.selector ?? recoverySelector;\n this.recoveryId = params.recoveryId;\n if (isLocalAccount(params.localAccountOrProvider)) {\n this.walletClient = createWalletClient({\n account: params.localAccountOrProvider,\n chain: this.chain ?? polygonMumbai,\n transport: http(CHAIN_ID_TO_NODE[this.chain?.id ?? polygonMumbai.id]),\n }).extend(publicActions);\n } else if (isEthereumProvider(params.localAccountOrProvider)) {\n this.walletClient = createWalletClient({\n chain: this.chain ?? polygonMumbai,\n transport: custom(params.localAccountOrProvider),\n }).extend(publicActions);\n } else if (params.walletClient) {\n this.walletClient = params.walletClient.extend(publicActions);\n } else if (params.localAccountOrProvider) {\n throw Error(\"Incorrect localAccountOrProvider type\");\n }\n }\n\n public static async init(\n params: RecoveryValidatorParams\n ): Promise<RecoveryValidator> {\n const chainId = await getChainId(params.projectId);\n if (!chainId) {\n throw new Error(\"ChainId not found\");\n }\n const chain = getChain(chainId);\n const instance = new RecoveryValidator({ ...params, chain });\n return instance;\n }\n\n getNonceKey(): bigint {\n return BigInt(this.validatorAddress);\n }\n\n setRecoverySignatures(signatures: Hex) {\n this.signatures = signatures;\n }\n\n async getRecoverySignatures(): Promise<Hex | undefined> {\n if (this.recoveryId) {\n const { signatures } = await getRecoveryData(this.recoveryId);\n this.setRecoverySignatures(signatures);\n }\n return this.signatures;\n }\n\n getRecoveryConfig(): RecoveryConfig {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n return {\n guardians: this.guardians,\n threshold: this.threshold,\n delaySeconds: this.delaySeconds,\n };\n }\n\n async signer(): Promise<SmartAccountSigner> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return await Promise.resolve(this.accountSigner);\n }\n\n async getEnableData(): Promise<Hex> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n return encodeAbiParameters(\n parseAbiParameters(\n \"address[] guardians, uint24[] weights, uint24 threshold, uint48 delay\"\n ),\n [\n Object.keys(this.guardians) as Address[],\n Object.values(this.guardians),\n this.threshold,\n this.delaySeconds,\n ]\n );\n }\n\n encodeEnable(recoveryData: Hex): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"enable\",\n args: [recoveryData],\n });\n }\n\n encodeDisable(disableData: Hex = \"0x\"): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"disable\",\n args: [disableData],\n });\n }\n\n encodeApprove(callDataAndNonceHash: Hex, kernelAccountAddress: Address): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"approve\",\n args: [callDataAndNonceHash, kernelAccountAddress],\n });\n }\n\n encodeApproveWithSig(\n callDataAndNonceHash: Hex,\n kernelAccountAddress: Address,\n sigs: Hex\n ): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"approveWithSig\",\n args: [callDataAndNonceHash, kernelAccountAddress, sigs],\n });\n }\n\n encodeVeto(callDataAndNonceHash: Hex): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"veto\",\n args: [callDataAndNonceHash],\n });\n }\n\n encodeRecoveryAction(enableData: Hex, defaultValidatorAddress: Address): Hex {\n return encodeFunctionData({\n abi: RecoveryActionAbi,\n functionName: \"doRecovery\",\n args: [defaultValidatorAddress, enableData],\n });\n }\n\n static async fetchRecoveryConfigFromContract(\n kernelAccountAddress: Address,\n publicClient: PublicClient<Transport, Chain>\n ): Promise<RecoveryConfig> {\n try {\n const [, threshold, delaySeconds, firstGuardian] =\n await publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: RECOVERY_VALIDATOR_ADDRESS,\n functionName: \"weightedStorage\",\n args: [kernelAccountAddress],\n });\n\n const guardians: WeightedGuardians = {};\n\n let nextGuardian = firstGuardian;\n while (\n nextGuardian.toLowerCase() !== kernelAccountAddress.toLowerCase()\n ) {\n const guardianStorage = await publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: RECOVERY_VALIDATOR_ADDRESS,\n functionName: \"guardian\",\n args: [nextGuardian, kernelAccountAddress],\n });\n guardians[nextGuardian] = guardianStorage[0];\n nextGuardian = guardianStorage[1];\n }\n return {\n threshold,\n delaySeconds,\n guardians,\n };\n } catch (error) {\n throw Error(\"Failed to fetch config from contract\");\n }\n }\n\n async isPluginEnabled(\n kernelAccountAddress: Address,\n selector: Hex\n ): Promise<boolean> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n if (!this.publicClient) {\n throw new Error(\"Validator uninitialized: PublicClient missing\");\n }\n try {\n const kernel = getContract({\n abi: KernelAccountAbi,\n address: kernelAccountAddress,\n publicClient: this.publicClient,\n });\n const execDetail = await kernel.read.getExecution([selector]);\n const enableData = await this.publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: this.validatorAddress,\n functionName: \"weightedStorage\",\n args: [kernelAccountAddress],\n });\n\n return (\n execDetail.validator.toLowerCase() ===\n this.validatorAddress.toLowerCase() &&\n enableData[0] ===\n Object.values(this.guardians).reduce((a, c) => a + c, 0) &&\n enableData[1] === this.threshold &&\n enableData[2] === this.delaySeconds &&\n this.isGuardiansEnabled(kernelAccountAddress)\n );\n } catch (error) {\n return false;\n }\n }\n\n async isGuardiansEnabled(kernelAccountAddress: Address): Promise<boolean> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n const weightedValidator = getContract({\n abi: WeightedValidatorAbi,\n address: this.validatorAddress,\n publicClient: this.publicClient,\n });\n for (const [addr, weight] of Object.entries(this.guardians)) {\n const result = await weightedValidator.read.guardian([\n addr as Address,\n kernelAccountAddress,\n ]);\n if (result[0] !== weight) {\n return false;\n }\n }\n return true;\n }\n\n async getDummyUserOpSignature(): Promise<Hex> {\n let dummySignature: Hex = \"0x\";\n if (this.signatures) {\n const totalSigs = this.signatures.substring(2).length / 130;\n for (let i = 0; i < totalSigs; i++) {\n dummySignature = concatHex([dummySignature, DUMMY_ECDSA_SIG]);\n }\n // Hack - Fix this to not send original signatures\n return this.signatures;\n }\n return DUMMY_ECDSA_SIG;\n }\n\n async signMessage(message: string | Uint8Array): Promise<Hex> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return await this.accountSigner.signMessage(message);\n }\n\n async signTypedData(params: SignTypedDataParams): Promise<Hex> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return fixSignedData(await this.accountSigner.signTypedData(params));\n }\n\n async signRecoveryHash(recoveryHash: Hex): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n const signer = await this.signer();\n return await signer.signTypedData({\n domain: {\n name: \"WeightedECDSAValidator\",\n version: \"1\",\n chainId: this.chain.id,\n verifyingContract: this.validatorAddress,\n },\n types: {\n Approve: [{ name: \"callDataAndNonceHash\", type: \"bytes32\" }],\n },\n message: {\n callDataAndNonceHash: recoveryHash,\n },\n primaryType: \"Approve\",\n });\n }\n\n async signUserOp(_userOp: UserOperationRequest): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n return this.signatures ?? DUMMY_ECDSA_SIG;\n }\n}\n"]}
1
+ {"version":3,"file":"recovery-validator.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/recovery-validator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type Address,\n type Hex,\n type SmartAccountSigner,\n type UserOperationRequest,\n type SignTypedDataParams,\n} from \"@alchemy/aa-core\";\nimport {\n KernelBaseValidator,\n ValidatorMode,\n type KernelBaseValidatorParams,\n} from \"./base.js\";\nimport {\n concatHex,\n encodeAbiParameters,\n encodeFunctionData,\n getContract,\n parseAbiParameters,\n type LocalAccount,\n createWalletClient,\n type WalletClient,\n http,\n custom,\n type Transport,\n type Chain,\n type Account,\n publicActions,\n getFunctionSelector,\n type PublicClient,\n} from \"viem\";\nimport { WeightedValidatorAbi } from \"../abis/WeightedValidatorAbi.js\";\nimport { getChainId, getRecoveryData } from \"../api/index.js\";\nimport {\n CHAIN_ID_TO_NODE,\n DUMMY_ECDSA_SIG,\n RECOVERY_ACTION,\n RECOVERY_VALIDATOR_ADDRESS,\n} from \"../constants.js\";\nimport { KernelAccountAbi } from \"../abis/KernelAccountAbi.js\";\nimport { fixSignedData, getChain } from \"../utils.js\";\nimport type { EthereumProvider } from \"./types.js\";\nimport { polygonMumbai } from \"viem/chains\";\nimport { RecoveryActionAbi } from \"../abis/RecoveryActionAbi.js\";\n\ninterface WeightedGuardians {\n [guardian: Address]: number;\n}\nexport interface RecoveryValidatorParams extends KernelBaseValidatorParams {\n guardians?: WeightedGuardians;\n threshold?: number;\n delaySeconds?: number;\n accountSigner?: SmartAccountSigner;\n localAccountOrProvider?: LocalAccount<string> | EthereumProvider;\n walletClient?: WalletClient<Transport, Chain>;\n signatures?: Hex;\n recoveryId?: string;\n}\n\nexport type RecoveryConfig = Required<\n Pick<RecoveryValidatorParams, \"guardians\" | \"threshold\" | \"delaySeconds\">\n>;\n\nexport function isLocalAccount(account: any): account is LocalAccount<string> {\n return account && account.signTransaction !== undefined;\n}\n\nexport function isEthereumProvider(\n provider: any\n): provider is EthereumProvider {\n return provider && provider.request !== undefined;\n}\n\ntype WalletClientAccountType<T> = T extends LocalAccount<string>\n ? Account\n : T extends EthereumProvider\n ? undefined\n : never;\n\nexport const recoverySelector = getFunctionSelector(\n \"doRecovery(address, bytes)\"\n);\n\nexport class RecoveryValidator extends KernelBaseValidator {\n protected guardians?: WeightedGuardians;\n protected threshold?: number;\n protected delaySeconds: number;\n protected accountSigner?: SmartAccountSigner;\n protected localAccountOrProvider?: LocalAccount<string> | EthereumProvider;\n protected signatures?: Hex;\n protected recoveryId?: string;\n walletClient?: WalletClient<\n Transport,\n Chain,\n WalletClientAccountType<typeof this.localAccountOrProvider>\n >;\n\n constructor(params: RecoveryValidatorParams) {\n super(params);\n this.guardians = params.guardians;\n this.threshold = params.threshold;\n this.delaySeconds = params.delaySeconds ?? 0;\n this.accountSigner = params.accountSigner;\n this.mode = params.mode ?? ValidatorMode.plugin;\n this.localAccountOrProvider = params.localAccountOrProvider;\n this.signatures = params.signatures;\n this.validAfter = params.validAfter ?? 0;\n this.validUntil = params.validUntil ?? 0;\n this.executor = params.executor ?? RECOVERY_ACTION;\n this.selector = params.selector ?? recoverySelector;\n this.recoveryId = params.recoveryId;\n if (isLocalAccount(params.localAccountOrProvider)) {\n this.walletClient = createWalletClient({\n account: params.localAccountOrProvider,\n chain: this.chain ?? polygonMumbai,\n transport: http(CHAIN_ID_TO_NODE[this.chain?.id ?? polygonMumbai.id]),\n }).extend(publicActions);\n } else if (isEthereumProvider(params.localAccountOrProvider)) {\n this.walletClient = createWalletClient({\n chain: this.chain ?? polygonMumbai,\n transport: custom(params.localAccountOrProvider),\n }).extend(publicActions);\n } else if (params.walletClient) {\n this.walletClient = params.walletClient.extend(publicActions);\n } else if (params.localAccountOrProvider) {\n throw Error(\"Incorrect localAccountOrProvider type\");\n }\n }\n\n public static async init(\n params: RecoveryValidatorParams\n ): Promise<RecoveryValidator> {\n const chainId = await getChainId(params.projectId);\n if (!chainId) {\n throw new Error(\"ChainId not found\");\n }\n const chain = getChain(chainId);\n const instance = new RecoveryValidator({ ...params, chain });\n return instance;\n }\n\n getNonceKey(): bigint {\n return BigInt(this.validatorAddress);\n }\n\n setRecoverySignatures(signatures: Hex) {\n this.signatures = signatures;\n }\n\n async getRecoverySignatures(): Promise<Hex | undefined> {\n if (this.recoveryId) {\n const { signatures } = await getRecoveryData(this.recoveryId);\n this.setRecoverySignatures(signatures);\n }\n return this.signatures;\n }\n\n getRecoveryConfig(): RecoveryConfig {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n return {\n guardians: this.guardians,\n threshold: this.threshold,\n delaySeconds: this.delaySeconds,\n };\n }\n\n async signer(): Promise<SmartAccountSigner> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return await Promise.resolve(this.accountSigner);\n }\n\n async getEnableData(): Promise<Hex> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n return encodeAbiParameters(\n parseAbiParameters(\n \"address[] guardians, uint24[] weights, uint24 threshold, uint48 delay\"\n ),\n [\n Object.keys(this.guardians) as Address[],\n Object.values(this.guardians),\n this.threshold,\n this.delaySeconds,\n ]\n );\n }\n\n encodeEnable(recoveryData: Hex): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"enable\",\n args: [recoveryData],\n });\n }\n\n encodeDisable(disableData: Hex = \"0x\"): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"disable\",\n args: [disableData],\n });\n }\n\n encodeApprove(callDataAndNonceHash: Hex, kernelAccountAddress: Address): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"approve\",\n args: [callDataAndNonceHash, kernelAccountAddress],\n });\n }\n\n encodeApproveWithSig(\n callDataAndNonceHash: Hex,\n kernelAccountAddress: Address,\n sigs: Hex\n ): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"approveWithSig\",\n args: [callDataAndNonceHash, kernelAccountAddress, sigs],\n });\n }\n\n encodeVeto(callDataAndNonceHash: Hex): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"veto\",\n args: [callDataAndNonceHash],\n });\n }\n\n encodeRenew(\n guardians: Address[],\n weights: number[],\n threshold: number,\n delay: number\n ): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"renew\",\n args: [guardians, weights, threshold, delay],\n });\n }\n\n encodeRecoveryAction(enableData: Hex, defaultValidatorAddress: Address): Hex {\n return encodeFunctionData({\n abi: RecoveryActionAbi,\n functionName: \"doRecovery\",\n args: [defaultValidatorAddress, enableData],\n });\n }\n\n static async fetchRecoveryConfigFromContract(\n kernelAccountAddress: Address,\n publicClient: PublicClient<Transport, Chain>\n ): Promise<RecoveryConfig> {\n try {\n const [, threshold, delaySeconds, firstGuardian] =\n await publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: RECOVERY_VALIDATOR_ADDRESS,\n functionName: \"weightedStorage\",\n args: [kernelAccountAddress],\n });\n\n const guardians: WeightedGuardians = {};\n\n let nextGuardian = firstGuardian;\n while (\n nextGuardian.toLowerCase() !== kernelAccountAddress.toLowerCase()\n ) {\n const guardianStorage = await publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: RECOVERY_VALIDATOR_ADDRESS,\n functionName: \"guardian\",\n args: [nextGuardian, kernelAccountAddress],\n });\n guardians[nextGuardian] = guardianStorage[0];\n nextGuardian = guardianStorage[1];\n }\n return {\n threshold,\n delaySeconds,\n guardians,\n };\n } catch (error) {\n throw Error(\"Failed to fetch config from contract\");\n }\n }\n\n async isPluginEnabled(\n kernelAccountAddress: Address,\n selector: Hex\n ): Promise<boolean> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n if (!this.publicClient) {\n throw new Error(\"Validator uninitialized: PublicClient missing\");\n }\n try {\n const kernel = getContract({\n abi: KernelAccountAbi,\n address: kernelAccountAddress,\n publicClient: this.publicClient,\n });\n const execDetail = await kernel.read.getExecution([selector]);\n const enableData = await this.publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: this.validatorAddress,\n functionName: \"weightedStorage\",\n args: [kernelAccountAddress],\n });\n\n return (\n execDetail.validator.toLowerCase() ===\n this.validatorAddress.toLowerCase() &&\n enableData[0] ===\n Object.values(this.guardians).reduce((a, c) => a + c, 0) &&\n enableData[1] === this.threshold &&\n enableData[2] === this.delaySeconds &&\n this.isGuardiansEnabled(kernelAccountAddress)\n );\n } catch (error) {\n return false;\n }\n }\n\n async isGuardiansEnabled(kernelAccountAddress: Address): Promise<boolean> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n const weightedValidator = getContract({\n abi: WeightedValidatorAbi,\n address: this.validatorAddress,\n publicClient: this.publicClient,\n });\n for (const [addr, weight] of Object.entries(this.guardians)) {\n const result = await weightedValidator.read.guardian([\n addr as Address,\n kernelAccountAddress,\n ]);\n if (result[0] !== weight) {\n return false;\n }\n }\n return true;\n }\n\n async getDummyUserOpSignature(): Promise<Hex> {\n let dummySignature: Hex = \"0x\";\n if (this.signatures) {\n const totalSigs = this.signatures.substring(2).length / 130;\n for (let i = 0; i < totalSigs; i++) {\n dummySignature = concatHex([dummySignature, DUMMY_ECDSA_SIG]);\n }\n // Hack - Fix this to not send original signatures\n return this.signatures;\n }\n return DUMMY_ECDSA_SIG;\n }\n\n async signMessage(message: string | Uint8Array): Promise<Hex> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return await this.accountSigner.signMessage(message);\n }\n\n async signTypedData(params: SignTypedDataParams): Promise<Hex> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return fixSignedData(await this.accountSigner.signTypedData(params));\n }\n\n async signRecoveryHash(recoveryHash: Hex): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n const signer = await this.signer();\n return await signer.signTypedData({\n domain: {\n name: \"WeightedECDSAValidator\",\n version: \"0.0.1\",\n chainId: this.chain.id,\n verifyingContract: this.validatorAddress,\n },\n types: {\n Approve: [{ name: \"callDataAndNonceHash\", type: \"bytes32\" }],\n },\n message: {\n callDataAndNonceHash: recoveryHash,\n },\n primaryType: \"Approve\",\n });\n }\n\n async signUserOp(_userOp: UserOperationRequest): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n return this.signatures ?? DUMMY_ECDSA_SIG;\n }\n}\n"]}
@@ -14,6 +14,7 @@ export declare class RecoveryProvider extends ValidatorProvider<RecoveryValidato
14
14
  getDefaultValidator(): Promise<Address>;
15
15
  encodeCalldataAndNonce(enableData: Hex): Promise<Hex>;
16
16
  enableRecovery(): Promise<SendUserOperationResult>;
17
+ renewRecovery(): Promise<SendUserOperationResult>;
17
18
  initiateRecovery(enableData: Hex): Promise<string>;
18
19
  serializeRecoveryConfig(): string;
19
20
  static deserializeRecoveryConfig(recoveryConfig: string): RecoveryConfig;
@@ -4,7 +4,7 @@ import {} from "@alchemy/aa-core";
4
4
  import { getChainId, getRecoveryData, postRecoveryData, setSignatures, } from "../api/index.js";
5
5
  import { polygonMumbai } from "viem/chains";
6
6
  import { CHAIN_ID_TO_NODE, RECOVERY_VALIDATOR_ADDRESS } from "../constants.js";
7
- import { encodeAbiParameters, encodeFunctionData, parseAbiParameters, keccak256, publicActions, createPublicClient, http, } from "viem";
7
+ import { encodeAbiParameters, encodeFunctionData, parseAbiParameters, keccak256, publicActions, createPublicClient, http, decodeAbiParameters, } from "viem";
8
8
  import { RecoveryActionAbi } from "../abis/RecoveryActionAbi.js";
9
9
  import { KernelAccountAbi } from "../abis/KernelAccountAbi.js";
10
10
  import { base64ToBytes, bytesToBase64, getChain } from "../utils.js";
@@ -113,8 +113,9 @@ export class RecoveryProvider extends ValidatorProvider {
113
113
  functionName: "doRecovery",
114
114
  args: [defaultValidatorAddress, enableData],
115
115
  });
116
+ const sender = await this.getAddress();
116
117
  const nonce = await (await this.getAccount()).getNonce();
117
- const encodedCallDataAndNonce = encodeAbiParameters(parseAbiParameters("bytes calldata, uint256 nonce"), [callData, nonce]);
118
+ const encodedCallDataAndNonce = encodeAbiParameters(parseAbiParameters("address sender, bytes calldata, uint256 nonce"), [sender, callData, nonce]);
118
119
  return keccak256(encodedCallDataAndNonce);
119
120
  }
120
121
  async enableRecovery() {
@@ -132,6 +133,18 @@ export class RecoveryProvider extends ValidatorProvider {
132
133
  data: encodedSetExecData,
133
134
  });
134
135
  }
136
+ async renewRecovery() {
137
+ if (!this.defaultProvider) {
138
+ throw Error("DefaultProvider uninitilised");
139
+ }
140
+ const enableData = await this.getValidator().getEnableData();
141
+ const [guardians, weights, threshold, delay] = decodeAbiParameters(parseAbiParameters("address[] guardians, uint24[] weights, uint24 threshold, uint48 delay"), enableData);
142
+ const encodedRenewData = await this.getValidator().encodeRenew([...guardians], [...weights], threshold, delay);
143
+ return await this.defaultProvider.sendUserOperation({
144
+ target: this.getValidator().validatorAddress,
145
+ data: encodedRenewData,
146
+ });
147
+ }
135
148
  async initiateRecovery(enableData) {
136
149
  const serializedConfig = this.serializeRecoveryConfig();
137
150
  const recoveryId = await postRecoveryData(enableData, await this.getAddress(), serializedConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"recovery-provider.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator-provider/recovery-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ValidatorProvider,\n type ExtendedValidatorProviderParams,\n} from \"./base.js\";\nimport {\n RecoveryValidator,\n type RecoveryConfig,\n type RecoveryValidatorParams,\n} from \"../validator/recovery-validator.js\";\nimport { type Address, type SendUserOperationResult } from \"@alchemy/aa-core\";\nimport {\n getChainId,\n getRecoveryData,\n postRecoveryData,\n setSignatures,\n} from \"../api/index.js\";\nimport { polygonMumbai } from \"viem/chains\";\nimport { CHAIN_ID_TO_NODE, RECOVERY_VALIDATOR_ADDRESS } from \"../constants.js\";\nimport {\n encodeAbiParameters,\n encodeFunctionData,\n parseAbiParameters,\n type Hex,\n keccak256,\n publicActions,\n type TransactionReceipt,\n createPublicClient,\n http,\n} from \"viem\";\nimport { RecoveryActionAbi } from \"../abis/RecoveryActionAbi.js\";\nimport { KernelAccountAbi } from \"../abis/KernelAccountAbi.js\";\nimport { base64ToBytes, bytesToBase64, getChain } from \"../utils.js\";\n\nexport interface RecoveryProviderParams\n extends ExtendedValidatorProviderParams<RecoveryValidatorParams> {\n recoveryId?: string;\n enableData?: Hex;\n}\n\nexport class RecoveryProvider extends ValidatorProvider<\n RecoveryValidator,\n RecoveryValidatorParams\n> {\n recoveryId?: string;\n enableData?: Hex;\n constructor(params: RecoveryProviderParams) {\n const chain =\n typeof params.opts?.providerConfig?.chain === \"number\"\n ? getChain(params.opts.providerConfig.chain)\n : params.opts?.providerConfig?.chain ?? polygonMumbai;\n const validator = new RecoveryValidator({\n projectId: params.projectId,\n chain,\n recoveryId: params.recoveryId,\n validatorAddress:\n params.opts?.validatorConfig?.validatorAddress ??\n RECOVERY_VALIDATOR_ADDRESS,\n ...params.opts?.validatorConfig,\n });\n super(\n {\n ...params,\n opts: {\n ...params.opts,\n providerConfig: { ...params.opts?.providerConfig, chain },\n },\n },\n validator\n );\n this.recoveryId = params.recoveryId;\n this.enableData = params.enableData;\n }\n\n public static async init(\n params: RecoveryProviderParams\n ): Promise<RecoveryProvider> {\n const chainId = await getChainId(params.projectId);\n if (!chainId) {\n throw new Error(\"ChainId not found\");\n }\n const chain = getChain(chainId);\n let accountAddress,\n enableData,\n signatures,\n serializedRecoveryConfig,\n recoveryConfig;\n if (params.recoveryId) {\n ({\n scwAddress: accountAddress,\n enableData,\n recoveryConfig: serializedRecoveryConfig,\n signatures,\n } = await getRecoveryData(params.recoveryId));\n recoveryConfig = RecoveryProvider.deserializeRecoveryConfig(\n serializedRecoveryConfig\n );\n } else if (\n params.opts?.accountConfig?.accountAddress &&\n (!params.opts?.validatorConfig?.guardians ||\n !Object.entries(params.opts?.validatorConfig?.guardians).length ||\n params.opts.validatorConfig.threshold === undefined)\n ) {\n const publicClient = createPublicClient({\n transport: http(CHAIN_ID_TO_NODE[chain?.id ?? polygonMumbai.id]),\n chain: chain ?? polygonMumbai,\n });\n recoveryConfig = await RecoveryValidator.fetchRecoveryConfigFromContract(\n params.opts?.accountConfig?.accountAddress,\n publicClient\n );\n }\n const instance = new RecoveryProvider({\n enableData,\n ...params,\n opts: {\n ...params.opts,\n providerConfig: {\n chain,\n ...params.opts?.providerConfig,\n },\n accountConfig: {\n accountAddress,\n ...params.opts?.accountConfig,\n },\n validatorConfig: {\n signatures,\n ...recoveryConfig,\n ...params.opts?.validatorConfig,\n },\n },\n });\n return instance;\n }\n\n async getDefaultValidator(): Promise<Address> {\n const publicClient = this.getValidator().getPublicClient();\n const kernelAccountAddress = await this.getAddress();\n return await publicClient.readContract({\n abi: KernelAccountAbi,\n address: kernelAccountAddress,\n functionName: \"getDefaultValidator\",\n });\n }\n\n async encodeCalldataAndNonce(enableData: Hex): Promise<Hex> {\n const defaultValidatorAddress = await this.getDefaultValidator();\n const callData = encodeFunctionData({\n abi: RecoveryActionAbi,\n functionName: \"doRecovery\",\n args: [defaultValidatorAddress, enableData],\n });\n const nonce = await (await this.getAccount()).getNonce();\n const encodedCallDataAndNonce = encodeAbiParameters(\n parseAbiParameters(\"bytes calldata, uint256 nonce\"),\n [callData, nonce]\n );\n return keccak256(encodedCallDataAndNonce);\n }\n\n async enableRecovery(): Promise<SendUserOperationResult> {\n if (!this.defaultProvider) {\n throw Error(\"DefaultProvider uninitilised\");\n }\n const { selector } = await this.getValidator().getPluginValidatorData();\n const kernelAccountAddress = await this.defaultProvider.getAddress();\n const encodedSetExecData = await this.getAccount().encodeSetExection();\n if (\n await this.getValidator().isPluginEnabled(kernelAccountAddress, selector)\n ) {\n throw Error(\"Plugin already enabled\");\n }\n return await this.defaultProvider.sendUserOperation({\n target: kernelAccountAddress,\n data: encodedSetExecData,\n });\n }\n\n async initiateRecovery(enableData: Hex): Promise<string> {\n const serializedConfig = this.serializeRecoveryConfig();\n const recoveryId = await postRecoveryData(\n enableData,\n await this.getAddress(),\n serializedConfig\n );\n console.log(recoveryId);\n this.enableData = enableData;\n if (!recoveryId) {\n throw Error(\"Unable to generate the recoveryId\");\n }\n return recoveryId;\n }\n\n serializeRecoveryConfig(): string {\n let recoveryConfig = this.getValidator().getRecoveryConfig();\n const jsonString = JSON.stringify(recoveryConfig);\n const uint8Array = new TextEncoder().encode(jsonString);\n const base64String = bytesToBase64(uint8Array);\n return base64String;\n }\n\n public static deserializeRecoveryConfig(\n recoveryConfig: string\n ): RecoveryConfig {\n const uint8Array = base64ToBytes(recoveryConfig);\n const jsonString = new TextDecoder().decode(uint8Array);\n return JSON.parse(jsonString) as RecoveryConfig;\n }\n\n async approveRecovery(enableData?: Hex): Promise<TransactionReceipt> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const kernelAccountAddress = await this.getAddress();\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const validator = this.getValidator();\n if (!validator.walletClient) {\n throw Error(\"WalletClient uninitialized\");\n }\n const walletClient = validator.walletClient.extend(publicActions);\n let account;\n if (walletClient.account) {\n account = walletClient.account;\n } else {\n [account] = await walletClient.requestAddresses();\n }\n const hash = await walletClient.sendTransaction({\n account,\n to: validator.getAddress(),\n data: validator.encodeApprove(\n callDataAndNonceHash!,\n kernelAccountAddress!\n ),\n });\n return await walletClient.waitForTransactionReceipt({ hash });\n }\n\n async signRecovery(enableData?: Hex) {\n try {\n if (!this.recoveryId) {\n throw Error(\"RecoveryId not set\");\n }\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const sig = await this.getValidator().signRecoveryHash(\n callDataAndNonceHash\n );\n const { result, data } = await setSignatures(this.recoveryId, sig);\n if (result !== \"success\") {\n throw Error(\"Failed to save the signatures\");\n }\n this.getValidator().setRecoverySignatures(data.signatures);\n } catch (error) {\n console.log(error);\n }\n }\n\n async approveRecoveryWithSig(\n enableData?: Hex,\n sigs?: Hex\n ): Promise<TransactionReceipt> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const signatures =\n sigs ?? (await this.getValidator().getRecoverySignatures());\n if (!signatures) {\n throw Error(\"Signatures are not set\");\n }\n const kernelAccountAddress = await this.getAddress();\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const validator = this.getValidator();\n if (!validator.walletClient) {\n throw Error(\"WalletClient uninitilized\");\n }\n const walletClient = validator.walletClient.extend(publicActions);\n let account;\n if (walletClient.account) {\n account = walletClient.account;\n } else {\n [account] = await walletClient.requestAddresses();\n }\n const hash = await walletClient.sendTransaction({\n account,\n to: validator.getAddress(),\n data: validator.encodeApproveWithSig(\n callDataAndNonceHash,\n kernelAccountAddress,\n sigs!\n ),\n });\n return await walletClient.waitForTransactionReceipt({ hash });\n }\n\n async cancelRecovery(enableData?: Hex): Promise<SendUserOperationResult> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n if (!this.defaultProvider) {\n throw Error(\"DefaultProvider uninitilised\");\n }\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const encodedVetoData = await this.getValidator().encodeVeto(\n callDataAndNonceHash\n );\n\n return await this.defaultProvider.sendUserOperation({\n target: this.getValidator().validatorAddress,\n data: encodedVetoData,\n });\n }\n\n async submitRecovery(enableData?: Hex): Promise<SendUserOperationResult> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const defaultValidatorAddress = await this.getDefaultValidator();\n const encodedRecoveryActionData =\n await this.getValidator().encodeRecoveryAction(\n fetchedEnableData,\n defaultValidatorAddress\n );\n\n return await this.sendUserOperation({\n target: await this.getAddress(),\n data: encodedRecoveryActionData,\n });\n }\n\n // [TODO]\n // changeGuardian = this.sendEnableUserOperation;\n\n deleteRecoveryData = this.sendDisableUserOperation;\n}\n"]}
1
+ {"version":3,"file":"recovery-provider.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator-provider/recovery-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ValidatorProvider,\n type ExtendedValidatorProviderParams,\n} from \"./base.js\";\nimport {\n RecoveryValidator,\n type RecoveryConfig,\n type RecoveryValidatorParams,\n} from \"../validator/recovery-validator.js\";\nimport { type Address, type SendUserOperationResult } from \"@alchemy/aa-core\";\nimport {\n getChainId,\n getRecoveryData,\n postRecoveryData,\n setSignatures,\n} from \"../api/index.js\";\nimport { polygonMumbai } from \"viem/chains\";\nimport { CHAIN_ID_TO_NODE, RECOVERY_VALIDATOR_ADDRESS } from \"../constants.js\";\nimport {\n encodeAbiParameters,\n encodeFunctionData,\n parseAbiParameters,\n type Hex,\n keccak256,\n publicActions,\n type TransactionReceipt,\n createPublicClient,\n http,\n decodeAbiParameters,\n} from \"viem\";\nimport { RecoveryActionAbi } from \"../abis/RecoveryActionAbi.js\";\nimport { KernelAccountAbi } from \"../abis/KernelAccountAbi.js\";\nimport { base64ToBytes, bytesToBase64, getChain } from \"../utils.js\";\n\nexport interface RecoveryProviderParams\n extends ExtendedValidatorProviderParams<RecoveryValidatorParams> {\n recoveryId?: string;\n enableData?: Hex;\n}\n\nexport class RecoveryProvider extends ValidatorProvider<\n RecoveryValidator,\n RecoveryValidatorParams\n> {\n recoveryId?: string;\n enableData?: Hex;\n constructor(params: RecoveryProviderParams) {\n const chain =\n typeof params.opts?.providerConfig?.chain === \"number\"\n ? getChain(params.opts.providerConfig.chain)\n : params.opts?.providerConfig?.chain ?? polygonMumbai;\n const validator = new RecoveryValidator({\n projectId: params.projectId,\n chain,\n recoveryId: params.recoveryId,\n validatorAddress:\n params.opts?.validatorConfig?.validatorAddress ??\n RECOVERY_VALIDATOR_ADDRESS,\n ...params.opts?.validatorConfig,\n });\n super(\n {\n ...params,\n opts: {\n ...params.opts,\n providerConfig: { ...params.opts?.providerConfig, chain },\n },\n },\n validator\n );\n this.recoveryId = params.recoveryId;\n this.enableData = params.enableData;\n }\n\n public static async init(\n params: RecoveryProviderParams\n ): Promise<RecoveryProvider> {\n const chainId = await getChainId(params.projectId);\n if (!chainId) {\n throw new Error(\"ChainId not found\");\n }\n const chain = getChain(chainId);\n let accountAddress,\n enableData,\n signatures,\n serializedRecoveryConfig,\n recoveryConfig;\n if (params.recoveryId) {\n ({\n scwAddress: accountAddress,\n enableData,\n recoveryConfig: serializedRecoveryConfig,\n signatures,\n } = await getRecoveryData(params.recoveryId));\n recoveryConfig = RecoveryProvider.deserializeRecoveryConfig(\n serializedRecoveryConfig\n );\n } else if (\n params.opts?.accountConfig?.accountAddress &&\n (!params.opts?.validatorConfig?.guardians ||\n !Object.entries(params.opts?.validatorConfig?.guardians).length ||\n params.opts.validatorConfig.threshold === undefined)\n ) {\n const publicClient = createPublicClient({\n transport: http(CHAIN_ID_TO_NODE[chain?.id ?? polygonMumbai.id]),\n chain: chain ?? polygonMumbai,\n });\n recoveryConfig = await RecoveryValidator.fetchRecoveryConfigFromContract(\n params.opts?.accountConfig?.accountAddress,\n publicClient\n );\n }\n const instance = new RecoveryProvider({\n enableData,\n ...params,\n opts: {\n ...params.opts,\n providerConfig: {\n chain,\n ...params.opts?.providerConfig,\n },\n accountConfig: {\n accountAddress,\n ...params.opts?.accountConfig,\n },\n validatorConfig: {\n signatures,\n ...recoveryConfig,\n ...params.opts?.validatorConfig,\n },\n },\n });\n return instance;\n }\n\n async getDefaultValidator(): Promise<Address> {\n const publicClient = this.getValidator().getPublicClient();\n const kernelAccountAddress = await this.getAddress();\n return await publicClient.readContract({\n abi: KernelAccountAbi,\n address: kernelAccountAddress,\n functionName: \"getDefaultValidator\",\n });\n }\n\n async encodeCalldataAndNonce(enableData: Hex): Promise<Hex> {\n const defaultValidatorAddress = await this.getDefaultValidator();\n const callData = encodeFunctionData({\n abi: RecoveryActionAbi,\n functionName: \"doRecovery\",\n args: [defaultValidatorAddress, enableData],\n });\n const sender = await this.getAddress();\n const nonce = await (await this.getAccount()).getNonce();\n const encodedCallDataAndNonce = encodeAbiParameters(\n parseAbiParameters(\"address sender, bytes calldata, uint256 nonce\"),\n [sender, callData, nonce]\n );\n return keccak256(encodedCallDataAndNonce);\n }\n\n async enableRecovery(): Promise<SendUserOperationResult> {\n if (!this.defaultProvider) {\n throw Error(\"DefaultProvider uninitilised\");\n }\n const { selector } = await this.getValidator().getPluginValidatorData();\n const kernelAccountAddress = await this.defaultProvider.getAddress();\n const encodedSetExecData = await this.getAccount().encodeSetExection();\n if (\n await this.getValidator().isPluginEnabled(kernelAccountAddress, selector)\n ) {\n throw Error(\"Plugin already enabled\");\n }\n return await this.defaultProvider.sendUserOperation({\n target: kernelAccountAddress,\n data: encodedSetExecData,\n });\n }\n\n async renewRecovery(): Promise<SendUserOperationResult> {\n if (!this.defaultProvider) {\n throw Error(\"DefaultProvider uninitilised\");\n }\n const enableData = await this.getValidator().getEnableData();\n const [guardians, weights, threshold, delay] = decodeAbiParameters(\n parseAbiParameters(\n \"address[] guardians, uint24[] weights, uint24 threshold, uint48 delay\"\n ),\n enableData\n );\n const encodedRenewData = await this.getValidator().encodeRenew(\n [...guardians],\n [...weights],\n threshold,\n delay\n );\n return await this.defaultProvider.sendUserOperation({\n target: this.getValidator().validatorAddress,\n data: encodedRenewData,\n });\n }\n\n async initiateRecovery(enableData: Hex): Promise<string> {\n const serializedConfig = this.serializeRecoveryConfig();\n const recoveryId = await postRecoveryData(\n enableData,\n await this.getAddress(),\n serializedConfig\n );\n console.log(recoveryId);\n this.enableData = enableData;\n if (!recoveryId) {\n throw Error(\"Unable to generate the recoveryId\");\n }\n return recoveryId;\n }\n\n serializeRecoveryConfig(): string {\n let recoveryConfig = this.getValidator().getRecoveryConfig();\n const jsonString = JSON.stringify(recoveryConfig);\n const uint8Array = new TextEncoder().encode(jsonString);\n const base64String = bytesToBase64(uint8Array);\n return base64String;\n }\n\n public static deserializeRecoveryConfig(\n recoveryConfig: string\n ): RecoveryConfig {\n const uint8Array = base64ToBytes(recoveryConfig);\n const jsonString = new TextDecoder().decode(uint8Array);\n return JSON.parse(jsonString) as RecoveryConfig;\n }\n\n async approveRecovery(enableData?: Hex): Promise<TransactionReceipt> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const kernelAccountAddress = await this.getAddress();\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const validator = this.getValidator();\n if (!validator.walletClient) {\n throw Error(\"WalletClient uninitialized\");\n }\n const walletClient = validator.walletClient.extend(publicActions);\n let account;\n if (walletClient.account) {\n account = walletClient.account;\n } else {\n [account] = await walletClient.requestAddresses();\n }\n const hash = await walletClient.sendTransaction({\n account,\n to: validator.getAddress(),\n data: validator.encodeApprove(\n callDataAndNonceHash!,\n kernelAccountAddress!\n ),\n });\n return await walletClient.waitForTransactionReceipt({ hash });\n }\n\n async signRecovery(enableData?: Hex) {\n try {\n if (!this.recoveryId) {\n throw Error(\"RecoveryId not set\");\n }\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const sig = await this.getValidator().signRecoveryHash(\n callDataAndNonceHash\n );\n const { result, data } = await setSignatures(this.recoveryId, sig);\n if (result !== \"success\") {\n throw Error(\"Failed to save the signatures\");\n }\n this.getValidator().setRecoverySignatures(data.signatures);\n } catch (error) {\n console.log(error);\n }\n }\n\n async approveRecoveryWithSig(\n enableData?: Hex,\n sigs?: Hex\n ): Promise<TransactionReceipt> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const signatures =\n sigs ?? (await this.getValidator().getRecoverySignatures());\n if (!signatures) {\n throw Error(\"Signatures are not set\");\n }\n const kernelAccountAddress = await this.getAddress();\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const validator = this.getValidator();\n if (!validator.walletClient) {\n throw Error(\"WalletClient uninitilized\");\n }\n const walletClient = validator.walletClient.extend(publicActions);\n let account;\n if (walletClient.account) {\n account = walletClient.account;\n } else {\n [account] = await walletClient.requestAddresses();\n }\n const hash = await walletClient.sendTransaction({\n account,\n to: validator.getAddress(),\n data: validator.encodeApproveWithSig(\n callDataAndNonceHash,\n kernelAccountAddress,\n sigs!\n ),\n });\n return await walletClient.waitForTransactionReceipt({ hash });\n }\n\n async cancelRecovery(enableData?: Hex): Promise<SendUserOperationResult> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n if (!this.defaultProvider) {\n throw Error(\"DefaultProvider uninitilised\");\n }\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const encodedVetoData = await this.getValidator().encodeVeto(\n callDataAndNonceHash\n );\n\n return await this.defaultProvider.sendUserOperation({\n target: this.getValidator().validatorAddress,\n data: encodedVetoData,\n });\n }\n\n async submitRecovery(enableData?: Hex): Promise<SendUserOperationResult> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const defaultValidatorAddress = await this.getDefaultValidator();\n const encodedRecoveryActionData =\n await this.getValidator().encodeRecoveryAction(\n fetchedEnableData,\n defaultValidatorAddress\n );\n\n return await this.sendUserOperation({\n target: await this.getAddress(),\n data: encodedRecoveryActionData,\n });\n }\n\n // [TODO]\n // changeGuardian = this.sendEnableUserOperation;\n\n deleteRecoveryData = this.sendDisableUserOperation;\n}\n"]}
@@ -1,4 +1,8 @@
1
1
  export declare const WeightedValidatorAbi: readonly [{
2
+ readonly inputs: readonly [];
3
+ readonly name: "NotImplemented";
4
+ readonly type: "error";
5
+ }, {
2
6
  readonly inputs: readonly [{
3
7
  readonly internalType: "bytes32";
4
8
  readonly name: "_callDataAndNonceHash";
@@ -84,6 +88,28 @@ export declare const WeightedValidatorAbi: readonly [{
84
88
  readonly outputs: readonly [];
85
89
  readonly stateMutability: "payable";
86
90
  readonly type: "function";
91
+ }, {
92
+ readonly inputs: readonly [{
93
+ readonly internalType: "address";
94
+ readonly name: "kernel";
95
+ readonly type: "address";
96
+ }, {
97
+ readonly internalType: "bytes32";
98
+ readonly name: "hash";
99
+ readonly type: "bytes32";
100
+ }];
101
+ readonly name: "getApproval";
102
+ readonly outputs: readonly [{
103
+ readonly internalType: "uint256";
104
+ readonly name: "approvals";
105
+ readonly type: "uint256";
106
+ }, {
107
+ readonly internalType: "bool";
108
+ readonly name: "passed";
109
+ readonly type: "bool";
110
+ }];
111
+ readonly stateMutability: "view";
112
+ readonly type: "function";
87
113
  }, {
88
114
  readonly inputs: readonly [{
89
115
  readonly internalType: "address";
@@ -125,12 +151,30 @@ export declare const WeightedValidatorAbi: readonly [{
125
151
  readonly internalType: "ValidAfter";
126
152
  readonly name: "validAfter";
127
153
  readonly type: "uint48";
154
+ }];
155
+ readonly stateMutability: "view";
156
+ readonly type: "function";
157
+ }, {
158
+ readonly inputs: readonly [{
159
+ readonly internalType: "address[]";
160
+ readonly name: "_guardians";
161
+ readonly type: "address[]";
162
+ }, {
163
+ readonly internalType: "uint24[]";
164
+ readonly name: "_weights";
165
+ readonly type: "uint24[]";
128
166
  }, {
129
167
  readonly internalType: "uint24";
130
- readonly name: "weightApproved";
168
+ readonly name: "_threshold";
131
169
  readonly type: "uint24";
170
+ }, {
171
+ readonly internalType: "uint48";
172
+ readonly name: "_delay";
173
+ readonly type: "uint48";
132
174
  }];
133
- readonly stateMutability: "view";
175
+ readonly name: "renew";
176
+ readonly outputs: readonly [];
177
+ readonly stateMutability: "payable";
134
178
  readonly type: "function";
135
179
  }, {
136
180
  readonly inputs: readonly [{
@@ -148,16 +192,16 @@ export declare const WeightedValidatorAbi: readonly [{
148
192
  readonly name: "";
149
193
  readonly type: "bool";
150
194
  }];
151
- readonly stateMutability: "view";
195
+ readonly stateMutability: "pure";
152
196
  readonly type: "function";
153
197
  }, {
154
198
  readonly inputs: readonly [{
155
199
  readonly internalType: "bytes32";
156
- readonly name: "hash";
200
+ readonly name: "";
157
201
  readonly type: "bytes32";
158
202
  }, {
159
203
  readonly internalType: "bytes";
160
- readonly name: "signature";
204
+ readonly name: "";
161
205
  readonly type: "bytes";
162
206
  }];
163
207
  readonly name: "validateSignature";
@@ -166,7 +210,7 @@ export declare const WeightedValidatorAbi: readonly [{
166
210
  readonly name: "";
167
211
  readonly type: "uint256";
168
212
  }];
169
- readonly stateMutability: "view";
213
+ readonly stateMutability: "pure";
170
214
  readonly type: "function";
171
215
  }, {
172
216
  readonly inputs: readonly [{
@@ -220,11 +264,11 @@ export declare const WeightedValidatorAbi: readonly [{
220
264
  readonly type: "tuple";
221
265
  }, {
222
266
  readonly internalType: "bytes32";
223
- readonly name: "userOpHash";
267
+ readonly name: "";
224
268
  readonly type: "bytes32";
225
269
  }, {
226
270
  readonly internalType: "uint256";
227
- readonly name: "missingFunds";
271
+ readonly name: "";
228
272
  readonly type: "uint256";
229
273
  }];
230
274
  readonly name: "validateUserOp";
@@ -1 +1 @@
1
- {"version":3,"file":"WeightedValidatorAbi.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/abis/WeightedValidatorAbi.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgYvB,CAAC"}
1
+ {"version":3,"file":"WeightedValidatorAbi.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/abis/WeightedValidatorAbi.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAybvB,CAAC"}
@@ -2,7 +2,7 @@ import { type Hex } from "viem";
2
2
  import type { IGasTokenAddresses } from "./paymaster/types.js";
3
3
  export declare const DEFAULT_SEND_TX_MAX_RETRIES = 3;
4
4
  export declare const DEFAULT_SEND_TX_RETRY_INTERVAL_MS = 60000;
5
- export declare const BUNDLER_URL = "https://v0-6-meta-bundler.onrender.com";
5
+ export declare const BUNDLER_URL = "https://meta-aa-provider.onrender.com/api/v1/bundler";
6
6
  export declare const PAYMASTER_URL = "https://meta-aa-provider.onrender.com/api/v1/paymaster";
7
7
  export declare const ENTRYPOINT_ADDRESS: Hex;
8
8
  export declare const MULTISEND_ADDR: Hex;
@@ -17,7 +17,7 @@ export declare const DUMMY_ECDSA_SIG = "0xfffffffffffffffffffffffffffffff0000000
17
17
  export declare const ERC165_SESSION_KEY_VALIDATOR_ADDRESS = "0xe149290800De29D4b0BF9dB82c508255D81902E6";
18
18
  export declare const TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1";
19
19
  export declare const SESSION_KEY_VALIDATOR_ADDRESS = "0xB8E3c4bEaACAd06f6092793012DA4a8cB23D6123";
20
- export declare const RECOVERY_VALIDATOR_ADDRESS = "0x4fd47D861c349bD49DC61341a922cb72F9dF7E8d";
20
+ export declare const RECOVERY_VALIDATOR_ADDRESS = "0xA60dA4E29A27F9510AC37faE3706EaEb1d55e8d6";
21
21
  export declare const RECOVERY_ACTION = "0x2f65dB8039fe5CAEE0a8680D2879deB800F31Ae1";
22
22
  export declare const oneAddress = "0x0000000000000000000000000000000000000001";
23
23
  export declare const gasTokenChainAddresses: IGasTokenAddresses;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/kernel-zerodev/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,iCAAiC,QAAQ,CAAC;AACvD,eAAO,MAAM,WAAW,2CAA2C,CAAC;AACpE,eAAO,MAAM,aAAa,2DACgC,CAAC;AAC3D,eAAO,MAAM,kBAAkB,EAAE,GACa,CAAC;AAC/C,eAAO,MAAM,cAAc,EAAE,GAAkD,CAAC;AAChF,eAAO,MAAM,WAAW,sCAAsC,CAAC;AAC/D,eAAO,MAAM,OAAO,iCAAiC,CAAC;AACtD,eAAO,MAAM,uBAAuB,+CACU,CAAC;AAC/C,eAAO,MAAM,sBAAsB,+CACW,CAAC;AAC/C,eAAO,MAAM,mBAAmB,+CAA+C,CAAC;AAChF,eAAO,MAAM,6BAA6B,+CACI,CAAC;AAC/C,eAAO,MAAM,kBAAkB,+CAA+C,CAAC;AAC/E,eAAO,MAAM,eAAe,yIAC4G,CAAC;AACzI,eAAO,MAAM,oCAAoC,+CACH,CAAC;AAC/C,eAAO,MAAM,YAAY,+CAA+C,CAAC;AACzE,eAAO,MAAM,6BAA6B,+CACI,CAAC;AAC/C,eAAO,MAAM,0BAA0B,+CACO,CAAC;AAC/C,eAAO,MAAM,eAAe,+CAA+C,CAAC;AAC5E,eAAO,MAAM,UAAU,+CAA+C,CAAC;AAEvE,eAAO,MAAM,sBAAsB,EAAE,kBAiBpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAoB1D,CAAC;AAEF,eAAO,MAAM,4BAA4B,qBAEvC,CAAC;AAEH,eAAO,MAAM,cAAc,qCAAqC,CAAC;AACjE,eAAO,MAAM,gBAAgB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CA4BrD,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/kernel-zerodev/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,iCAAiC,QAAQ,CAAC;AACvD,eAAO,MAAM,WAAW,yDACgC,CAAC;AACzD,eAAO,MAAM,aAAa,2DACgC,CAAC;AAC3D,eAAO,MAAM,kBAAkB,EAAE,GACa,CAAC;AAC/C,eAAO,MAAM,cAAc,EAAE,GAAkD,CAAC;AAChF,eAAO,MAAM,WAAW,sCAAsC,CAAC;AAC/D,eAAO,MAAM,OAAO,iCAAiC,CAAC;AACtD,eAAO,MAAM,uBAAuB,+CACU,CAAC;AAC/C,eAAO,MAAM,sBAAsB,+CACW,CAAC;AAC/C,eAAO,MAAM,mBAAmB,+CAA+C,CAAC;AAChF,eAAO,MAAM,6BAA6B,+CACI,CAAC;AAC/C,eAAO,MAAM,kBAAkB,+CAA+C,CAAC;AAC/E,eAAO,MAAM,eAAe,yIAC4G,CAAC;AACzI,eAAO,MAAM,oCAAoC,+CACH,CAAC;AAC/C,eAAO,MAAM,YAAY,+CAA+C,CAAC;AACzE,eAAO,MAAM,6BAA6B,+CACI,CAAC;AAC/C,eAAO,MAAM,0BAA0B,+CACO,CAAC;AAC/C,eAAO,MAAM,eAAe,+CAA+C,CAAC;AAC5E,eAAO,MAAM,UAAU,+CAA+C,CAAC;AAEvE,eAAO,MAAM,sBAAsB,EAAE,kBAiBpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAoB1D,CAAC;AAEF,eAAO,MAAM,4BAA4B,qBAEvC,CAAC;AAEH,eAAO,MAAM,cAAc,qCAAqC,CAAC;AACjE,eAAO,MAAM,gBAAgB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CA4BrD,CAAC"}
@@ -42,6 +42,7 @@ export declare class RecoveryValidator extends KernelBaseValidator {
42
42
  encodeApprove(callDataAndNonceHash: Hex, kernelAccountAddress: Address): Hex;
43
43
  encodeApproveWithSig(callDataAndNonceHash: Hex, kernelAccountAddress: Address, sigs: Hex): Hex;
44
44
  encodeVeto(callDataAndNonceHash: Hex): Hex;
45
+ encodeRenew(guardians: Address[], weights: number[], threshold: number, delay: number): Hex;
45
46
  encodeRecoveryAction(enableData: Hex, defaultValidatorAddress: Address): Hex;
46
47
  static fetchRecoveryConfigFromContract(kernelAccountAddress: Address, publicClient: PublicClient<Transport, Chain>): Promise<RecoveryConfig>;
47
48
  isPluginEnabled(kernelAccountAddress: Address, selector: Hex): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"recovery-validator.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/recovery-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recovery-validator.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/recovery-validator.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ export declare class RecoveryProvider extends ValidatorProvider<RecoveryValidato
14
14
  getDefaultValidator(): Promise<Address>;
15
15
  encodeCalldataAndNonce(enableData: Hex): Promise<Hex>;
16
16
  enableRecovery(): Promise<SendUserOperationResult>;
17
+ renewRecovery(): Promise<SendUserOperationResult>;
17
18
  initiateRecovery(enableData: Hex): Promise<string>;
18
19
  serializeRecoveryConfig(): string;
19
20
  static deserializeRecoveryConfig(recoveryConfig: string): RecoveryConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"recovery-provider.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator-provider/recovery-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,+BAA+B,EACrC,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAS9E,OAAO,EAIL,KAAK,GAAG,EAGR,KAAK,kBAAkB,EAGxB,MAAM,MAAM,CAAC;AAKd,MAAM,WAAW,sBACf,SAAQ,+BAA+B,CAAC,uBAAuB,CAAC;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB;AAED,qBAAa,gBAAiB,SAAQ,iBAAiB,CACrD,iBAAiB,EACjB,uBAAuB,CACxB;IACC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;gBACL,MAAM,EAAE,sBAAsB;WA4BtB,IAAI,CACtB,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,gBAAgB,CAAC;IA2DtB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUvC,sBAAsB,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAerD,cAAc,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAkBlD,gBAAgB,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAexD,uBAAuB,IAAI,MAAM;WAQnB,yBAAyB,CACrC,cAAc,EAAE,MAAM,GACrB,cAAc;IAMX,eAAe,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA+B9D,YAAY,CAAC,UAAU,CAAC,EAAE,GAAG;IAyB7B,sBAAsB,CAC1B,UAAU,CAAC,EAAE,GAAG,EAChB,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,kBAAkB,CAAC;IAqCxB,cAAc,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAqBlE,cAAc,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAqBxE,kBAAkB,oEAAiC;CACpD"}
1
+ {"version":3,"file":"recovery-provider.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator-provider/recovery-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,+BAA+B,EACrC,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAS9E,OAAO,EAIL,KAAK,GAAG,EAGR,KAAK,kBAAkB,EAIxB,MAAM,MAAM,CAAC;AAKd,MAAM,WAAW,sBACf,SAAQ,+BAA+B,CAAC,uBAAuB,CAAC;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB;AAED,qBAAa,gBAAiB,SAAQ,iBAAiB,CACrD,iBAAiB,EACjB,uBAAuB,CACxB;IACC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;gBACL,MAAM,EAAE,sBAAsB;WA4BtB,IAAI,CACtB,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,gBAAgB,CAAC;IA2DtB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUvC,sBAAsB,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAgBrD,cAAc,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAkBlD,aAAa,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAuBjD,gBAAgB,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAexD,uBAAuB,IAAI,MAAM;WAQnB,yBAAyB,CACrC,cAAc,EAAE,MAAM,GACrB,cAAc;IAMX,eAAe,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA+B9D,YAAY,CAAC,UAAU,CAAC,EAAE,GAAG;IAyB7B,sBAAsB,CAC1B,UAAU,CAAC,EAAE,GAAG,EAChB,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,kBAAkB,CAAC;IAqCxB,cAAc,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAqBlE,cAAc,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAqBxE,kBAAkB,oEAAiC;CACpD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zerodev/sdk",
3
- "version": "4.3.4",
3
+ "version": "4.4.1",
4
4
  "description": "A collection of ERC-4337 compliant smart contract account interfaces",
5
5
  "author": "ZeroDev",
6
6
  "license": "MIT",
@@ -15,4 +15,5 @@ export const config = {
15
15
  // To make all the testcases pass
16
16
  projectId: "8db3f9f0-f8d0-4c69-9bc6-5c522ee25844",
17
17
  projectIdWithGasSponsorship: "c73037ef-8c0b-48be-a581-1f3d161151d3",
18
+ testERC20Address: "0x3870419Ba2BBf0127060bCB37f69A1b1C090992B" as Hex,
18
19
  };
@@ -1,4 +1,9 @@
1
1
  export const WeightedValidatorAbi = [
2
+ {
3
+ inputs: [],
4
+ name: "NotImplemented",
5
+ type: "error",
6
+ },
2
7
  {
3
8
  inputs: [
4
9
  {
@@ -109,6 +114,35 @@ export const WeightedValidatorAbi = [
109
114
  stateMutability: "payable",
110
115
  type: "function",
111
116
  },
117
+ {
118
+ inputs: [
119
+ {
120
+ internalType: "address",
121
+ name: "kernel",
122
+ type: "address",
123
+ },
124
+ {
125
+ internalType: "bytes32",
126
+ name: "hash",
127
+ type: "bytes32",
128
+ },
129
+ ],
130
+ name: "getApproval",
131
+ outputs: [
132
+ {
133
+ internalType: "uint256",
134
+ name: "approvals",
135
+ type: "uint256",
136
+ },
137
+ {
138
+ internalType: "bool",
139
+ name: "passed",
140
+ type: "bool",
141
+ },
142
+ ],
143
+ stateMutability: "view",
144
+ type: "function",
145
+ },
112
146
  {
113
147
  inputs: [
114
148
  {
@@ -163,13 +197,36 @@ export const WeightedValidatorAbi = [
163
197
  name: "validAfter",
164
198
  type: "uint48",
165
199
  },
200
+ ],
201
+ stateMutability: "view",
202
+ type: "function",
203
+ },
204
+ {
205
+ inputs: [
206
+ {
207
+ internalType: "address[]",
208
+ name: "_guardians",
209
+ type: "address[]",
210
+ },
211
+ {
212
+ internalType: "uint24[]",
213
+ name: "_weights",
214
+ type: "uint24[]",
215
+ },
166
216
  {
167
217
  internalType: "uint24",
168
- name: "weightApproved",
218
+ name: "_threshold",
169
219
  type: "uint24",
170
220
  },
221
+ {
222
+ internalType: "uint48",
223
+ name: "_delay",
224
+ type: "uint48",
225
+ },
171
226
  ],
172
- stateMutability: "view",
227
+ name: "renew",
228
+ outputs: [],
229
+ stateMutability: "payable",
173
230
  type: "function",
174
231
  },
175
232
  {
@@ -193,19 +250,19 @@ export const WeightedValidatorAbi = [
193
250
  type: "bool",
194
251
  },
195
252
  ],
196
- stateMutability: "view",
253
+ stateMutability: "pure",
197
254
  type: "function",
198
255
  },
199
256
  {
200
257
  inputs: [
201
258
  {
202
259
  internalType: "bytes32",
203
- name: "hash",
260
+ name: "",
204
261
  type: "bytes32",
205
262
  },
206
263
  {
207
264
  internalType: "bytes",
208
- name: "signature",
265
+ name: "",
209
266
  type: "bytes",
210
267
  },
211
268
  ],
@@ -217,7 +274,7 @@ export const WeightedValidatorAbi = [
217
274
  type: "uint256",
218
275
  },
219
276
  ],
220
- stateMutability: "view",
277
+ stateMutability: "pure",
221
278
  type: "function",
222
279
  },
223
280
  {
@@ -286,12 +343,12 @@ export const WeightedValidatorAbi = [
286
343
  },
287
344
  {
288
345
  internalType: "bytes32",
289
- name: "userOpHash",
346
+ name: "",
290
347
  type: "bytes32",
291
348
  },
292
349
  {
293
350
  internalType: "uint256",
294
- name: "missingFunds",
351
+ name: "",
295
352
  type: "uint256",
296
353
  },
297
354
  ],
@@ -4,7 +4,8 @@ import { polygon } from "viem/chains";
4
4
 
5
5
  export const DEFAULT_SEND_TX_MAX_RETRIES = 3;
6
6
  export const DEFAULT_SEND_TX_RETRY_INTERVAL_MS = 60000; // 1 minutes
7
- export const BUNDLER_URL = "https://v0-6-meta-bundler.onrender.com";
7
+ export const BUNDLER_URL =
8
+ "https://meta-aa-provider.onrender.com/api/v1/bundler";
8
9
  export const PAYMASTER_URL =
9
10
  "https://meta-aa-provider.onrender.com/api/v1/paymaster";
10
11
  export const ENTRYPOINT_ADDRESS: Hex =
@@ -28,7 +29,7 @@ export const TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1";
28
29
  export const SESSION_KEY_VALIDATOR_ADDRESS =
29
30
  "0xB8E3c4bEaACAd06f6092793012DA4a8cB23D6123";
30
31
  export const RECOVERY_VALIDATOR_ADDRESS =
31
- "0x4fd47D861c349bD49DC61341a922cb72F9dF7E8d";
32
+ "0xA60dA4E29A27F9510AC37faE3706EaEb1d55e8d6";
32
33
  export const RECOVERY_ACTION = "0x2f65dB8039fe5CAEE0a8680D2879deB800F31Ae1";
33
34
  export const oneAddress = "0x0000000000000000000000000000000000000001";
34
35