@zerodev/sdk 4.0.16 → 4.0.18

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 (152) hide show
  1. package/README.md +109 -0
  2. package/dist/cjs/kernel-zerodev/abis/RecoveryActionAbi.d.ts +15 -0
  3. package/dist/cjs/kernel-zerodev/abis/RecoveryActionAbi.js +24 -0
  4. package/dist/cjs/kernel-zerodev/abis/RecoveryActionAbi.js.map +1 -0
  5. package/dist/cjs/kernel-zerodev/abis/WeightedValidatorAbi.d.ts +296 -0
  6. package/dist/cjs/kernel-zerodev/abis/WeightedValidatorAbi.js +389 -0
  7. package/dist/cjs/kernel-zerodev/abis/WeightedValidatorAbi.js.map +1 -0
  8. package/dist/cjs/kernel-zerodev/account.d.ts +2 -0
  9. package/dist/cjs/kernel-zerodev/account.js +30 -0
  10. package/dist/cjs/kernel-zerodev/account.js.map +1 -1
  11. package/dist/cjs/kernel-zerodev/api/index.d.ts +2 -0
  12. package/dist/cjs/kernel-zerodev/api/index.js +28 -1
  13. package/dist/cjs/kernel-zerodev/api/index.js.map +1 -1
  14. package/dist/cjs/kernel-zerodev/constants.d.ts +2 -0
  15. package/dist/cjs/kernel-zerodev/constants.js +3 -1
  16. package/dist/cjs/kernel-zerodev/constants.js.map +1 -1
  17. package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -1
  18. package/dist/cjs/kernel-zerodev/owner/passkey/utils.js +1 -1
  19. package/dist/cjs/kernel-zerodev/owner/passkey/utils.js.map +1 -1
  20. package/dist/cjs/kernel-zerodev/provider.js.map +1 -1
  21. package/dist/cjs/kernel-zerodev/validator/base.d.ts +2 -0
  22. package/dist/cjs/kernel-zerodev/validator/base.js +9 -0
  23. package/dist/cjs/kernel-zerodev/validator/base.js.map +1 -1
  24. package/dist/cjs/kernel-zerodev/validator/index.d.ts +2 -1
  25. package/dist/cjs/kernel-zerodev/validator/index.js +4 -1
  26. package/dist/cjs/kernel-zerodev/validator/index.js.map +1 -1
  27. package/dist/cjs/kernel-zerodev/validator/recovery-validator.d.ts +52 -0
  28. package/dist/cjs/kernel-zerodev/validator/recovery-validator.js +298 -0
  29. package/dist/cjs/kernel-zerodev/validator/recovery-validator.js.map +1 -0
  30. package/dist/cjs/kernel-zerodev/validator/session-key-validator.d.ts +1 -1
  31. package/dist/cjs/kernel-zerodev/validator/session-key-validator.js +14 -1
  32. package/dist/cjs/kernel-zerodev/validator/session-key-validator.js.map +1 -1
  33. package/dist/cjs/kernel-zerodev/validator/types.d.ts +7 -1
  34. package/dist/cjs/kernel-zerodev/validator/types.js.map +1 -1
  35. package/dist/cjs/kernel-zerodev/validator-provider/base.d.ts +2 -2
  36. package/dist/cjs/kernel-zerodev/validator-provider/base.js +7 -3
  37. package/dist/cjs/kernel-zerodev/validator-provider/base.js.map +1 -1
  38. package/dist/cjs/kernel-zerodev/validator-provider/ecdsa-provider.d.ts +1 -1
  39. package/dist/cjs/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts +1 -1
  40. package/dist/cjs/kernel-zerodev/validator-provider/index.d.ts +2 -1
  41. package/dist/cjs/kernel-zerodev/validator-provider/index.js +4 -1
  42. package/dist/cjs/kernel-zerodev/validator-provider/index.js.map +1 -1
  43. package/dist/cjs/kernel-zerodev/validator-provider/kill-switch-provider.d.ts +1 -1
  44. package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.d.ts +26 -0
  45. package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.js +278 -0
  46. package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.js.map +1 -0
  47. package/dist/cjs/kernel-zerodev/validator-provider/session-key-provider.d.ts +1 -1
  48. package/dist/cjs/kernel-zerodev/validator-provider/types.d.ts +3 -0
  49. package/dist/cjs/kernel-zerodev/validator-provider/types.js.map +1 -1
  50. package/dist/esm/kernel-zerodev/abis/RecoveryActionAbi.d.ts +15 -0
  51. package/dist/esm/kernel-zerodev/abis/RecoveryActionAbi.js +21 -0
  52. package/dist/esm/kernel-zerodev/abis/RecoveryActionAbi.js.map +1 -0
  53. package/dist/esm/kernel-zerodev/abis/WeightedValidatorAbi.d.ts +296 -0
  54. package/dist/esm/kernel-zerodev/abis/WeightedValidatorAbi.js +386 -0
  55. package/dist/esm/kernel-zerodev/abis/WeightedValidatorAbi.js.map +1 -0
  56. package/dist/esm/kernel-zerodev/account.d.ts +2 -0
  57. package/dist/esm/kernel-zerodev/account.js +30 -0
  58. package/dist/esm/kernel-zerodev/account.js.map +1 -1
  59. package/dist/esm/kernel-zerodev/api/index.d.ts +2 -0
  60. package/dist/esm/kernel-zerodev/api/index.js +25 -0
  61. package/dist/esm/kernel-zerodev/api/index.js.map +1 -1
  62. package/dist/esm/kernel-zerodev/constants.d.ts +2 -0
  63. package/dist/esm/kernel-zerodev/constants.js +2 -0
  64. package/dist/esm/kernel-zerodev/constants.js.map +1 -1
  65. package/dist/esm/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -1
  66. package/dist/esm/kernel-zerodev/owner/passkey/utils.js +1 -1
  67. package/dist/esm/kernel-zerodev/owner/passkey/utils.js.map +1 -1
  68. package/dist/esm/kernel-zerodev/provider.js.map +1 -1
  69. package/dist/esm/kernel-zerodev/validator/base.d.ts +2 -0
  70. package/dist/esm/kernel-zerodev/validator/base.js +9 -0
  71. package/dist/esm/kernel-zerodev/validator/base.js.map +1 -1
  72. package/dist/esm/kernel-zerodev/validator/index.d.ts +2 -1
  73. package/dist/esm/kernel-zerodev/validator/index.js +3 -1
  74. package/dist/esm/kernel-zerodev/validator/index.js.map +1 -1
  75. package/dist/esm/kernel-zerodev/validator/recovery-validator.d.ts +52 -0
  76. package/dist/esm/kernel-zerodev/validator/recovery-validator.js +292 -0
  77. package/dist/esm/kernel-zerodev/validator/recovery-validator.js.map +1 -0
  78. package/dist/esm/kernel-zerodev/validator/session-key-validator.d.ts +1 -1
  79. package/dist/esm/kernel-zerodev/validator/session-key-validator.js +14 -1
  80. package/dist/esm/kernel-zerodev/validator/session-key-validator.js.map +1 -1
  81. package/dist/esm/kernel-zerodev/validator/types.d.ts +7 -1
  82. package/dist/esm/kernel-zerodev/validator/types.js.map +1 -1
  83. package/dist/esm/kernel-zerodev/validator-provider/base.d.ts +2 -2
  84. package/dist/esm/kernel-zerodev/validator-provider/base.js +7 -3
  85. package/dist/esm/kernel-zerodev/validator-provider/base.js.map +1 -1
  86. package/dist/esm/kernel-zerodev/validator-provider/ecdsa-provider.d.ts +1 -1
  87. package/dist/esm/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts +1 -1
  88. package/dist/esm/kernel-zerodev/validator-provider/index.d.ts +2 -1
  89. package/dist/esm/kernel-zerodev/validator-provider/index.js +3 -1
  90. package/dist/esm/kernel-zerodev/validator-provider/index.js.map +1 -1
  91. package/dist/esm/kernel-zerodev/validator-provider/kill-switch-provider.d.ts +1 -1
  92. package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.d.ts +26 -0
  93. package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.js +271 -0
  94. package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.js.map +1 -0
  95. package/dist/esm/kernel-zerodev/validator-provider/session-key-provider.d.ts +1 -1
  96. package/dist/esm/kernel-zerodev/validator-provider/types.d.ts +3 -0
  97. package/dist/esm/kernel-zerodev/validator-provider/types.js.map +1 -1
  98. package/dist/types/kernel-zerodev/abis/RecoveryActionAbi.d.ts +16 -0
  99. package/dist/types/kernel-zerodev/abis/RecoveryActionAbi.d.ts.map +1 -0
  100. package/dist/types/kernel-zerodev/abis/WeightedValidatorAbi.d.ts +297 -0
  101. package/dist/types/kernel-zerodev/abis/WeightedValidatorAbi.d.ts.map +1 -0
  102. package/dist/types/kernel-zerodev/account.d.ts +2 -0
  103. package/dist/types/kernel-zerodev/account.d.ts.map +1 -1
  104. package/dist/types/kernel-zerodev/api/index.d.ts +2 -0
  105. package/dist/types/kernel-zerodev/api/index.d.ts.map +1 -1
  106. package/dist/types/kernel-zerodev/constants.d.ts +2 -0
  107. package/dist/types/kernel-zerodev/constants.d.ts.map +1 -1
  108. package/dist/types/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -1
  109. package/dist/types/kernel-zerodev/ethers-provider/account-signer.d.ts.map +1 -1
  110. package/dist/types/kernel-zerodev/validator/base.d.ts +2 -0
  111. package/dist/types/kernel-zerodev/validator/base.d.ts.map +1 -1
  112. package/dist/types/kernel-zerodev/validator/index.d.ts +2 -1
  113. package/dist/types/kernel-zerodev/validator/index.d.ts.map +1 -1
  114. package/dist/types/kernel-zerodev/validator/recovery-validator.d.ts +53 -0
  115. package/dist/types/kernel-zerodev/validator/recovery-validator.d.ts.map +1 -0
  116. package/dist/types/kernel-zerodev/validator/session-key-validator.d.ts +1 -1
  117. package/dist/types/kernel-zerodev/validator/session-key-validator.d.ts.map +1 -1
  118. package/dist/types/kernel-zerodev/validator/types.d.ts +7 -1
  119. package/dist/types/kernel-zerodev/validator/types.d.ts.map +1 -1
  120. package/dist/types/kernel-zerodev/validator-provider/base.d.ts +2 -2
  121. package/dist/types/kernel-zerodev/validator-provider/base.d.ts.map +1 -1
  122. package/dist/types/kernel-zerodev/validator-provider/ecdsa-provider.d.ts +1 -1
  123. package/dist/types/kernel-zerodev/validator-provider/ecdsa-provider.d.ts.map +1 -1
  124. package/dist/types/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts +1 -1
  125. package/dist/types/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts.map +1 -1
  126. package/dist/types/kernel-zerodev/validator-provider/index.d.ts +2 -1
  127. package/dist/types/kernel-zerodev/validator-provider/index.d.ts.map +1 -1
  128. package/dist/types/kernel-zerodev/validator-provider/kill-switch-provider.d.ts +1 -1
  129. package/dist/types/kernel-zerodev/validator-provider/kill-switch-provider.d.ts.map +1 -1
  130. package/dist/types/kernel-zerodev/validator-provider/recovery-provider.d.ts +27 -0
  131. package/dist/types/kernel-zerodev/validator-provider/recovery-provider.d.ts.map +1 -0
  132. package/dist/types/kernel-zerodev/validator-provider/session-key-provider.d.ts +1 -1
  133. package/dist/types/kernel-zerodev/validator-provider/session-key-provider.d.ts.map +1 -1
  134. package/dist/types/kernel-zerodev/validator-provider/types.d.ts +3 -0
  135. package/dist/types/kernel-zerodev/validator-provider/types.d.ts.map +1 -1
  136. package/package.json +1 -1
  137. package/src/kernel-zerodev/abis/RecoveryActionAbi.ts +20 -0
  138. package/src/kernel-zerodev/abis/WeightedValidatorAbi.ts +385 -0
  139. package/src/kernel-zerodev/account.ts +33 -0
  140. package/src/kernel-zerodev/api/index.ts +32 -0
  141. package/src/kernel-zerodev/constants.ts +3 -0
  142. package/src/kernel-zerodev/owner/passkey/utils.ts +2 -2
  143. package/src/kernel-zerodev/provider.ts +1 -1
  144. package/src/kernel-zerodev/validator/base.ts +11 -0
  145. package/src/kernel-zerodev/validator/index.ts +3 -0
  146. package/src/kernel-zerodev/validator/recovery-validator.ts +366 -0
  147. package/src/kernel-zerodev/validator/session-key-validator.ts +17 -4
  148. package/src/kernel-zerodev/validator/types.ts +10 -1
  149. package/src/kernel-zerodev/validator-provider/base.ts +7 -3
  150. package/src/kernel-zerodev/validator-provider/index.ts +3 -0
  151. package/src/kernel-zerodev/validator-provider/recovery-provider.ts +350 -0
  152. package/src/kernel-zerodev/validator-provider/types.ts +6 -0
@@ -51,7 +51,7 @@ export class ValidatorProvider extends ZeroDevProvider {
51
51
  enumerable: true,
52
52
  configurable: true,
53
53
  writable: true,
54
- value: async (disableData) => {
54
+ value: async (disableData = "0x") => {
55
55
  if (!isKernelAccount(this.account) || !this.account.validator) {
56
56
  throw new Error("ValidatorProvider: account with validator is not set, did you call all connects first?");
57
57
  }
@@ -77,17 +77,21 @@ export class ValidatorProvider extends ZeroDevProvider {
77
77
  enumerable: true,
78
78
  configurable: true,
79
79
  writable: true,
80
- value: async (disableData) => {
80
+ value: async (disableData = "0x") => {
81
81
  const encodedDisableData = await this.getEncodedDisableData(disableData);
82
82
  if (!isKernelAccount(this.account) || !this.account.validator) {
83
83
  throw new Error("ValidatorProvider: account with validator is not set, did you call all connects first?");
84
84
  }
85
- return await this.sendUserOperation({
85
+ if (!this.defaultProvider) {
86
+ throw Error("Default Validator provider unintialized");
87
+ }
88
+ return await this.defaultProvider.sendUserOperation({
86
89
  target: this.account.validator.validatorAddress,
87
90
  data: encodedDisableData,
88
91
  });
89
92
  }
90
93
  });
94
+ this.defaultProvider = params.defaultProvider;
91
95
  this.connect(() => new KernelSmartContractAccount({
92
96
  projectId: params.projectId,
93
97
  validator,
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator-provider/base.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Hex, type SendUserOperationResult } from \"@alchemy/aa-core\";\nimport { ZeroDevProvider, type ZeroDevProviderConfig } from \"../provider.js\";\nimport type {\n KernelBaseValidator,\n KernelBaseValidatorParams,\n} from \"../validator/base.js\";\nimport type {\n PaymasterAndBundlerProviders,\n PaymasterConfig,\n PaymasterPolicy,\n} from \"../paymaster/types.js\";\nimport {\n KernelSmartContractAccount,\n type KernelSmartAccountParams,\n isKernelAccount,\n} from \"../account.js\";\nimport { polygonMumbai } from \"viem/chains\";\nimport { withZeroDevPaymasterAndData } from \"../middleware/paymaster.js\";\nimport type { RequiredProps } from \"../types.js\";\n\nexport type ValidatorProviderParamsOpts<P extends KernelBaseValidatorParams> = {\n paymasterConfig?: PaymasterConfig<PaymasterPolicy>;\n providerConfig?: Partial<ZeroDevProviderConfig>;\n accountConfig?: Omit<\n KernelSmartAccountParams,\n keyof ExtendedValidatorProviderParams<P>\n >;\n validatorConfig?: Omit<P, keyof ExtendedValidatorProviderParams<P>>;\n};\n\nexport interface ValidatorProviderParams<P extends KernelBaseValidatorParams> {\n projectId: string;\n bundlerProvider?: PaymasterAndBundlerProviders;\n opts?: ValidatorProviderParamsOpts<P>;\n usePaymaster?: boolean;\n defaultProvider?: ValidatorProvider<\n KernelBaseValidator,\n KernelBaseValidatorParams\n >;\n}\n\nexport type ExtendedValidatorProviderParams<\n P extends KernelBaseValidatorParams\n> = ValidatorProviderParams<P> & RequiredProps<P>;\n\n// A simple facade abstraction for validator related provider operations\n// Needs to be implemented for each validator plugin\nexport abstract class ValidatorProvider<\n V extends KernelBaseValidator,\n P extends KernelBaseValidatorParams\n> extends ZeroDevProvider {\n protected defaultProvider?: ValidatorProvider<\n KernelBaseValidator,\n KernelBaseValidatorParams\n >;\n constructor(\n params: ExtendedValidatorProviderParams<P>,\n validator: KernelBaseValidator\n ) {\n let bundlerProvider = params.bundlerProvider;\n const shouldUsePaymaster =\n params.usePaymaster === undefined || params.usePaymaster;\n if (\n params.opts?.paymasterConfig &&\n params.opts?.paymasterConfig.policy === \"TOKEN_PAYMASTER\" &&\n shouldUsePaymaster\n ) {\n bundlerProvider = \"STACKUP\";\n }\n super({\n ...params.opts?.providerConfig,\n chain: params.opts?.providerConfig?.chain ?? polygonMumbai,\n rpcUrl: params.opts?.providerConfig?.rpcUrl,\n projectId: params.projectId,\n bundlerProvider,\n });\n this.connect(\n () =>\n new KernelSmartContractAccount({\n projectId: params.projectId,\n validator,\n defaultValidator: params.defaultProvider?.getValidator(),\n rpcClient: this.rpcClient,\n bundlerProvider,\n index: params.defaultProvider?.getAccount().getIndex(),\n ...params.opts?.accountConfig,\n })\n );\n if (shouldUsePaymaster) {\n let paymasterConfig = params.opts?.paymasterConfig ?? {\n policy: \"VERIFYING_PAYMASTER\",\n };\n paymasterConfig = {\n ...paymasterConfig,\n paymasterProvider:\n params.opts?.paymasterConfig?.paymasterProvider ?? bundlerProvider,\n };\n withZeroDevPaymasterAndData(this, paymasterConfig);\n }\n }\n\n getValidator = (): V => {\n if (!isKernelAccount(this.account) || !this.account.validator) {\n throw new Error(\n \"ValidatorProvider: account with validator is not set, did you call all connects first?\"\n );\n }\n return this.account.getValidator() as unknown as V;\n };\n\n getEncodedEnableData = async (enableData: Hex): Promise<Hex> => {\n if (!isKernelAccount(this.account) || !this.account.validator) {\n throw new Error(\n \"ValidatorProvider: account with validator is not set, did you call all connects first?\"\n );\n }\n return await this.account.validator.encodeEnable(enableData);\n };\n\n getEncodedDisableData = async (disableData: Hex): Promise<Hex> => {\n if (!isKernelAccount(this.account) || !this.account.validator) {\n throw new Error(\n \"ValidatorProvider: account with validator is not set, did you call all connects first?\"\n );\n }\n return await this.account.validator.encodeDisable(disableData);\n };\n\n sendEnableUserOperation = async (\n enableData: Hex\n ): Promise<SendUserOperationResult> => {\n const encodedEnableData = await this.getEncodedEnableData(enableData);\n if (!isKernelAccount(this.account) || !this.account.validator) {\n throw new Error(\n \"ValidatorProvider: account with validator is not set, did you call all connects first?\"\n );\n }\n\n return await this.sendUserOperation({\n target: this.account.validator.validatorAddress,\n data: encodedEnableData,\n });\n };\n\n sendDisableUserOperation = async (\n disableData: Hex\n ): Promise<SendUserOperationResult> => {\n const encodedDisableData = await this.getEncodedDisableData(disableData);\n if (!isKernelAccount(this.account) || !this.account.validator) {\n throw new Error(\n \"ValidatorProvider: account with validator is not set, did you call all connects first?\"\n );\n }\n\n return await this.sendUserOperation({\n target: this.account.validator.validatorAddress,\n data: encodedDisableData,\n });\n };\n}\n"]}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator-provider/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAA8B,MAAM,gBAAgB,CAAC;AAU7E,OAAO,EACL,0BAA0B,EAE1B,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AA8BzE,MAAM,OAAgB,iBAGpB,SAAQ,eAAe;IAKvB,YACE,MAA0C,EAC1C,SAA8B;QAE9B,IAAI,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAC7C,MAAM,kBAAkB,GACtB,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC;QAC3D,IACE,MAAM,CAAC,IAAI,EAAE,eAAe;YAC5B,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,KAAK,iBAAiB;YACzD,kBAAkB,EAClB;YACA,eAAe,GAAG,SAAS,CAAC;SAC7B;QACD,KAAK,CAAC;YACJ,GAAG,MAAM,CAAC,IAAI,EAAE,cAAc;YAC9B,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,IAAI,aAAa;YAC1D,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM;YAC3C,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,eAAe;SAChB,CAAC,CAAC;QAxBK;;;;;WAGR;QAgDF;;;;mBAAe,GAAM,EAAE;gBACrB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;oBAC7D,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;iBACH;gBACD,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAkB,CAAC;YACrD,CAAC;WAAC;QAEF;;;;mBAAuB,KAAK,EAAE,UAAe,EAAgB,EAAE;gBAC7D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;oBAC7D,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;iBACH;gBACD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAC/D,CAAC;WAAC;QAEF;;;;mBAAwB,KAAK,EAAE,cAAmB,IAAI,EAAgB,EAAE;gBACtE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;oBAC7D,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;iBACH;gBACD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACjE,CAAC;WAAC;QAEF;;;;mBAA0B,KAAK,EAC7B,UAAe,EACmB,EAAE;gBACpC,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;gBACtE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;oBAC7D,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;iBACH;gBAED,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC;oBAClC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB;oBAC/C,IAAI,EAAE,iBAAiB;iBACxB,CAAC,CAAC;YACL,CAAC;WAAC;QAEF;;;;mBAA2B,KAAK,EAC9B,cAAmB,IAAI,EACW,EAAE;gBACpC,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;gBACzE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;oBAC7D,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;iBACH;gBACD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;oBACzB,MAAM,KAAK,CAAC,yCAAyC,CAAC,CAAC;iBACxD;gBAED,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC;oBAClD,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB;oBAC/C,IAAI,EAAE,kBAAkB;iBACzB,CAAC,CAAC;YACL,CAAC;WAAC;QAtFA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAC9C,IAAI,CAAC,OAAO,CACV,GAAG,EAAE,CACH,IAAI,0BAA0B,CAAC;YAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS;YACT,gBAAgB,EAAE,MAAM,CAAC,eAAe,EAAE,YAAY,EAAE;YACxD,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,eAAe;YACf,KAAK,EAAE,MAAM,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC,QAAQ,EAAE;YACtD,GAAG,MAAM,CAAC,IAAI,EAAE,aAAa;SAC9B,CAAC,CACL,CAAC;QACF,IAAI,kBAAkB,EAAE;YACtB,IAAI,eAAe,GAAG,MAAM,CAAC,IAAI,EAAE,eAAe,IAAI;gBACpD,MAAM,EAAE,qBAAqB;aAC9B,CAAC;YACF,eAAe,GAAG;gBAChB,GAAG,eAAe;gBAClB,iBAAiB,EACf,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,iBAAiB,IAAI,eAAe;aACrE,CAAC;YACF,2BAA2B,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;SACpD;IACH,CAAC;CA+DF","sourcesContent":["import { type Hex, type SendUserOperationResult } from \"@alchemy/aa-core\";\nimport { ZeroDevProvider, type ZeroDevProviderConfig } from \"../provider.js\";\nimport type {\n KernelBaseValidator,\n KernelBaseValidatorParams,\n} from \"../validator/base.js\";\nimport type {\n PaymasterAndBundlerProviders,\n PaymasterConfig,\n PaymasterPolicy,\n} from \"../paymaster/types.js\";\nimport {\n KernelSmartContractAccount,\n type KernelSmartAccountParams,\n isKernelAccount,\n} from \"../account.js\";\nimport { polygonMumbai } from \"viem/chains\";\nimport { withZeroDevPaymasterAndData } from \"../middleware/paymaster.js\";\nimport type { RequiredProps } from \"../types.js\";\n\nexport type ValidatorProviderParamsOpts<P extends KernelBaseValidatorParams> = {\n paymasterConfig?: PaymasterConfig<PaymasterPolicy>;\n providerConfig?: Partial<ZeroDevProviderConfig>;\n accountConfig?: Omit<\n KernelSmartAccountParams,\n keyof ExtendedValidatorProviderParams<P>\n >;\n validatorConfig?: Omit<P, keyof ExtendedValidatorProviderParams<P>>;\n};\n\nexport interface ValidatorProviderParams<P extends KernelBaseValidatorParams> {\n projectId: string;\n bundlerProvider?: PaymasterAndBundlerProviders;\n opts?: ValidatorProviderParamsOpts<P>;\n usePaymaster?: boolean;\n defaultProvider?: ValidatorProvider<\n KernelBaseValidator,\n KernelBaseValidatorParams\n >;\n}\n\nexport type ExtendedValidatorProviderParams<\n P extends KernelBaseValidatorParams\n> = ValidatorProviderParams<P> & RequiredProps<P>;\n\n// A simple facade abstraction for validator related provider operations\n// Needs to be implemented for each validator plugin\nexport abstract class ValidatorProvider<\n V extends KernelBaseValidator,\n P extends KernelBaseValidatorParams\n> extends ZeroDevProvider {\n protected defaultProvider?: ValidatorProvider<\n KernelBaseValidator,\n KernelBaseValidatorParams\n >;\n constructor(\n params: ExtendedValidatorProviderParams<P>,\n validator: KernelBaseValidator\n ) {\n let bundlerProvider = params.bundlerProvider;\n const shouldUsePaymaster =\n params.usePaymaster === undefined || params.usePaymaster;\n if (\n params.opts?.paymasterConfig &&\n params.opts?.paymasterConfig.policy === \"TOKEN_PAYMASTER\" &&\n shouldUsePaymaster\n ) {\n bundlerProvider = \"STACKUP\";\n }\n super({\n ...params.opts?.providerConfig,\n chain: params.opts?.providerConfig?.chain ?? polygonMumbai,\n rpcUrl: params.opts?.providerConfig?.rpcUrl,\n projectId: params.projectId,\n bundlerProvider,\n });\n this.defaultProvider = params.defaultProvider;\n this.connect(\n () =>\n new KernelSmartContractAccount({\n projectId: params.projectId,\n validator,\n defaultValidator: params.defaultProvider?.getValidator(),\n rpcClient: this.rpcClient,\n bundlerProvider,\n index: params.defaultProvider?.getAccount().getIndex(),\n ...params.opts?.accountConfig,\n })\n );\n if (shouldUsePaymaster) {\n let paymasterConfig = params.opts?.paymasterConfig ?? {\n policy: \"VERIFYING_PAYMASTER\",\n };\n paymasterConfig = {\n ...paymasterConfig,\n paymasterProvider:\n params.opts?.paymasterConfig?.paymasterProvider ?? bundlerProvider,\n };\n withZeroDevPaymasterAndData(this, paymasterConfig);\n }\n }\n\n getValidator = (): V => {\n if (!isKernelAccount(this.account) || !this.account.validator) {\n throw new Error(\n \"ValidatorProvider: account with validator is not set, did you call all connects first?\"\n );\n }\n return this.account.getValidator() as unknown as V;\n };\n\n getEncodedEnableData = async (enableData: Hex): Promise<Hex> => {\n if (!isKernelAccount(this.account) || !this.account.validator) {\n throw new Error(\n \"ValidatorProvider: account with validator is not set, did you call all connects first?\"\n );\n }\n return await this.account.validator.encodeEnable(enableData);\n };\n\n getEncodedDisableData = async (disableData: Hex = \"0x\"): Promise<Hex> => {\n if (!isKernelAccount(this.account) || !this.account.validator) {\n throw new Error(\n \"ValidatorProvider: account with validator is not set, did you call all connects first?\"\n );\n }\n return await this.account.validator.encodeDisable(disableData);\n };\n\n sendEnableUserOperation = async (\n enableData: Hex\n ): Promise<SendUserOperationResult> => {\n const encodedEnableData = await this.getEncodedEnableData(enableData);\n if (!isKernelAccount(this.account) || !this.account.validator) {\n throw new Error(\n \"ValidatorProvider: account with validator is not set, did you call all connects first?\"\n );\n }\n\n return await this.sendUserOperation({\n target: this.account.validator.validatorAddress,\n data: encodedEnableData,\n });\n };\n\n sendDisableUserOperation = async (\n disableData: Hex = \"0x\"\n ): Promise<SendUserOperationResult> => {\n const encodedDisableData = await this.getEncodedDisableData(disableData);\n if (!isKernelAccount(this.account) || !this.account.validator) {\n throw new Error(\n \"ValidatorProvider: account with validator is not set, did you call all connects first?\"\n );\n }\n if (!this.defaultProvider) {\n throw Error(\"Default Validator provider unintialized\");\n }\n\n return await this.defaultProvider.sendUserOperation({\n target: this.account.validator.validatorAddress,\n data: encodedDisableData,\n });\n };\n}\n"]}
@@ -4,5 +4,5 @@ export declare class ECDSAProvider extends ValidatorProvider<ECDSAValidator, ECD
4
4
  constructor(params: ExtendedValidatorProviderParams<ECDSAValidatorParams>);
5
5
  static init(params: ExtendedValidatorProviderParams<ECDSAValidatorParams>): Promise<ECDSAProvider>;
6
6
  changeOwner: (enableData: `0x${string}`) => Promise<import("@alchemy/aa-core").SendUserOperationResult>;
7
- deleteOwner: (disableData: `0x${string}`) => Promise<import("@alchemy/aa-core").SendUserOperationResult>;
7
+ deleteOwner: (disableData?: `0x${string}`) => Promise<import("@alchemy/aa-core").SendUserOperationResult>;
8
8
  }
@@ -4,5 +4,5 @@ export declare class ERC165SessionKeyProvider extends ValidatorProvider<ERC165Se
4
4
  constructor(params: ExtendedValidatorProviderParams<ERC165SessionKeyValidatorParams>);
5
5
  static init(params: ExtendedValidatorProviderParams<ERC165SessionKeyValidatorParams>): Promise<ERC165SessionKeyProvider>;
6
6
  changeGuardian: (enableData: `0x${string}`) => Promise<import("@alchemy/aa-core").SendUserOperationResult>;
7
- deleteERC165SessionKeyData: (disableData: `0x${string}`) => Promise<import("@alchemy/aa-core").SendUserOperationResult>;
7
+ deleteERC165SessionKeyData: (disableData?: `0x${string}`) => Promise<import("@alchemy/aa-core").SendUserOperationResult>;
8
8
  }
@@ -1,7 +1,8 @@
1
1
  import { ECDSAProvider } from "./ecdsa-provider.js";
2
2
  import { ERC165SessionKeyProvider } from "./erc165-session-key-provider.js";
3
3
  import { KillSwitchProvider } from "./kill-switch-provider.js";
4
+ import { RecoveryProvider } from "./recovery-provider.js";
4
5
  import { SessionKeyProvider } from "./session-key-provider.js";
5
6
  import type { ValidatorProviderMap } from "./types.js";
6
7
  export declare const ValidatorProviders: ValidatorProviderMap;
7
- export { ECDSAProvider, KillSwitchProvider, ERC165SessionKeyProvider, SessionKeyProvider, };
8
+ export { ECDSAProvider, KillSwitchProvider, ERC165SessionKeyProvider, SessionKeyProvider, RecoveryProvider, };
@@ -1,12 +1,14 @@
1
1
  import { ECDSAProvider } from "./ecdsa-provider.js";
2
2
  import { ERC165SessionKeyProvider } from "./erc165-session-key-provider.js";
3
3
  import { KillSwitchProvider } from "./kill-switch-provider.js";
4
+ import { RecoveryProvider } from "./recovery-provider.js";
4
5
  import { SessionKeyProvider } from "./session-key-provider.js";
5
6
  export const ValidatorProviders = {
6
7
  ECDSA: ECDSAProvider,
7
8
  KILL_SWITCH: KillSwitchProvider,
8
9
  ERC165_SESSION_KEY: ERC165SessionKeyProvider,
9
10
  SESSION_KEY: SessionKeyProvider,
11
+ RECOVERY: RecoveryProvider,
10
12
  };
11
- export { ECDSAProvider, KillSwitchProvider, ERC165SessionKeyProvider, SessionKeyProvider, };
13
+ export { ECDSAProvider, KillSwitchProvider, ERC165SessionKeyProvider, SessionKeyProvider, RecoveryProvider, };
12
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator-provider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,MAAM,CAAC,MAAM,kBAAkB,GAAyB;IACtD,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,kBAAkB;IAC/B,kBAAkB,EAAE,wBAAwB;IAC5C,WAAW,EAAE,kBAAkB;CAChC,CAAC;AAEF,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,GACnB,CAAC","sourcesContent":["import { ECDSAProvider } from \"./ecdsa-provider.js\";\nimport { ERC165SessionKeyProvider } from \"./erc165-session-key-provider.js\";\nimport { KillSwitchProvider } from \"./kill-switch-provider.js\";\nimport { SessionKeyProvider } from \"./session-key-provider.js\";\nimport type { ValidatorProviderMap } from \"./types.js\";\n\nexport const ValidatorProviders: ValidatorProviderMap = {\n ECDSA: ECDSAProvider,\n KILL_SWITCH: KillSwitchProvider,\n ERC165_SESSION_KEY: ERC165SessionKeyProvider,\n SESSION_KEY: SessionKeyProvider,\n};\n\nexport {\n ECDSAProvider,\n KillSwitchProvider,\n ERC165SessionKeyProvider,\n SessionKeyProvider,\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator-provider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,MAAM,CAAC,MAAM,kBAAkB,GAAyB;IACtD,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,kBAAkB;IAC/B,kBAAkB,EAAE,wBAAwB;IAC5C,WAAW,EAAE,kBAAkB;IAC/B,QAAQ,EAAE,gBAAgB;CAC3B,CAAC;AAEF,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,GACjB,CAAC","sourcesContent":["import { ECDSAProvider } from \"./ecdsa-provider.js\";\nimport { ERC165SessionKeyProvider } from \"./erc165-session-key-provider.js\";\nimport { KillSwitchProvider } from \"./kill-switch-provider.js\";\nimport { RecoveryProvider } from \"./recovery-provider.js\";\nimport { SessionKeyProvider } from \"./session-key-provider.js\";\nimport type { ValidatorProviderMap } from \"./types.js\";\n\nexport const ValidatorProviders: ValidatorProviderMap = {\n ECDSA: ECDSAProvider,\n KILL_SWITCH: KillSwitchProvider,\n ERC165_SESSION_KEY: ERC165SessionKeyProvider,\n SESSION_KEY: SessionKeyProvider,\n RECOVERY: RecoveryProvider,\n};\n\nexport {\n ECDSAProvider,\n KillSwitchProvider,\n ERC165SessionKeyProvider,\n SessionKeyProvider,\n RecoveryProvider,\n};\n"]}
@@ -4,5 +4,5 @@ export declare class KillSwitchProvider extends ValidatorProvider<KillSwitchVali
4
4
  constructor(params: ExtendedValidatorProviderParams<KillSwitchValidatorParams>);
5
5
  static init(params: ExtendedValidatorProviderParams<KillSwitchValidatorParams>): Promise<KillSwitchProvider>;
6
6
  changeGuardian: (enableData: `0x${string}`) => Promise<import("@alchemy/aa-core").SendUserOperationResult>;
7
- deleteKillSwitchData: (disableData: `0x${string}`) => Promise<import("@alchemy/aa-core").SendUserOperationResult>;
7
+ deleteKillSwitchData: (disableData?: `0x${string}`) => Promise<import("@alchemy/aa-core").SendUserOperationResult>;
8
8
  }
@@ -0,0 +1,26 @@
1
+ import { ValidatorProvider, type ExtendedValidatorProviderParams } from "./base.js";
2
+ import { RecoveryValidator, type RecoveryConfig, type RecoveryValidatorParams } from "../validator/recovery-validator.js";
3
+ import { type Address, type SendUserOperationResult } from "@alchemy/aa-core";
4
+ import { type Hex, type TransactionReceipt } from "viem";
5
+ export interface RecoveryProviderParams extends ExtendedValidatorProviderParams<RecoveryValidatorParams> {
6
+ recoveryId?: string;
7
+ enableData?: Hex;
8
+ }
9
+ export declare class RecoveryProvider extends ValidatorProvider<RecoveryValidator, RecoveryValidatorParams> {
10
+ recoveryId?: string;
11
+ enableData?: Hex;
12
+ constructor(params: RecoveryProviderParams);
13
+ static init(params: RecoveryProviderParams): Promise<RecoveryProvider>;
14
+ getDefaultValidator(): Promise<Address>;
15
+ encodeCalldataAndNonce(enableData: Hex): Promise<Hex>;
16
+ enableRecovery(): Promise<SendUserOperationResult>;
17
+ initiateRecovery(enableData: Hex): Promise<string>;
18
+ serializeRecoveryConfig(): string;
19
+ static deserializeRecoveryConfig(recoveryConfig: string): RecoveryConfig;
20
+ approveRecovery(enableData?: Hex): Promise<TransactionReceipt>;
21
+ signRecovery(enableData?: Hex): Promise<void>;
22
+ approveRecoveryWithSig(enableData?: Hex, sigs?: Hex): Promise<TransactionReceipt>;
23
+ cancelRecovery(enableData?: Hex): Promise<SendUserOperationResult>;
24
+ submitRecovery(enableData?: Hex): Promise<SendUserOperationResult>;
25
+ deleteRecoveryData: (disableData?: `0x${string}`) => Promise<SendUserOperationResult>;
26
+ }
@@ -0,0 +1,271 @@
1
+ import { ValidatorProvider, } from "./base.js";
2
+ import { RecoveryValidator, } from "../validator/recovery-validator.js";
3
+ import { getChain, } from "@alchemy/aa-core";
4
+ import { getChainId, getRecoveryData, setSignatures } from "../api/index.js";
5
+ import { polygonMumbai } from "viem/chains";
6
+ import { BACKEND_URL, RECOVERY_VALIDATOR_ADDRESS } from "../constants.js";
7
+ import { encodeAbiParameters, encodeFunctionData, parseAbiParameters, keccak256, publicActions, concatHex, } from "viem";
8
+ import { RecoveryActionAbi } from "../abis/RecoveryActionAbi.js";
9
+ import { KernelAccountAbi } from "../abis/KernelAccountAbi.js";
10
+ import axios from "axios";
11
+ import { base64ToBytes, bytesToBase64 } from "../utils.js";
12
+ export class RecoveryProvider extends ValidatorProvider {
13
+ constructor(params) {
14
+ const chain = typeof params.opts?.providerConfig?.chain === "number"
15
+ ? getChain(params.opts.providerConfig.chain)
16
+ : params.opts?.providerConfig?.chain ?? polygonMumbai;
17
+ const validator = new RecoveryValidator({
18
+ projectId: params.projectId,
19
+ chain,
20
+ validatorAddress: params.opts?.validatorConfig?.validatorAddress ??
21
+ RECOVERY_VALIDATOR_ADDRESS,
22
+ ...params.opts?.validatorConfig,
23
+ });
24
+ super({
25
+ ...params,
26
+ opts: {
27
+ ...params.opts,
28
+ providerConfig: { ...params.opts?.providerConfig, chain },
29
+ },
30
+ }, validator);
31
+ Object.defineProperty(this, "recoveryId", {
32
+ enumerable: true,
33
+ configurable: true,
34
+ writable: true,
35
+ value: void 0
36
+ });
37
+ Object.defineProperty(this, "enableData", {
38
+ enumerable: true,
39
+ configurable: true,
40
+ writable: true,
41
+ value: void 0
42
+ });
43
+ Object.defineProperty(this, "deleteRecoveryData", {
44
+ enumerable: true,
45
+ configurable: true,
46
+ writable: true,
47
+ value: this.sendDisableUserOperation
48
+ });
49
+ this.recoveryId = params.recoveryId;
50
+ this.enableData = params.enableData;
51
+ }
52
+ static async init(params) {
53
+ const chainId = await getChainId(params.projectId);
54
+ if (!chainId) {
55
+ throw new Error("ChainId not found");
56
+ }
57
+ const chain = getChain(chainId);
58
+ let accountAddress, enableData, signatures, serializedRecoveryConfig, recoveryConfig;
59
+ if (params.recoveryId) {
60
+ ({
61
+ scwAddress: accountAddress,
62
+ enableData,
63
+ recoveryConfig: serializedRecoveryConfig,
64
+ signatures,
65
+ } = await getRecoveryData(params.recoveryId));
66
+ recoveryConfig = RecoveryProvider.deserializeRecoveryConfig(serializedRecoveryConfig);
67
+ }
68
+ const instance = new RecoveryProvider({
69
+ enableData,
70
+ ...params,
71
+ opts: {
72
+ ...params.opts,
73
+ providerConfig: {
74
+ chain,
75
+ ...params.opts?.providerConfig,
76
+ },
77
+ accountConfig: {
78
+ accountAddress,
79
+ ...params.opts?.accountConfig,
80
+ },
81
+ validatorConfig: {
82
+ signatures,
83
+ ...recoveryConfig,
84
+ ...params.opts?.validatorConfig,
85
+ },
86
+ },
87
+ });
88
+ return instance;
89
+ }
90
+ async getDefaultValidator() {
91
+ const publicClient = this.getValidator().getPublicClient();
92
+ const kernelAccountAddress = await this.getAddress();
93
+ return await publicClient.readContract({
94
+ abi: KernelAccountAbi,
95
+ address: kernelAccountAddress,
96
+ functionName: "getDefaultValidator",
97
+ });
98
+ }
99
+ async encodeCalldataAndNonce(enableData) {
100
+ const defaultValidatorAddress = await this.getDefaultValidator();
101
+ const callData = encodeFunctionData({
102
+ abi: RecoveryActionAbi,
103
+ functionName: "doRecovery",
104
+ args: [defaultValidatorAddress, enableData],
105
+ });
106
+ const nonce = await (await this.getAccount()).getNonce();
107
+ const encodedCallDataAndNonce = encodeAbiParameters(parseAbiParameters("bytes calldata, uint256 nonce"), [callData, nonce]);
108
+ return keccak256(encodedCallDataAndNonce);
109
+ }
110
+ async enableRecovery() {
111
+ if (!this.defaultProvider) {
112
+ throw Error("DefaultProvider uninitilised");
113
+ }
114
+ const { selector } = await this.getValidator().getPluginValidatorData();
115
+ const kernelAccountAddress = await this.defaultProvider.getAddress();
116
+ const encodedSetExecData = await this.getAccount().encodeSetExection();
117
+ if (await this.getValidator().isPluginEnabled(kernelAccountAddress, selector)) {
118
+ throw Error("Plugin already enabled");
119
+ }
120
+ return await this.defaultProvider.sendUserOperation({
121
+ target: kernelAccountAddress,
122
+ data: encodedSetExecData,
123
+ });
124
+ }
125
+ async initiateRecovery(enableData) {
126
+ try {
127
+ const serializedConfig = this.serializeRecoveryConfig();
128
+ const { data: { recoveryId }, } = await axios.post(`${BACKEND_URL}/v1/recovery`, {
129
+ enableData,
130
+ scwAddress: await this.getAddress(),
131
+ recoveryConfig: serializedConfig,
132
+ }, {
133
+ headers: { "Content-Type": "application/json" },
134
+ });
135
+ console.log(recoveryId);
136
+ this.enableData = enableData;
137
+ return recoveryId;
138
+ }
139
+ catch (error) {
140
+ console.log(error);
141
+ throw Error("Unable to generate the recoveryId");
142
+ }
143
+ }
144
+ serializeRecoveryConfig() {
145
+ let recoveryConfig = this.getValidator().getRecoveryConfig();
146
+ const jsonString = JSON.stringify(recoveryConfig);
147
+ const uint8Array = new TextEncoder().encode(jsonString);
148
+ const base64String = bytesToBase64(uint8Array);
149
+ return base64String;
150
+ }
151
+ static deserializeRecoveryConfig(recoveryConfig) {
152
+ const uint8Array = base64ToBytes(recoveryConfig);
153
+ const jsonString = new TextDecoder().decode(uint8Array);
154
+ return JSON.parse(jsonString);
155
+ }
156
+ async approveRecovery(enableData) {
157
+ const fetchedEnableData = enableData ?? this.enableData;
158
+ if (!fetchedEnableData) {
159
+ throw Error("Unable to fetch enable data for Recovery");
160
+ }
161
+ const kernelAccountAddress = await this.getAddress();
162
+ const callDataAndNonceHash = await this.encodeCalldataAndNonce(fetchedEnableData);
163
+ const validator = this.getValidator();
164
+ if (!validator.walletClient) {
165
+ throw Error("WalletClient uninitialized");
166
+ }
167
+ const walletClient = validator.walletClient.extend(publicActions);
168
+ let account;
169
+ if (walletClient.account) {
170
+ account = walletClient.account;
171
+ }
172
+ else {
173
+ [account] = await walletClient.requestAddresses();
174
+ }
175
+ const hash = await walletClient.sendTransaction({
176
+ account,
177
+ to: validator.getAddress(),
178
+ data: validator.encodeApprove(callDataAndNonceHash, kernelAccountAddress),
179
+ });
180
+ return await walletClient.waitForTransactionReceipt({ hash });
181
+ }
182
+ async signRecovery(enableData) {
183
+ try {
184
+ if (!this.recoveryId) {
185
+ throw Error("RecoveryId not set");
186
+ }
187
+ const fetchedEnableData = enableData ?? this.enableData;
188
+ if (!fetchedEnableData) {
189
+ throw Error("Unable to fetch enable data for Recovery");
190
+ }
191
+ const callDataAndNonceHash = await this.encodeCalldataAndNonce(fetchedEnableData);
192
+ const sig = await this.getValidator().signRecoveryHash(callDataAndNonceHash);
193
+ let sigs = this.getValidator().getRecoverySignatures();
194
+ if (sigs) {
195
+ sigs =
196
+ sigs.toLowerCase().indexOf(sig.toLowerCase()) === -1
197
+ ? concatHex([sigs, sig])
198
+ : sigs;
199
+ }
200
+ else {
201
+ sigs = sig;
202
+ }
203
+ this.getValidator().setRecoverySignatures(sigs);
204
+ const { result } = await setSignatures(this.recoveryId, sigs);
205
+ if (result !== "success") {
206
+ throw Error("Failed to save the signatures");
207
+ }
208
+ }
209
+ catch (error) {
210
+ console.log(error);
211
+ }
212
+ }
213
+ async approveRecoveryWithSig(enableData, sigs) {
214
+ const fetchedEnableData = enableData ?? this.enableData;
215
+ if (!fetchedEnableData) {
216
+ throw Error("Unable to fetch enable data for Recovery");
217
+ }
218
+ const signatures = sigs ?? this.getValidator().getRecoverySignatures();
219
+ if (!signatures) {
220
+ throw Error("Signatures are not set");
221
+ }
222
+ const kernelAccountAddress = await this.getAddress();
223
+ const callDataAndNonceHash = await this.encodeCalldataAndNonce(fetchedEnableData);
224
+ const validator = this.getValidator();
225
+ if (!validator.walletClient) {
226
+ throw Error("WalletClient uninitilized");
227
+ }
228
+ const walletClient = validator.walletClient.extend(publicActions);
229
+ let account;
230
+ if (walletClient.account) {
231
+ account = walletClient.account;
232
+ }
233
+ else {
234
+ [account] = await walletClient.requestAddresses();
235
+ }
236
+ const hash = await walletClient.sendTransaction({
237
+ account,
238
+ to: validator.getAddress(),
239
+ data: validator.encodeApproveWithSig(callDataAndNonceHash, kernelAccountAddress, sigs),
240
+ });
241
+ return await walletClient.waitForTransactionReceipt({ hash });
242
+ }
243
+ async cancelRecovery(enableData) {
244
+ const fetchedEnableData = enableData ?? this.enableData;
245
+ if (!fetchedEnableData) {
246
+ throw Error("Unable to fetch enable data for Recovery");
247
+ }
248
+ if (!this.defaultProvider) {
249
+ throw Error("DefaultProvider uninitilised");
250
+ }
251
+ const callDataAndNonceHash = await this.encodeCalldataAndNonce(fetchedEnableData);
252
+ const encodedVetoData = await this.getValidator().encodeVeto(callDataAndNonceHash);
253
+ return await this.defaultProvider.sendUserOperation({
254
+ target: this.getValidator().validatorAddress,
255
+ data: encodedVetoData,
256
+ });
257
+ }
258
+ async submitRecovery(enableData) {
259
+ const fetchedEnableData = enableData ?? this.enableData;
260
+ if (!fetchedEnableData) {
261
+ throw Error("Unable to fetch enable data for Recovery");
262
+ }
263
+ const defaultValidatorAddress = await this.getDefaultValidator();
264
+ const encodedRecoveryActionData = await this.getValidator().encodeRecoveryAction(fetchedEnableData, defaultValidatorAddress);
265
+ return await this.sendUserOperation({
266
+ target: await this.getAddress(),
267
+ data: encodedRecoveryActionData,
268
+ });
269
+ }
270
+ }
271
+ //# sourceMappingURL=recovery-provider.js.map
@@ -0,0 +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 {\n getChain,\n type Address,\n type SendUserOperationResult,\n} from \"@alchemy/aa-core\";\nimport { getChainId, getRecoveryData, setSignatures } from \"../api/index.js\";\nimport { polygonMumbai } from \"viem/chains\";\nimport { BACKEND_URL, RECOVERY_VALIDATOR_ADDRESS } from \"../constants.js\";\nimport {\n encodeAbiParameters,\n encodeFunctionData,\n parseAbiParameters,\n type Hex,\n keccak256,\n publicActions,\n type TransactionReceipt,\n concatHex,\n} from \"viem\";\nimport { RecoveryActionAbi } from \"../abis/RecoveryActionAbi.js\";\nimport { KernelAccountAbi } from \"../abis/KernelAccountAbi.js\";\nimport axios from \"axios\";\nimport { base64ToBytes, bytesToBase64 } 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 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 }\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 try {\n const serializedConfig = this.serializeRecoveryConfig();\n const {\n data: { recoveryId },\n } = await axios.post(\n `${BACKEND_URL}/v1/recovery`,\n {\n enableData,\n scwAddress: await this.getAddress(),\n recoveryConfig: serializedConfig,\n },\n {\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n console.log(recoveryId);\n this.enableData = enableData;\n return recoveryId;\n } catch (error) {\n console.log(error);\n throw Error(\"Unable to generate the recoveryId\");\n }\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 let sigs = this.getValidator().getRecoverySignatures();\n if (sigs) {\n sigs =\n sigs.toLowerCase().indexOf(sig.toLowerCase()) === -1\n ? concatHex([sigs, sig])\n : sigs;\n } else {\n sigs = sig;\n }\n this.getValidator().setRecoverySignatures(sigs);\n const { result } = await setSignatures(this.recoveryId, sigs);\n if (result !== \"success\") {\n throw Error(\"Failed to save the signatures\");\n }\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 = sigs ?? 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"]}
@@ -14,5 +14,5 @@ export declare class SessionKeyProvider extends ValidatorProvider<SessionKeyVali
14
14
  serializeSessionKeyParams(sessionPrivateKey?: Hex): Promise<string>;
15
15
  static deserializeSessionKeyParams(sessionKeyParams: string): PrefillSessionData["sessionKeyParams"];
16
16
  changeSessionKeyData: (enableData: `0x${string}`) => Promise<import("@alchemy/aa-core").SendUserOperationResult>;
17
- deleteSessionKey: (disableData: `0x${string}`) => Promise<import("@alchemy/aa-core").SendUserOperationResult>;
17
+ deleteSessionKey: (disableData?: `0x${string}`) => Promise<import("@alchemy/aa-core").SendUserOperationResult>;
18
18
  }
@@ -7,18 +7,21 @@ import type { ExtendedValidatorProviderParams } from "./base.js";
7
7
  import type { ECDSAProvider } from "./ecdsa-provider.js";
8
8
  import type { ERC165SessionKeyProvider } from "./erc165-session-key-provider.js";
9
9
  import type { KillSwitchProvider } from "./kill-switch-provider.js";
10
+ import type { RecoveryProvider, RecoveryProviderParams } from "./recovery-provider.js";
10
11
  import type { SessionKeyProvider, PrefillSessionData, SessionKeyProviderParams } from "./session-key-provider.js";
11
12
  export type ValidatorProviderTypeMap = {
12
13
  ECDSA: ECDSAProvider;
13
14
  KILL_SWITCH: KillSwitchProvider;
14
15
  ERC165_SESSION_KEY: ERC165SessionKeyProvider;
15
16
  SESSION_KEY: SessionKeyProvider;
17
+ RECOVERY: RecoveryProvider;
16
18
  };
17
19
  export type ValidatorProviderParamsMap = {
18
20
  ECDSA: ExtendedValidatorProviderParams<ECDSAValidatorParams>;
19
21
  KILL_SWITCH: ExtendedValidatorProviderParams<KillSwitchValidatorParams>;
20
22
  ERC165_SESSION_KEY: ExtendedValidatorProviderParams<ERC165SessionKeyValidatorParams>;
21
23
  SESSION_KEY: ExtendedValidatorProviderParams<SessionKeyValidatorParams>;
24
+ RECOVERY: RecoveryProviderParams;
22
25
  };
23
26
  export type ValidatorProviderMap = {
24
27
  [V in SupportedValidators]: new (params: ValidatorProviderParamsMap[V]) => ValidatorProviderTypeMap[V];
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator-provider/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ECDSAValidatorParams } from \"../validator/ecdsa-validator.js\";\nimport type { ERC165SessionKeyValidatorParams } from \"../validator/erc165-session-key-validator.js\";\nimport type { KillSwitchValidatorParams } from \"../validator/kill-switch-validator.js\";\nimport type { SessionKeyValidatorParams } from \"../validator/session-key-validator.js\";\nimport type { SupportedValidators } from \"../validator/types.js\";\nimport type { ExtendedValidatorProviderParams } from \"./base.js\";\nimport type { ECDSAProvider } from \"./ecdsa-provider.js\";\nimport type { ERC165SessionKeyProvider } from \"./erc165-session-key-provider.js\";\nimport type { KillSwitchProvider } from \"./kill-switch-provider.js\";\nimport type {\n SessionKeyProvider,\n PrefillSessionData,\n SessionKeyProviderParams,\n} from \"./session-key-provider.js\";\n\nexport type ValidatorProviderTypeMap = {\n ECDSA: ECDSAProvider;\n KILL_SWITCH: KillSwitchProvider;\n ERC165_SESSION_KEY: ERC165SessionKeyProvider;\n SESSION_KEY: SessionKeyProvider;\n};\n\nexport type ValidatorProviderParamsMap = {\n ECDSA: ExtendedValidatorProviderParams<ECDSAValidatorParams>;\n KILL_SWITCH: ExtendedValidatorProviderParams<KillSwitchValidatorParams>;\n ERC165_SESSION_KEY: ExtendedValidatorProviderParams<ERC165SessionKeyValidatorParams>;\n SESSION_KEY: ExtendedValidatorProviderParams<SessionKeyValidatorParams>;\n};\n\nexport type ValidatorProviderMap = {\n [V in SupportedValidators]: new (\n params: ValidatorProviderParamsMap[V]\n ) => ValidatorProviderTypeMap[V];\n};\n\nexport type { PrefillSessionData, SessionKeyProviderParams };\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator-provider/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ECDSAValidatorParams } from \"../validator/ecdsa-validator.js\";\nimport type { ERC165SessionKeyValidatorParams } from \"../validator/erc165-session-key-validator.js\";\nimport type { KillSwitchValidatorParams } from \"../validator/kill-switch-validator.js\";\nimport type { SessionKeyValidatorParams } from \"../validator/session-key-validator.js\";\nimport type { SupportedValidators } from \"../validator/types.js\";\nimport type { ExtendedValidatorProviderParams } from \"./base.js\";\nimport type { ECDSAProvider } from \"./ecdsa-provider.js\";\nimport type { ERC165SessionKeyProvider } from \"./erc165-session-key-provider.js\";\nimport type { KillSwitchProvider } from \"./kill-switch-provider.js\";\nimport type {\n RecoveryProvider,\n RecoveryProviderParams,\n} from \"./recovery-provider.js\";\nimport type {\n SessionKeyProvider,\n PrefillSessionData,\n SessionKeyProviderParams,\n} from \"./session-key-provider.js\";\n\nexport type ValidatorProviderTypeMap = {\n ECDSA: ECDSAProvider;\n KILL_SWITCH: KillSwitchProvider;\n ERC165_SESSION_KEY: ERC165SessionKeyProvider;\n SESSION_KEY: SessionKeyProvider;\n RECOVERY: RecoveryProvider;\n};\n\nexport type ValidatorProviderParamsMap = {\n ECDSA: ExtendedValidatorProviderParams<ECDSAValidatorParams>;\n KILL_SWITCH: ExtendedValidatorProviderParams<KillSwitchValidatorParams>;\n ERC165_SESSION_KEY: ExtendedValidatorProviderParams<ERC165SessionKeyValidatorParams>;\n SESSION_KEY: ExtendedValidatorProviderParams<SessionKeyValidatorParams>;\n RECOVERY: RecoveryProviderParams;\n};\n\nexport type ValidatorProviderMap = {\n [V in SupportedValidators]: new (\n params: ValidatorProviderParamsMap[V]\n ) => ValidatorProviderTypeMap[V];\n};\n\nexport type { PrefillSessionData, SessionKeyProviderParams };\n"]}
@@ -0,0 +1,16 @@
1
+ export declare const RecoveryActionAbi: readonly [{
2
+ readonly inputs: readonly [{
3
+ readonly internalType: "address";
4
+ readonly name: "_validator";
5
+ readonly type: "address";
6
+ }, {
7
+ readonly internalType: "bytes";
8
+ readonly name: "_data";
9
+ readonly type: "bytes";
10
+ }];
11
+ readonly name: "doRecovery";
12
+ readonly outputs: readonly [];
13
+ readonly stateMutability: "nonpayable";
14
+ readonly type: "function";
15
+ }];
16
+ //# sourceMappingURL=RecoveryActionAbi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecoveryActionAbi.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/abis/RecoveryActionAbi.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;EAmBpB,CAAC"}