@account-kit/wallet-client 0.1.0-alpha.2 → 0.1.0-alpha.4

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 (119) hide show
  1. package/dist/esm/capabilities/index.d.ts +5 -2
  2. package/dist/esm/capabilities/index.js +1 -1
  3. package/dist/esm/capabilities/index.js.map +1 -1
  4. package/dist/esm/capabilities/overrides.js +8 -8
  5. package/dist/esm/capabilities/overrides.js.map +1 -1
  6. package/dist/esm/capabilities/permissions/index.d.ts +10 -3
  7. package/dist/esm/capabilities/permissions/index.js +11 -2
  8. package/dist/esm/capabilities/permissions/index.js.map +1 -1
  9. package/dist/esm/capabilities/permissions/mav2.d.ts +2 -2
  10. package/dist/esm/capabilities/permissions/mav2.js +9 -1
  11. package/dist/esm/capabilities/permissions/mav2.js.map +1 -1
  12. package/dist/esm/client/actions/grantPermissions.d.ts +57 -3
  13. package/dist/esm/client/actions/grantPermissions.js +1 -0
  14. package/dist/esm/client/actions/grantPermissions.js.map +1 -1
  15. package/dist/esm/client/actions/requestAccount.js +2 -2
  16. package/dist/esm/client/actions/requestAccount.js.map +1 -1
  17. package/dist/esm/client/actions/signSignatureRequest.d.ts +4 -1
  18. package/dist/esm/client/actions/signSignatureRequest.js +22 -1
  19. package/dist/esm/client/actions/signSignatureRequest.js.map +1 -1
  20. package/dist/esm/client/client.e2e-test.js +13 -19
  21. package/dist/esm/client/client.e2e-test.js.map +1 -1
  22. package/dist/esm/client/index.d.ts +4 -3
  23. package/dist/esm/client/index.js +2 -2
  24. package/dist/esm/client/index.js.map +1 -1
  25. package/dist/esm/exports/index.d.ts +2 -2
  26. package/dist/esm/exports/index.js +1 -1
  27. package/dist/esm/exports/index.js.map +1 -1
  28. package/dist/esm/isomorphic/actions/createSession.js +25 -7
  29. package/dist/esm/isomorphic/actions/createSession.js.map +1 -1
  30. package/dist/esm/isomorphic/actions/prepareCalls.js +35 -12
  31. package/dist/esm/isomorphic/actions/prepareCalls.js.map +1 -1
  32. package/dist/esm/isomorphic/actions/sendPreparedCalls.js +26 -6
  33. package/dist/esm/isomorphic/actions/sendPreparedCalls.js.map +1 -1
  34. package/dist/esm/isomorphic/client.d.ts +11 -5
  35. package/dist/esm/isomorphic/utils/7702.d.ts +11 -0
  36. package/dist/esm/isomorphic/utils/7702.js +26 -0
  37. package/dist/esm/isomorphic/utils/7702.js.map +1 -0
  38. package/dist/esm/isomorphic/utils/createAccount.d.ts +2 -1
  39. package/dist/esm/isomorphic/utils/createAccount.js +30 -5
  40. package/dist/esm/isomorphic/utils/createAccount.js.map +1 -1
  41. package/dist/esm/isomorphic/utils/createDummySigner.js +3 -3
  42. package/dist/esm/isomorphic/utils/createDummySigner.js.map +1 -1
  43. package/dist/esm/isomorphic/utils/parsePermissionsContext.d.ts +2 -1
  44. package/dist/esm/isomorphic/utils/parsePermissionsContext.js +17 -5
  45. package/dist/esm/isomorphic/utils/parsePermissionsContext.js.map +1 -1
  46. package/dist/esm/local/client.js +2 -1
  47. package/dist/esm/local/client.js.map +1 -1
  48. package/dist/esm/remote/client.js +6 -2
  49. package/dist/esm/remote/client.js.map +1 -1
  50. package/dist/esm/rpc/examples.d.ts +230 -0
  51. package/dist/esm/rpc/examples.js +314 -0
  52. package/dist/esm/rpc/examples.js.map +1 -0
  53. package/dist/esm/rpc/request.d.ts +48 -17
  54. package/dist/esm/rpc/request.js +53 -14
  55. package/dist/esm/rpc/request.js.map +1 -1
  56. package/dist/esm/rpc/schema.d.ts +42 -11
  57. package/dist/esm/schemas.d.ts +29 -7
  58. package/dist/esm/schemas.js +120 -38
  59. package/dist/esm/schemas.js.map +1 -1
  60. package/dist/types/capabilities/index.d.ts +5 -2
  61. package/dist/types/capabilities/index.d.ts.map +1 -1
  62. package/dist/types/capabilities/overrides.d.ts.map +1 -1
  63. package/dist/types/capabilities/permissions/index.d.ts +10 -3
  64. package/dist/types/capabilities/permissions/index.d.ts.map +1 -1
  65. package/dist/types/capabilities/permissions/mav2.d.ts +2 -2
  66. package/dist/types/capabilities/permissions/mav2.d.ts.map +1 -1
  67. package/dist/types/client/actions/grantPermissions.d.ts +57 -3
  68. package/dist/types/client/actions/grantPermissions.d.ts.map +1 -1
  69. package/dist/types/client/actions/requestAccount.d.ts.map +1 -1
  70. package/dist/types/client/actions/signSignatureRequest.d.ts +4 -1
  71. package/dist/types/client/actions/signSignatureRequest.d.ts.map +1 -1
  72. package/dist/types/client/index.d.ts +4 -3
  73. package/dist/types/client/index.d.ts.map +1 -1
  74. package/dist/types/exports/index.d.ts +2 -2
  75. package/dist/types/exports/index.d.ts.map +1 -1
  76. package/dist/types/isomorphic/actions/createSession.d.ts.map +1 -1
  77. package/dist/types/isomorphic/actions/prepareCalls.d.ts.map +1 -1
  78. package/dist/types/isomorphic/actions/sendPreparedCalls.d.ts.map +1 -1
  79. package/dist/types/isomorphic/client.d.ts +11 -5
  80. package/dist/types/isomorphic/client.d.ts.map +1 -1
  81. package/dist/types/isomorphic/utils/7702.d.ts +12 -0
  82. package/dist/types/isomorphic/utils/7702.d.ts.map +1 -0
  83. package/dist/types/isomorphic/utils/createAccount.d.ts +2 -1
  84. package/dist/types/isomorphic/utils/createAccount.d.ts.map +1 -1
  85. package/dist/types/isomorphic/utils/createDummySigner.d.ts.map +1 -1
  86. package/dist/types/isomorphic/utils/parsePermissionsContext.d.ts +2 -1
  87. package/dist/types/isomorphic/utils/parsePermissionsContext.d.ts.map +1 -1
  88. package/dist/types/remote/client.d.ts.map +1 -1
  89. package/dist/types/rpc/examples.d.ts +231 -0
  90. package/dist/types/rpc/examples.d.ts.map +1 -0
  91. package/dist/types/rpc/request.d.ts +48 -17
  92. package/dist/types/rpc/request.d.ts.map +1 -1
  93. package/dist/types/rpc/schema.d.ts +42 -11
  94. package/dist/types/rpc/schema.d.ts.map +1 -1
  95. package/dist/types/schemas.d.ts +29 -7
  96. package/dist/types/schemas.d.ts.map +1 -1
  97. package/package.json +2 -2
  98. package/src/capabilities/index.ts +5 -8
  99. package/src/capabilities/overrides.ts +23 -8
  100. package/src/capabilities/permissions/index.ts +21 -5
  101. package/src/capabilities/permissions/mav2.ts +12 -2
  102. package/src/client/actions/grantPermissions.ts +57 -3
  103. package/src/client/actions/requestAccount.ts +2 -3
  104. package/src/client/actions/signSignatureRequest.ts +31 -3
  105. package/src/client/client.e2e-test.ts +14 -21
  106. package/src/client/index.ts +12 -10
  107. package/src/exports/index.ts +2 -1
  108. package/src/isomorphic/actions/createSession.ts +28 -7
  109. package/src/isomorphic/actions/prepareCalls.ts +38 -11
  110. package/src/isomorphic/actions/sendPreparedCalls.ts +47 -20
  111. package/src/isomorphic/utils/7702.ts +58 -0
  112. package/src/isomorphic/utils/createAccount.ts +38 -6
  113. package/src/isomorphic/utils/createDummySigner.ts +3 -2
  114. package/src/isomorphic/utils/parsePermissionsContext.ts +23 -7
  115. package/src/local/client.ts +2 -3
  116. package/src/remote/client.ts +12 -2
  117. package/src/rpc/examples.ts +343 -0
  118. package/src/rpc/request.ts +75 -26
  119. package/src/schemas.ts +218 -87
package/src/schemas.ts CHANGED
@@ -14,33 +14,54 @@ const BASE_64_URL_REGEX = /^[A-Za-z0-9_-]+$/; // Matches base64url encoded strin
14
14
  FormatRegistry.Set("base64url", (value) => BASE_64_URL_REGEX.test(value));
15
15
 
16
16
  export const TypeHex = (options?: SchemaOptions) =>
17
- Type.TemplateLiteral("0x${string}", options);
18
- export const TypeAddress = Type.TemplateLiteral("0x${string}");
19
- export const TypeUuid = Type.String({ format: "uuid" });
17
+ Type.TemplateLiteral("0x${string}", {
18
+ ...options,
19
+ });
20
+
21
+ export const TypeAddress = Type.TemplateLiteral("0x${string}", {});
22
+
23
+ export const TypeUuid = Type.String({
24
+ format: "uuid",
25
+ });
26
+
20
27
  export const TypeBase64UrlEncodedString = Type.String({
21
28
  format: "base64url",
22
29
  });
23
30
 
24
31
  // BigInt is not json-serializable, so it must be encoded as a string.
25
- export const TypeU256 = Type.Transform(Type.String())
32
+ export const TypeU256 = Type.Transform(Type.String({}))
26
33
  .Decode((value) => BigInt(value))
27
34
  .Encode((value) => toHex(value));
28
35
 
29
- export const TypeU32 = Type.Transform(Type.String())
36
+ export const TypeU32 = Type.Transform(Type.String({}))
30
37
  .Decode((value) => Number.parseInt(value, 16))
31
38
  .Encode((value) => toHex(value));
32
39
 
33
40
  export const TypeUserOperationRequest_v6 = Type.Object({
34
41
  sender: TypeAddress,
35
42
  nonce: TypeHex(),
36
- initCode: Type.Union([TypeHex(), Type.Literal("0x")]),
43
+ initCode: Type.Union([
44
+ TypeHex({
45
+ title: "Present",
46
+ }),
47
+ Type.Literal("0x", {
48
+ title: "Absent",
49
+ }),
50
+ ]),
37
51
  callData: TypeHex(),
38
52
  callGasLimit: TypeHex(),
39
53
  verificationGasLimit: TypeHex(),
40
54
  preVerificationGas: TypeHex(),
41
55
  maxFeePerGas: TypeHex(),
42
56
  maxPriorityFeePerGas: TypeHex(),
43
- paymasterAndData: Type.Union([TypeHex(), Type.Literal("0x")]),
57
+ paymasterAndData: Type.Union([
58
+ TypeHex({
59
+ title: "Present",
60
+ }),
61
+ Type.Literal("0x", {
62
+ title: "Absent",
63
+ }),
64
+ ]),
44
65
  signature: TypeHex(),
45
66
  });
46
67
 
@@ -62,6 +83,21 @@ export const TypeUserOperationRequest_v7 = Type.Object({
62
83
  signature: TypeHex(),
63
84
  });
64
85
 
86
+ export const TypeEip7702AuthRequest = Type.Object({
87
+ chainId: Type.Integer(),
88
+ address: TypeAddress,
89
+ nonce: Type.Integer(),
90
+ });
91
+
92
+ export const TypeEip7702AuthExtendedFields = Type.Object({
93
+ chainId: TypeHex(),
94
+ nonce: TypeHex(),
95
+ address: TypeAddress,
96
+ r: TypeHex(),
97
+ s: TypeHex(),
98
+ yParity: TypeHex(),
99
+ });
100
+
65
101
  export const TypeWebAuthnPublicKey = Type.Object({
66
102
  x: TypeU256,
67
103
  y: TypeU256,
@@ -70,54 +106,89 @@ export const TypeWebAuthnPublicKey = Type.Object({
70
106
  export const TypePersistedInitcode = Type.Object({
71
107
  factoryAddress: TypeAddress,
72
108
  initcode: Type.Union([
73
- Type.Object({
74
- factoryType: Type.Literal("unknown"),
75
- factoryData: TypeHex(),
76
- }),
77
- Type.Object({
78
- factoryType: Type.Union([
79
- Type.Literal("LightAccountV2.0.0"),
80
- Type.Literal("LightAccountV1.1.0"),
81
- Type.Literal("LightAccountV1.0.2"),
82
- Type.Literal("LightAccountV1.0.1"),
83
- ]),
84
- salt: TypeU256,
85
- initialOwner: TypeAddress,
86
- }),
87
- Type.Object({
88
- factoryType: Type.Union([
89
- Type.Literal("MAv1.0.0-MultiOwner"),
90
- Type.Literal("LightAccountV2.0.0-MultiOwner"),
91
- ]),
92
- salt: TypeU256,
93
- initialOwners: Type.Array(TypeAddress),
94
- }),
95
- Type.Object({
96
- factoryType: Type.Literal("MAv1.0.0-MultiSig"),
97
- salt: TypeU256,
98
- initialOwners: Type.Array(TypeAddress),
99
- threshold: TypeU256,
100
- }),
109
+ Type.Object(
110
+ {
111
+ factoryType: Type.Literal("unknown", { title: "Unknown factory type" }),
112
+ factoryData: TypeHex({}),
113
+ },
114
+ {
115
+ title: "Unknown factory type",
116
+ },
117
+ ),
118
+ Type.Object(
119
+ {
120
+ factoryType: Type.Union([
121
+ Type.Literal("LightAccountV2.0.0"),
122
+ Type.Literal("LightAccountV1.1.0"),
123
+ Type.Literal("LightAccountV1.0.2"),
124
+ Type.Literal("LightAccountV1.0.1"),
125
+ ]),
126
+ salt: TypeU256,
127
+ initialOwner: TypeAddress,
128
+ },
129
+ {
130
+ title: "Light Account",
131
+ },
132
+ ),
133
+ Type.Object(
134
+ {
135
+ factoryType: Type.Union([
136
+ Type.Literal("MAv1.0.0-MultiOwner"),
137
+ Type.Literal("LightAccountV2.0.0-MultiOwner"),
138
+ ]),
139
+ salt: TypeU256,
140
+ initialOwners: Type.Array(TypeAddress),
141
+ },
142
+ {
143
+ title: "Multi-Owner Modular Account",
144
+ },
145
+ ),
146
+ Type.Object(
147
+ {
148
+ factoryType: Type.Literal("MAv1.0.0-MultiSig"),
149
+ salt: TypeU256,
150
+ initialOwners: Type.Array(TypeAddress),
151
+ threshold: TypeU256,
152
+ },
153
+ {
154
+ title: "Multi-Sig Modular Account",
155
+ },
156
+ ),
101
157
  Type.Intersect([
102
158
  Type.Object({
103
159
  factoryType: Type.Literal("MAv2.0.0"),
104
160
  salt: TypeU256,
105
161
  }),
106
162
  Type.Union([
107
- Type.Object({
108
- mav2type: Type.Literal("ma-ssv"),
109
- initialOwner: TypeAddress,
110
- entityId: TypeU32,
111
- }),
112
- Type.Object({
113
- mav2type: Type.Literal("sma-b"),
114
- initialOwner: TypeAddress,
115
- }),
116
- Type.Object({
117
- mav2type: Type.Literal("ma-webauthn"),
118
- initialOwner: TypeWebAuthnPublicKey,
119
- entityId: TypeU32,
120
- }),
163
+ Type.Object(
164
+ {
165
+ mav2type: Type.Literal("ma-ssv"),
166
+ initialOwner: TypeAddress,
167
+ entityId: TypeU32,
168
+ },
169
+ {
170
+ title: "Modular Account V2 SSV",
171
+ },
172
+ ),
173
+ Type.Object(
174
+ {
175
+ mav2type: Type.Literal("sma-b"),
176
+ initialOwner: TypeAddress,
177
+ },
178
+ {
179
+ title: "Modular Account V2 SMA-B",
180
+ },
181
+ ),
182
+ Type.Object(
183
+ {
184
+ mav2type: Type.Literal("ma-webauthn"),
185
+ initialOwner: TypeWebAuthnPublicKey,
186
+ entityId: TypeU32,
187
+ },
188
+ {
189
+ title: "Modular Account V2 WebAuthn",
190
+ },
191
+ ),
121
192
  ]),
122
193
  ]),
123
194
  ]),
@@ -125,20 +196,32 @@ export const TypePersistedInitcode = Type.Object({
125
196
 
126
197
  export const TypeSerializedInitcode = Type.Object({
127
198
  factoryType: Type.Union([
128
- Type.Literal("LightAccountV1.0.1"),
129
- Type.Literal("LightAccountV1.0.2"),
130
- Type.Literal("LightAccountV1.1.0"),
131
- Type.Literal("LightAccountV2.0.0"),
132
- Type.Literal("LightAccountV2.0.0-MultiOwner"),
133
- Type.Literal("MAv1.0.0-MultiOwner"),
134
- Type.Literal("MAv1.0.0-MultiSig"),
135
- Type.Literal("MAv2.0.0-sma-b"),
136
- Type.Literal("MAv2.0.0-ma-ssv"),
137
- Type.Literal("MAv2.0.0-ma-webauthn"),
138
- Type.Literal("unknown"),
199
+ Type.Literal("LightAccountV1.0.1", { title: "Light Account v1.0.1" }),
200
+ Type.Literal("LightAccountV1.0.2", { title: "Light Account v1.0.2" }),
201
+ Type.Literal("LightAccountV1.1.0", { title: "Light Account v1.1.0" }),
202
+ Type.Literal("LightAccountV2.0.0", { title: "Light Account v2.0.0" }),
203
+ Type.Literal("LightAccountV2.0.0-MultiOwner", {
204
+ title: "Light Account v2.0.0 MultiOwner",
205
+ }),
206
+ Type.Literal("MAv1.0.0-MultiOwner", {
207
+ title: "Modular Account v1.0.0 MultiOwner",
208
+ }),
209
+ Type.Literal("MAv1.0.0-MultiSig", {
210
+ title: "Modular Account v1.0.0 MultiSig",
211
+ }),
212
+ Type.Literal("MAv2.0.0-sma-b", {
213
+ title: "Modular Account v2.0.0 SMA-B",
214
+ }),
215
+ Type.Literal("MAv2.0.0-ma-ssv", {
216
+ title: "Modular Account v2.0.0 SSV",
217
+ }),
218
+ Type.Literal("MAv2.0.0-ma-webauthn", {
219
+ title: "Modular Account v2.0.0 WebAuthn",
220
+ }),
221
+ Type.Literal("unknown", { title: "Unknown factory type" }),
139
222
  ]),
140
223
  factoryAddress: TypeAddress,
141
- factoryData: TypeHex(),
224
+ factoryData: TypeHex({}),
142
225
  });
143
226
 
144
227
  export const TypeCounterfactualInfo = Type.Intersect([
@@ -146,27 +229,55 @@ export const TypeCounterfactualInfo = Type.Intersect([
146
229
  accountAddress: TypeAddress,
147
230
  }),
148
231
  Type.Union([
149
- Type.Intersect([
150
- Type.Object({
151
- type: Type.Literal("sca"),
152
- }),
153
- TypePersistedInitcode,
154
- ]),
155
- Type.Object({
156
- type: Type.Literal("7702"),
157
- }),
232
+ Type.Intersect(
233
+ [
234
+ Type.Object({
235
+ type: Type.Literal("sca"),
236
+ }),
237
+ TypePersistedInitcode,
238
+ ],
239
+ {
240
+ title: "Smart Contract Account",
241
+ },
242
+ ),
243
+ Type.Object(
244
+ {
245
+ type: Type.Literal("7702"),
246
+ implementationAddress: TypeAddress,
247
+ },
248
+ {
249
+ title: "7702 Account",
250
+ },
251
+ ),
158
252
  ]),
159
253
  ]);
160
254
  export type TypeCounterfactualInfo = Static<typeof TypeCounterfactualInfo>;
161
255
 
162
256
  export const TypeCreationOptions = Type.Optional(
163
257
  Type.Union([
164
- Type.Object({
165
- // Optional b/c `sma-b` is the default if no accountType is specified.
166
- accountType: Type.Optional(Type.Literal("sma-b")),
167
- salt: Type.Optional(TypeHex()),
168
- }),
169
- // TODO: add more options after v0.
258
+ Type.Object(
259
+ {
260
+ // Optional b/c `sma-b` is the default if no accountType is specified.
261
+ accountType: Type.Optional(Type.Literal("sma-b")),
262
+ salt: Type.Optional(TypeHex()),
263
+ },
264
+ {
265
+ title: "SMA-B account type",
266
+ },
267
+ ),
268
+ Type.Object(
269
+ {
270
+ accountType: Type.Literal("7702"),
271
+ // TODO: Add support for specifying a delegation address.
272
+ // Currently we only support delegating to MAv2, and it's important
273
+ // that wallet applications maintain a strict shortlist of well-known
274
+ // accounts: https://github.com/ethereum/ERCs/pull/947/files#diff-dab085f963ca621595044bcbc0922705aa38b69f5bf8770dcb3d0496a633efcfR189
275
+ // delegation: TypeAddress,
276
+ },
277
+ {
278
+ title: "7702 account type",
279
+ },
280
+ ),
170
281
  ]),
171
282
  );
172
283
  export type TypeCreationOptions = Static<typeof TypeCreationOptions>;
@@ -177,8 +288,11 @@ export type TypeAccountType = Exclude<
177
288
  >["accountType"];
178
289
 
179
290
  export const KeySigner = Type.Object({
180
- type: Type.Union([Type.Literal("secp256k1"), Type.Literal("contract")]),
181
- publicKey: TypeHex(),
291
+ type: Type.Union([
292
+ Type.Literal("secp256k1", { title: "Secp256k1" }),
293
+ Type.Literal("contract", { title: "Contract" }),
294
+ ]),
295
+ publicKey: TypeHex({}),
182
296
  });
183
297
  export type KeySigner = Static<typeof KeySigner>;
184
298
 
@@ -186,7 +300,7 @@ export const TTypedDataDefinition = Type.Transform(
186
300
  Type.Object({
187
301
  domain: Type.Optional(
188
302
  Type.Object({
189
- chainId: Type.Optional(Type.Number()),
303
+ chainId: Type.Optional(Type.Integer()),
190
304
  name: Type.Optional(Type.String()),
191
305
  salt: Type.Optional(TypeHex()),
192
306
  verifyingContract: Type.Optional(TypeAddress),
@@ -228,19 +342,36 @@ export const TTypedDataDefinition = Type.Transform(
228
342
  };
229
343
  });
230
344
 
231
- export const TypeSignatureRequest = Type.Union([
232
- Type.Object({
345
+ const TypePersonalSignSignatureRequest = Type.Object(
346
+ {
233
347
  type: Type.Literal("personal_sign"),
234
348
  data: Type.Union([
235
- Type.String({ minLength: 1 }),
236
- Type.Object({
237
- raw: TypeHex(),
238
- }),
349
+ Type.String({ minLength: 1, title: "Message" }),
350
+ Type.Object(
351
+ {
352
+ raw: TypeHex(),
353
+ },
354
+ { title: "Raw message" },
355
+ ),
239
356
  ]),
240
- }),
241
- Type.Object({
357
+ },
358
+ { title: "Personal sign" },
359
+ );
360
+
361
+ const TypeTypedDataSignatureRequest = Type.Object(
362
+ {
242
363
  type: Type.Literal("eth_signTypedData_v4"),
243
364
  data: TTypedDataDefinition,
365
+ },
366
+ {
367
+ title: "Typed data",
368
+ },
369
+ );
370
+
371
+ export const TypeSignatureRequest = Type.Intersect([
372
+ Type.Union([TypePersonalSignSignatureRequest, TypeTypedDataSignatureRequest]),
373
+ Type.Object({
374
+ authorizationRequest: Type.Optional(TypeEip7702AuthRequest),
244
375
  }),
245
376
  ]);
246
377