@zerodev/sdk 4.0.26 → 4.0.28

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 (96) hide show
  1. package/README.md +1 -693
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/kernel-zerodev/account.d.ts +1 -0
  4. package/dist/cjs/kernel-zerodev/account.js +27 -5
  5. package/dist/cjs/kernel-zerodev/account.js.map +1 -1
  6. package/dist/cjs/kernel-zerodev/api/index.d.ts +2 -0
  7. package/dist/cjs/kernel-zerodev/api/index.js +18 -1
  8. package/dist/cjs/kernel-zerodev/api/index.js.map +1 -1
  9. package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -0
  10. package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.js +6 -0
  11. package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.js.map +1 -1
  12. package/dist/cjs/kernel-zerodev/owner/passkey/createPasskeyOwner.js.map +1 -1
  13. package/dist/cjs/kernel-zerodev/owner/passkey/exceptions.js +1 -1
  14. package/dist/cjs/kernel-zerodev/owner/passkey/exceptions.js.map +1 -1
  15. package/dist/cjs/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.js +3 -3
  16. package/dist/cjs/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.js.map +1 -1
  17. package/dist/cjs/kernel-zerodev/owner/passkey/getPasskeyOwner.d.ts +1 -1
  18. package/dist/cjs/kernel-zerodev/owner/passkey/getPasskeyOwner.js +4 -2
  19. package/dist/cjs/kernel-zerodev/owner/passkey/getPasskeyOwner.js.map +1 -1
  20. package/dist/cjs/kernel-zerodev/owner/passkey/index.d.ts +1 -1
  21. package/dist/cjs/kernel-zerodev/owner/passkey/index.js.map +1 -1
  22. package/dist/cjs/kernel-zerodev/owner/passkey/utils.js +2 -2
  23. package/dist/cjs/kernel-zerodev/owner/passkey/utils.js.map +1 -1
  24. package/dist/cjs/kernel-zerodev/paymaster/token-paymaster.js +3 -1
  25. package/dist/cjs/kernel-zerodev/paymaster/token-paymaster.js.map +1 -1
  26. package/dist/cjs/kernel-zerodev/provider.js +2 -2
  27. package/dist/cjs/kernel-zerodev/provider.js.map +1 -1
  28. package/dist/cjs/kernel-zerodev/validator/recovery-validator.d.ts +8 -5
  29. package/dist/cjs/kernel-zerodev/validator/recovery-validator.js +50 -9
  30. package/dist/cjs/kernel-zerodev/validator/recovery-validator.js.map +1 -1
  31. package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.js +20 -32
  32. package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.js.map +1 -1
  33. package/dist/esm/index.js.map +1 -1
  34. package/dist/esm/kernel-zerodev/account.d.ts +1 -0
  35. package/dist/esm/kernel-zerodev/account.js +29 -7
  36. package/dist/esm/kernel-zerodev/account.js.map +1 -1
  37. package/dist/esm/kernel-zerodev/api/index.d.ts +2 -0
  38. package/dist/esm/kernel-zerodev/api/index.js +16 -0
  39. package/dist/esm/kernel-zerodev/api/index.js.map +1 -1
  40. package/dist/esm/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -0
  41. package/dist/esm/kernel-zerodev/ethers-provider/account-signer.js +6 -0
  42. package/dist/esm/kernel-zerodev/ethers-provider/account-signer.js.map +1 -1
  43. package/dist/esm/kernel-zerodev/owner/passkey/createPasskeyOwner.js.map +1 -1
  44. package/dist/esm/kernel-zerodev/owner/passkey/exceptions.js +1 -1
  45. package/dist/esm/kernel-zerodev/owner/passkey/exceptions.js.map +1 -1
  46. package/dist/esm/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.js +3 -3
  47. package/dist/esm/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.js.map +1 -1
  48. package/dist/esm/kernel-zerodev/owner/passkey/getPasskeyOwner.d.ts +1 -1
  49. package/dist/esm/kernel-zerodev/owner/passkey/getPasskeyOwner.js +4 -2
  50. package/dist/esm/kernel-zerodev/owner/passkey/getPasskeyOwner.js.map +1 -1
  51. package/dist/esm/kernel-zerodev/owner/passkey/index.d.ts +1 -1
  52. package/dist/esm/kernel-zerodev/owner/passkey/index.js +1 -1
  53. package/dist/esm/kernel-zerodev/owner/passkey/index.js.map +1 -1
  54. package/dist/esm/kernel-zerodev/owner/passkey/utils.js +2 -2
  55. package/dist/esm/kernel-zerodev/owner/passkey/utils.js.map +1 -1
  56. package/dist/esm/kernel-zerodev/paymaster/token-paymaster.js +4 -2
  57. package/dist/esm/kernel-zerodev/paymaster/token-paymaster.js.map +1 -1
  58. package/dist/esm/kernel-zerodev/provider.js +2 -2
  59. package/dist/esm/kernel-zerodev/provider.js.map +1 -1
  60. package/dist/esm/kernel-zerodev/validator/recovery-validator.d.ts +8 -5
  61. package/dist/esm/kernel-zerodev/validator/recovery-validator.js +52 -11
  62. package/dist/esm/kernel-zerodev/validator/recovery-validator.js.map +1 -1
  63. package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.js +23 -32
  64. package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.js.map +1 -1
  65. package/dist/types/index.d.ts.map +1 -1
  66. package/dist/types/kernel-zerodev/account.d.ts +1 -0
  67. package/dist/types/kernel-zerodev/account.d.ts.map +1 -1
  68. package/dist/types/kernel-zerodev/api/index.d.ts +2 -0
  69. package/dist/types/kernel-zerodev/api/index.d.ts.map +1 -1
  70. package/dist/types/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -0
  71. package/dist/types/kernel-zerodev/ethers-provider/account-signer.d.ts.map +1 -1
  72. package/dist/types/kernel-zerodev/owner/passkey/exceptions.d.ts.map +1 -1
  73. package/dist/types/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.d.ts.map +1 -1
  74. package/dist/types/kernel-zerodev/owner/passkey/getPasskeyOwner.d.ts +1 -1
  75. package/dist/types/kernel-zerodev/owner/passkey/getPasskeyOwner.d.ts.map +1 -1
  76. package/dist/types/kernel-zerodev/owner/passkey/index.d.ts +1 -1
  77. package/dist/types/kernel-zerodev/owner/passkey/utils.d.ts.map +1 -1
  78. package/dist/types/kernel-zerodev/paymaster/token-paymaster.d.ts.map +1 -1
  79. package/dist/types/kernel-zerodev/validator/recovery-validator.d.ts +8 -5
  80. package/dist/types/kernel-zerodev/validator/recovery-validator.d.ts.map +1 -1
  81. package/dist/types/kernel-zerodev/validator-provider/recovery-provider.d.ts.map +1 -1
  82. package/package.json +1 -1
  83. package/src/index.ts +1 -0
  84. package/src/kernel-zerodev/account.ts +30 -9
  85. package/src/kernel-zerodev/api/index.ts +27 -0
  86. package/src/kernel-zerodev/ethers-provider/account-signer.ts +9 -0
  87. package/src/kernel-zerodev/owner/passkey/createPasskeyOwner.ts +4 -4
  88. package/src/kernel-zerodev/owner/passkey/exceptions.ts +2 -2
  89. package/src/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.ts +11 -9
  90. package/src/kernel-zerodev/owner/passkey/getPasskeyOwner.ts +5 -3
  91. package/src/kernel-zerodev/owner/passkey/index.ts +1 -1
  92. package/src/kernel-zerodev/owner/passkey/utils.ts +11 -6
  93. package/src/kernel-zerodev/paymaster/token-paymaster.ts +12 -2
  94. package/src/kernel-zerodev/provider.ts +2 -2
  95. package/src/kernel-zerodev/validator/recovery-validator.ts +59 -12
  96. package/src/kernel-zerodev/validator-provider/recovery-provider.ts +38 -36
@@ -12,9 +12,14 @@ import {
12
12
  type Address,
13
13
  type SendUserOperationResult,
14
14
  } from "@alchemy/aa-core";
15
- import { getChainId, getRecoveryData, setSignatures } from "../api/index.js";
15
+ import {
16
+ getChainId,
17
+ getRecoveryData,
18
+ postRecoveryData,
19
+ setSignatures,
20
+ } from "../api/index.js";
16
21
  import { polygonMumbai } from "viem/chains";
17
- import { BACKEND_URL, RECOVERY_VALIDATOR_ADDRESS } from "../constants.js";
22
+ import { CHAIN_ID_TO_NODE, RECOVERY_VALIDATOR_ADDRESS } from "../constants.js";
18
23
  import {
19
24
  encodeAbiParameters,
20
25
  encodeFunctionData,
@@ -23,11 +28,11 @@ import {
23
28
  keccak256,
24
29
  publicActions,
25
30
  type TransactionReceipt,
26
- concatHex,
31
+ createPublicClient,
32
+ http,
27
33
  } from "viem";
28
34
  import { RecoveryActionAbi } from "../abis/RecoveryActionAbi.js";
29
35
  import { KernelAccountAbi } from "../abis/KernelAccountAbi.js";
30
- import axios from "axios";
31
36
  import { base64ToBytes, bytesToBase64 } from "../utils.js";
32
37
 
33
38
  export interface RecoveryProviderParams
@@ -50,6 +55,7 @@ export class RecoveryProvider extends ValidatorProvider<
50
55
  const validator = new RecoveryValidator({
51
56
  projectId: params.projectId,
52
57
  chain,
58
+ recoveryId: params.recoveryId,
53
59
  validatorAddress:
54
60
  params.opts?.validatorConfig?.validatorAddress ??
55
61
  RECOVERY_VALIDATOR_ADDRESS,
@@ -92,6 +98,20 @@ export class RecoveryProvider extends ValidatorProvider<
92
98
  recoveryConfig = RecoveryProvider.deserializeRecoveryConfig(
93
99
  serializedRecoveryConfig
94
100
  );
101
+ } else if (
102
+ params.opts?.accountConfig?.accountAddress &&
103
+ (!params.opts?.validatorConfig?.guardians ||
104
+ !Object.entries(params.opts?.validatorConfig?.guardians).length ||
105
+ params.opts.validatorConfig.threshold === undefined)
106
+ ) {
107
+ const publicClient = createPublicClient({
108
+ transport: http(CHAIN_ID_TO_NODE[chain?.id ?? polygonMumbai.id]),
109
+ chain: chain ?? polygonMumbai,
110
+ });
111
+ recoveryConfig = await RecoveryValidator.fetchRecoveryConfigFromContract(
112
+ params.opts?.accountConfig?.accountAddress,
113
+ publicClient
114
+ );
95
115
  }
96
116
  const instance = new RecoveryProvider({
97
117
  enableData,
@@ -160,28 +180,18 @@ export class RecoveryProvider extends ValidatorProvider<
160
180
  }
161
181
 
162
182
  async initiateRecovery(enableData: Hex): Promise<string> {
163
- try {
164
- const serializedConfig = this.serializeRecoveryConfig();
165
- const {
166
- data: { recoveryId },
167
- } = await axios.post(
168
- `${BACKEND_URL}/v1/recovery`,
169
- {
170
- enableData,
171
- scwAddress: await this.getAddress(),
172
- recoveryConfig: serializedConfig,
173
- },
174
- {
175
- headers: { "Content-Type": "application/json" },
176
- }
177
- );
178
- console.log(recoveryId);
179
- this.enableData = enableData;
180
- return recoveryId;
181
- } catch (error) {
182
- console.log(error);
183
+ const serializedConfig = this.serializeRecoveryConfig();
184
+ const recoveryId = await postRecoveryData(
185
+ enableData,
186
+ await this.getAddress(),
187
+ serializedConfig
188
+ );
189
+ console.log(recoveryId);
190
+ this.enableData = enableData;
191
+ if (!recoveryId) {
183
192
  throw Error("Unable to generate the recoveryId");
184
193
  }
194
+ return recoveryId;
185
195
  }
186
196
 
187
197
  serializeRecoveryConfig(): string {
@@ -246,20 +256,11 @@ export class RecoveryProvider extends ValidatorProvider<
246
256
  const sig = await this.getValidator().signRecoveryHash(
247
257
  callDataAndNonceHash
248
258
  );
249
- let sigs = this.getValidator().getRecoverySignatures();
250
- if (sigs) {
251
- sigs =
252
- sigs.toLowerCase().indexOf(sig.toLowerCase()) === -1
253
- ? concatHex([sigs, sig])
254
- : sigs;
255
- } else {
256
- sigs = sig;
257
- }
258
- this.getValidator().setRecoverySignatures(sigs);
259
- const { result } = await setSignatures(this.recoveryId, sigs);
259
+ const { result, data } = await setSignatures(this.recoveryId, sig);
260
260
  if (result !== "success") {
261
261
  throw Error("Failed to save the signatures");
262
262
  }
263
+ this.getValidator().setRecoverySignatures(data.signatures);
263
264
  } catch (error) {
264
265
  console.log(error);
265
266
  }
@@ -273,7 +274,8 @@ export class RecoveryProvider extends ValidatorProvider<
273
274
  if (!fetchedEnableData) {
274
275
  throw Error("Unable to fetch enable data for Recovery");
275
276
  }
276
- const signatures = sigs ?? this.getValidator().getRecoverySignatures();
277
+ const signatures =
278
+ sigs ?? (await this.getValidator().getRecoverySignatures());
277
279
  if (!signatures) {
278
280
  throw Error("Signatures are not set");
279
281
  }