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

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 (186) hide show
  1. package/dist/esm/capabilities/eip7702Auth.d.ts +4 -0
  2. package/dist/esm/capabilities/eip7702Auth.js +18 -0
  3. package/dist/esm/capabilities/eip7702Auth.js.map +1 -0
  4. package/dist/esm/capabilities/index.d.ts +4 -0
  5. package/dist/esm/capabilities/index.js +2 -0
  6. package/dist/esm/capabilities/index.js.map +1 -1
  7. package/dist/esm/capabilities/overrides.js +8 -8
  8. package/dist/esm/capabilities/overrides.js.map +1 -1
  9. package/dist/esm/capabilities/permissions/index.d.ts +2 -2
  10. package/dist/esm/capabilities/permissions/index.js +6 -3
  11. package/dist/esm/capabilities/permissions/index.js.map +1 -1
  12. package/dist/esm/capabilities/permissions/mav2.js +1 -0
  13. package/dist/esm/capabilities/permissions/mav2.js.map +1 -1
  14. package/dist/esm/client/actions/getCallsStatus.d.ts +1 -2
  15. package/dist/esm/client/actions/getCallsStatus.js +19 -0
  16. package/dist/esm/client/actions/getCallsStatus.js.map +1 -1
  17. package/dist/esm/client/actions/grantPermissions.d.ts +10 -65
  18. package/dist/esm/client/actions/grantPermissions.js +63 -4
  19. package/dist/esm/client/actions/grantPermissions.js.map +1 -1
  20. package/dist/esm/client/actions/prepareCalls.d.ts +4 -4
  21. package/dist/esm/client/actions/prepareCalls.js +38 -5
  22. package/dist/esm/client/actions/prepareCalls.js.map +1 -1
  23. package/dist/esm/client/actions/requestAccount.d.ts +3 -4
  24. package/dist/esm/client/actions/requestAccount.js +18 -1
  25. package/dist/esm/client/actions/requestAccount.js.map +1 -1
  26. package/dist/esm/client/actions/sendPreparedCalls.d.ts +6 -14
  27. package/dist/esm/client/actions/sendPreparedCalls.js +11 -12
  28. package/dist/esm/client/actions/sendPreparedCalls.js.map +1 -1
  29. package/dist/esm/client/actions/signMessage.d.ts +3 -3
  30. package/dist/esm/client/actions/signMessage.js +18 -0
  31. package/dist/esm/client/actions/signMessage.js.map +1 -1
  32. package/dist/esm/client/actions/signPreparedCalls.d.ts +14 -0
  33. package/dist/esm/client/actions/signPreparedCalls.js +53 -0
  34. package/dist/esm/client/actions/signPreparedCalls.js.map +1 -0
  35. package/dist/esm/client/actions/signSignatureRequest.d.ts +9 -8
  36. package/dist/esm/client/actions/signSignatureRequest.js +69 -31
  37. package/dist/esm/client/actions/signSignatureRequest.js.map +1 -1
  38. package/dist/esm/client/actions/signTypedData.d.ts +2 -2
  39. package/dist/esm/client/actions/signTypedData.js +31 -0
  40. package/dist/esm/client/actions/signTypedData.js.map +1 -1
  41. package/dist/esm/client/client.e2e-test.js +47 -44
  42. package/dist/esm/client/client.e2e-test.js.map +1 -1
  43. package/dist/esm/client/decorator.d.ts +7 -5
  44. package/dist/esm/client/decorator.js +3 -1
  45. package/dist/esm/client/decorator.js.map +1 -1
  46. package/dist/esm/client/index.d.ts +35 -10
  47. package/dist/esm/client/index.js +0 -29
  48. package/dist/esm/client/index.js.map +1 -1
  49. package/dist/esm/exports/index.d.ts +2 -1
  50. package/dist/esm/exports/index.js +2 -1
  51. package/dist/esm/exports/index.js.map +1 -1
  52. package/dist/esm/isomorphic/actions/createSession.js +15 -18
  53. package/dist/esm/isomorphic/actions/createSession.js.map +1 -1
  54. package/dist/esm/isomorphic/actions/getCallsStatus.js +62 -9
  55. package/dist/esm/isomorphic/actions/getCallsStatus.js.map +1 -1
  56. package/dist/esm/isomorphic/actions/prepareCalls.js +39 -26
  57. package/dist/esm/isomorphic/actions/prepareCalls.js.map +1 -1
  58. package/dist/esm/isomorphic/actions/sendPreparedCalls.d.ts +3 -3
  59. package/dist/esm/isomorphic/actions/sendPreparedCalls.js +77 -37
  60. package/dist/esm/isomorphic/actions/sendPreparedCalls.js.map +1 -1
  61. package/dist/esm/isomorphic/client.d.ts +139 -13
  62. package/dist/esm/isomorphic/utils/7702.d.ts +13 -6
  63. package/dist/esm/isomorphic/utils/7702.js +48 -13
  64. package/dist/esm/isomorphic/utils/7702.js.map +1 -1
  65. package/dist/esm/isomorphic/utils/createAccount.d.ts +2 -2
  66. package/dist/esm/isomorphic/utils/createAccount.js +4 -3
  67. package/dist/esm/isomorphic/utils/createAccount.js.map +1 -1
  68. package/dist/esm/isomorphic/utils/decodeSignature.d.ts +3 -0
  69. package/dist/esm/isomorphic/utils/decodeSignature.js +13 -0
  70. package/dist/esm/isomorphic/utils/decodeSignature.js.map +1 -0
  71. package/dist/esm/isomorphic/utils/parsePermissionsContext.d.ts +2 -2
  72. package/dist/esm/isomorphic/utils/parsePermissionsContext.js +8 -7
  73. package/dist/esm/isomorphic/utils/parsePermissionsContext.js.map +1 -1
  74. package/dist/esm/local/client.d.ts +2 -2
  75. package/dist/esm/local/client.js +2 -3
  76. package/dist/esm/local/client.js.map +1 -1
  77. package/dist/esm/remote/client.d.ts +8 -2
  78. package/dist/esm/remote/client.js +3 -13
  79. package/dist/esm/remote/client.js.map +1 -1
  80. package/dist/esm/rpc/examples.d.ts +3 -3
  81. package/dist/esm/rpc/examples.js +3 -3
  82. package/dist/esm/rpc/examples.js.map +1 -1
  83. package/dist/esm/rpc/request.d.ts +362 -44
  84. package/dist/esm/rpc/request.js +26 -56
  85. package/dist/esm/rpc/request.js.map +1 -1
  86. package/dist/esm/rpc/schema.d.ts +325 -49
  87. package/dist/esm/rpc/schema.js.map +1 -1
  88. package/dist/esm/schemas.d.ts +454 -14
  89. package/dist/esm/schemas.js +168 -53
  90. package/dist/esm/schemas.js.map +1 -1
  91. package/dist/esm/types.d.ts +10 -10
  92. package/dist/esm/types.js.map +1 -1
  93. package/dist/types/capabilities/eip7702Auth.d.ts +5 -0
  94. package/dist/types/capabilities/eip7702Auth.d.ts.map +1 -0
  95. package/dist/types/capabilities/index.d.ts +4 -0
  96. package/dist/types/capabilities/index.d.ts.map +1 -1
  97. package/dist/types/capabilities/permissions/index.d.ts +2 -2
  98. package/dist/types/capabilities/permissions/index.d.ts.map +1 -1
  99. package/dist/types/capabilities/permissions/mav2.d.ts.map +1 -1
  100. package/dist/types/client/actions/getCallsStatus.d.ts +1 -2
  101. package/dist/types/client/actions/getCallsStatus.d.ts.map +1 -1
  102. package/dist/types/client/actions/grantPermissions.d.ts +10 -65
  103. package/dist/types/client/actions/grantPermissions.d.ts.map +1 -1
  104. package/dist/types/client/actions/prepareCalls.d.ts +4 -4
  105. package/dist/types/client/actions/prepareCalls.d.ts.map +1 -1
  106. package/dist/types/client/actions/requestAccount.d.ts +3 -4
  107. package/dist/types/client/actions/requestAccount.d.ts.map +1 -1
  108. package/dist/types/client/actions/sendPreparedCalls.d.ts +6 -14
  109. package/dist/types/client/actions/sendPreparedCalls.d.ts.map +1 -1
  110. package/dist/types/client/actions/signMessage.d.ts +3 -3
  111. package/dist/types/client/actions/signMessage.d.ts.map +1 -1
  112. package/dist/types/client/actions/signPreparedCalls.d.ts +15 -0
  113. package/dist/types/client/actions/signPreparedCalls.d.ts.map +1 -0
  114. package/dist/types/client/actions/signSignatureRequest.d.ts +9 -8
  115. package/dist/types/client/actions/signSignatureRequest.d.ts.map +1 -1
  116. package/dist/types/client/actions/signTypedData.d.ts +2 -2
  117. package/dist/types/client/actions/signTypedData.d.ts.map +1 -1
  118. package/dist/types/client/decorator.d.ts +7 -5
  119. package/dist/types/client/decorator.d.ts.map +1 -1
  120. package/dist/types/client/index.d.ts +35 -10
  121. package/dist/types/client/index.d.ts.map +1 -1
  122. package/dist/types/exports/index.d.ts +2 -1
  123. package/dist/types/exports/index.d.ts.map +1 -1
  124. package/dist/types/isomorphic/actions/createSession.d.ts.map +1 -1
  125. package/dist/types/isomorphic/actions/getCallsStatus.d.ts.map +1 -1
  126. package/dist/types/isomorphic/actions/prepareCalls.d.ts.map +1 -1
  127. package/dist/types/isomorphic/actions/sendPreparedCalls.d.ts +3 -3
  128. package/dist/types/isomorphic/actions/sendPreparedCalls.d.ts.map +1 -1
  129. package/dist/types/isomorphic/client.d.ts +139 -13
  130. package/dist/types/isomorphic/client.d.ts.map +1 -1
  131. package/dist/types/isomorphic/utils/7702.d.ts +13 -6
  132. package/dist/types/isomorphic/utils/7702.d.ts.map +1 -1
  133. package/dist/types/isomorphic/utils/createAccount.d.ts +2 -2
  134. package/dist/types/isomorphic/utils/createAccount.d.ts.map +1 -1
  135. package/dist/types/isomorphic/utils/decodeSignature.d.ts +4 -0
  136. package/dist/types/isomorphic/utils/decodeSignature.d.ts.map +1 -0
  137. package/dist/types/isomorphic/utils/parsePermissionsContext.d.ts +2 -2
  138. package/dist/types/isomorphic/utils/parsePermissionsContext.d.ts.map +1 -1
  139. package/dist/types/local/client.d.ts +2 -2
  140. package/dist/types/local/client.d.ts.map +1 -1
  141. package/dist/types/remote/client.d.ts +8 -2
  142. package/dist/types/remote/client.d.ts.map +1 -1
  143. package/dist/types/rpc/examples.d.ts +3 -3
  144. package/dist/types/rpc/examples.d.ts.map +1 -1
  145. package/dist/types/rpc/request.d.ts +362 -44
  146. package/dist/types/rpc/request.d.ts.map +1 -1
  147. package/dist/types/rpc/schema.d.ts +325 -49
  148. package/dist/types/rpc/schema.d.ts.map +1 -1
  149. package/dist/types/schemas.d.ts +454 -14
  150. package/dist/types/schemas.d.ts.map +1 -1
  151. package/dist/types/types.d.ts +10 -10
  152. package/dist/types/types.d.ts.map +1 -1
  153. package/package.json +2 -2
  154. package/src/capabilities/eip7702Auth.ts +26 -0
  155. package/src/capabilities/index.ts +2 -0
  156. package/src/capabilities/overrides.ts +8 -8
  157. package/src/capabilities/permissions/index.ts +8 -3
  158. package/src/capabilities/permissions/mav2.ts +1 -0
  159. package/src/client/actions/getCallsStatus.ts +0 -10
  160. package/src/client/actions/grantPermissions.ts +16 -84
  161. package/src/client/actions/prepareCalls.ts +18 -23
  162. package/src/client/actions/requestAccount.ts +9 -26
  163. package/src/client/actions/sendPreparedCalls.ts +17 -17
  164. package/src/client/actions/signMessage.ts +2 -17
  165. package/src/client/actions/signPreparedCalls.ts +71 -0
  166. package/src/client/actions/signSignatureRequest.ts +51 -47
  167. package/src/client/actions/signTypedData.ts +1 -16
  168. package/src/client/client.e2e-test.ts +54 -57
  169. package/src/client/decorator.ts +19 -15
  170. package/src/client/index.ts +16 -39
  171. package/src/exports/index.ts +2 -1
  172. package/src/isomorphic/actions/createSession.ts +17 -20
  173. package/src/isomorphic/actions/getCallsStatus.ts +82 -10
  174. package/src/isomorphic/actions/prepareCalls.ts +43 -27
  175. package/src/isomorphic/actions/sendPreparedCalls.ts +105 -55
  176. package/src/isomorphic/utils/7702.ts +79 -21
  177. package/src/isomorphic/utils/createAccount.ts +5 -5
  178. package/src/isomorphic/utils/decodeSignature.ts +18 -0
  179. package/src/isomorphic/utils/parsePermissionsContext.ts +9 -9
  180. package/src/local/client.ts +5 -11
  181. package/src/remote/client.ts +7 -22
  182. package/src/rpc/examples.ts +3 -4
  183. package/src/rpc/request.ts +41 -64
  184. package/src/rpc/schema.ts +2 -2
  185. package/src/schemas.ts +232 -54
  186. package/src/types.ts +9 -21
package/src/schemas.ts CHANGED
@@ -4,7 +4,18 @@ import {
4
4
  type SchemaOptions,
5
5
  type Static,
6
6
  } from "@sinclair/typebox";
7
- import { toHex, slice, pad, concat, hexToBigInt } from "viem";
7
+ import { yParityToV } from "ox/Signature";
8
+ import {
9
+ toHex,
10
+ slice,
11
+ pad,
12
+ concat,
13
+ hexToBigInt,
14
+ serializeSignature,
15
+ hexToNumber,
16
+ parseSignature,
17
+ numberToHex,
18
+ } from "viem";
8
19
 
9
20
  const UUID_V4_REGEX =
10
21
  /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
@@ -42,10 +53,10 @@ export const TypeUserOperationRequest_v6 = Type.Object({
42
53
  nonce: TypeHex(),
43
54
  initCode: Type.Union([
44
55
  TypeHex({
45
- title: "Present",
56
+ description: "Present",
46
57
  }),
47
58
  Type.Literal("0x", {
48
- title: "Absent",
59
+ description: "Absent",
49
60
  }),
50
61
  ]),
51
62
  callData: TypeHex(),
@@ -56,10 +67,10 @@ export const TypeUserOperationRequest_v6 = Type.Object({
56
67
  maxPriorityFeePerGas: TypeHex(),
57
68
  paymasterAndData: Type.Union([
58
69
  TypeHex({
59
- title: "Present",
70
+ description: "Present",
60
71
  }),
61
72
  Type.Literal("0x", {
62
- title: "Absent",
73
+ description: "Absent",
63
74
  }),
64
75
  ]),
65
76
  signature: TypeHex(),
@@ -83,21 +94,21 @@ export const TypeUserOperationRequest_v7 = Type.Object({
83
94
  signature: TypeHex(),
84
95
  });
85
96
 
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({
97
+ export const TypeEip7702UnsignedAuth = Type.Object({
93
98
  chainId: TypeHex(),
94
- nonce: TypeHex(),
95
99
  address: TypeAddress,
96
- r: TypeHex(),
97
- s: TypeHex(),
98
- yParity: TypeHex(),
100
+ nonce: TypeHex(),
99
101
  });
100
102
 
103
+ export const TypeEip7702SignedAuth = Type.Intersect([
104
+ TypeEip7702UnsignedAuth,
105
+ Type.Object({
106
+ r: TypeHex(),
107
+ s: TypeHex(),
108
+ yParity: TypeHex(),
109
+ }),
110
+ ]);
111
+
101
112
  export const TypeWebAuthnPublicKey = Type.Object({
102
113
  x: TypeU256,
103
114
  y: TypeU256,
@@ -108,11 +119,13 @@ export const TypePersistedInitcode = Type.Object({
108
119
  initcode: Type.Union([
109
120
  Type.Object(
110
121
  {
111
- factoryType: Type.Literal("unknown", { title: "Unknown factory type" }),
122
+ factoryType: Type.Literal("unknown", {
123
+ description: "Unknown factory type",
124
+ }),
112
125
  factoryData: TypeHex({}),
113
126
  },
114
127
  {
115
- title: "Unknown factory type",
128
+ description: "Unknown factory type",
116
129
  },
117
130
  ),
118
131
  Type.Object(
@@ -127,7 +140,7 @@ export const TypePersistedInitcode = Type.Object({
127
140
  initialOwner: TypeAddress,
128
141
  },
129
142
  {
130
- title: "Light Account",
143
+ description: "Light Account",
131
144
  },
132
145
  ),
133
146
  Type.Object(
@@ -140,7 +153,7 @@ export const TypePersistedInitcode = Type.Object({
140
153
  initialOwners: Type.Array(TypeAddress),
141
154
  },
142
155
  {
143
- title: "Multi-Owner Modular Account",
156
+ description: "Multi-Owner Modular Account",
144
157
  },
145
158
  ),
146
159
  Type.Object(
@@ -151,7 +164,7 @@ export const TypePersistedInitcode = Type.Object({
151
164
  threshold: TypeU256,
152
165
  },
153
166
  {
154
- title: "Multi-Sig Modular Account",
167
+ description: "Multi-Sig Modular Account",
155
168
  },
156
169
  ),
157
170
  Type.Intersect([
@@ -167,7 +180,7 @@ export const TypePersistedInitcode = Type.Object({
167
180
  entityId: TypeU32,
168
181
  },
169
182
  {
170
- title: "Modular Account V2 SSV",
183
+ description: "Modular Account V2 SSV",
171
184
  },
172
185
  ),
173
186
  Type.Object(
@@ -176,7 +189,7 @@ export const TypePersistedInitcode = Type.Object({
176
189
  initialOwner: TypeAddress,
177
190
  },
178
191
  {
179
- title: "Modular Account V2 SMA-B",
192
+ description: "Modular Account V2 SMA-B",
180
193
  },
181
194
  ),
182
195
  Type.Object(
@@ -186,7 +199,7 @@ export const TypePersistedInitcode = Type.Object({
186
199
  entityId: TypeU32,
187
200
  },
188
201
  {
189
- title: "Modular Account V2 WebAuthn",
202
+ description: "Modular Account V2 WebAuthn",
190
203
  },
191
204
  ),
192
205
  ]),
@@ -196,29 +209,29 @@ export const TypePersistedInitcode = Type.Object({
196
209
 
197
210
  export const TypeSerializedInitcode = Type.Object({
198
211
  factoryType: Type.Union([
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" }),
212
+ Type.Literal("LightAccountV1.0.1", { description: "Light Account v1.0.1" }),
213
+ Type.Literal("LightAccountV1.0.2", { description: "Light Account v1.0.2" }),
214
+ Type.Literal("LightAccountV1.1.0", { description: "Light Account v1.1.0" }),
215
+ Type.Literal("LightAccountV2.0.0", { description: "Light Account v2.0.0" }),
203
216
  Type.Literal("LightAccountV2.0.0-MultiOwner", {
204
- title: "Light Account v2.0.0 MultiOwner",
217
+ description: "Light Account v2.0.0 MultiOwner",
205
218
  }),
206
219
  Type.Literal("MAv1.0.0-MultiOwner", {
207
- title: "Modular Account v1.0.0 MultiOwner",
220
+ description: "Modular Account v1.0.0 MultiOwner",
208
221
  }),
209
222
  Type.Literal("MAv1.0.0-MultiSig", {
210
- title: "Modular Account v1.0.0 MultiSig",
223
+ description: "Modular Account v1.0.0 MultiSig",
211
224
  }),
212
225
  Type.Literal("MAv2.0.0-sma-b", {
213
- title: "Modular Account v2.0.0 SMA-B",
226
+ description: "Modular Account v2.0.0 SMA-B",
214
227
  }),
215
228
  Type.Literal("MAv2.0.0-ma-ssv", {
216
- title: "Modular Account v2.0.0 SSV",
229
+ description: "Modular Account v2.0.0 SSV",
217
230
  }),
218
231
  Type.Literal("MAv2.0.0-ma-webauthn", {
219
- title: "Modular Account v2.0.0 WebAuthn",
232
+ description: "Modular Account v2.0.0 WebAuthn",
220
233
  }),
221
- Type.Literal("unknown", { title: "Unknown factory type" }),
234
+ Type.Literal("unknown", { description: "Unknown factory type" }),
222
235
  ]),
223
236
  factoryAddress: TypeAddress,
224
237
  factoryData: TypeHex({}),
@@ -237,7 +250,7 @@ export const TypeCounterfactualInfo = Type.Intersect([
237
250
  TypePersistedInitcode,
238
251
  ],
239
252
  {
240
- title: "Smart Contract Account",
253
+ description: "Smart Contract Account",
241
254
  },
242
255
  ),
243
256
  Type.Object(
@@ -246,7 +259,7 @@ export const TypeCounterfactualInfo = Type.Intersect([
246
259
  implementationAddress: TypeAddress,
247
260
  },
248
261
  {
249
- title: "7702 Account",
262
+ description: "7702 Account",
250
263
  },
251
264
  ),
252
265
  ]),
@@ -262,7 +275,7 @@ export const TypeCreationOptions = Type.Optional(
262
275
  salt: Type.Optional(TypeHex()),
263
276
  },
264
277
  {
265
- title: "SMA-B account type",
278
+ description: "SMA-B account type",
266
279
  },
267
280
  ),
268
281
  Type.Object(
@@ -275,7 +288,7 @@ export const TypeCreationOptions = Type.Optional(
275
288
  // delegation: TypeAddress,
276
289
  },
277
290
  {
278
- title: "7702 account type",
291
+ description: "7702 account type",
279
292
  },
280
293
  ),
281
294
  ]),
@@ -287,11 +300,15 @@ export type TypeAccountType = Exclude<
287
300
  undefined
288
301
  >["accountType"];
289
302
 
303
+ export const TypeSignatureType = Type.Union([
304
+ Type.Literal("secp256k1", { description: "Secp256k1" }),
305
+ Type.Literal("ecdsa", { description: "ECDSA (alias for secp256k1)" }),
306
+ Type.Literal("contract", { description: "Contract" }),
307
+ ]);
308
+ export type TypeSignatureType = Static<typeof TypeSignatureType>;
309
+
290
310
  export const KeySigner = Type.Object({
291
- type: Type.Union([
292
- Type.Literal("secp256k1", { title: "Secp256k1" }),
293
- Type.Literal("contract", { title: "Contract" }),
294
- ]),
311
+ type: TypeSignatureType,
295
312
  publicKey: TypeHex({}),
296
313
  });
297
314
  export type KeySigner = Static<typeof KeySigner>;
@@ -342,37 +359,40 @@ export const TTypedDataDefinition = Type.Transform(
342
359
  };
343
360
  });
344
361
 
345
- const TypePersonalSignSignatureRequest = Type.Object(
362
+ export const TypePersonalSignSignatureRequest = Type.Object(
346
363
  {
347
364
  type: Type.Literal("personal_sign"),
348
365
  data: Type.Union([
349
- Type.String({ minLength: 1, title: "Message" }),
366
+ Type.String({ minLength: 1, description: "Message" }),
350
367
  Type.Object(
351
368
  {
352
369
  raw: TypeHex(),
353
370
  },
354
- { title: "Raw message" },
371
+ { description: "Raw message" },
355
372
  ),
356
373
  ]),
357
374
  },
358
- { title: "Personal sign" },
375
+ { description: "Personal sign" },
359
376
  );
360
377
 
361
- const TypeTypedDataSignatureRequest = Type.Object(
378
+ export const TypeTypedDataSignatureRequest = Type.Object(
362
379
  {
363
380
  type: Type.Literal("eth_signTypedData_v4"),
364
381
  data: TTypedDataDefinition,
365
382
  },
366
383
  {
367
- title: "Typed data",
384
+ description: "Typed data",
368
385
  },
369
386
  );
370
387
 
371
- export const TypeSignatureRequest = Type.Intersect([
372
- Type.Union([TypePersonalSignSignatureRequest, TypeTypedDataSignatureRequest]),
373
- Type.Object({
374
- authorizationRequest: Type.Optional(TypeEip7702AuthRequest),
375
- }),
388
+ export const TypeAuthorizationSignatureRequest = Type.Object({
389
+ type: Type.Literal("eip7702Auth"),
390
+ });
391
+
392
+ export const TypeSignatureRequest = Type.Union([
393
+ TypePersonalSignSignatureRequest,
394
+ TypeTypedDataSignatureRequest,
395
+ TypeAuthorizationSignatureRequest,
376
396
  ]);
377
397
 
378
398
  export const TypeCallId = Type.Transform(TypeHex())
@@ -386,3 +406,161 @@ export const TypeCallId = Type.Transform(TypeHex())
386
406
  const chainIdPadded = pad(chainId, { size: 32 });
387
407
  return concat([chainIdPadded, hash]);
388
408
  });
409
+
410
+ export const PreparedCall_UserOpV060 = Type.Object(
411
+ {
412
+ type: Type.Literal("user-operation-v060", {
413
+ description: "User Operation (Entrypoint v0.6.0)",
414
+ }),
415
+ data: Type.Omit(TypeUserOperationRequest_v6, ["signature"], {
416
+ description: "Unsigned User Operation (Entrypoint v0.6.0)",
417
+ }),
418
+ chainId: TypeHex(),
419
+ signatureRequest: Type.Union([
420
+ TypePersonalSignSignatureRequest,
421
+ TypeTypedDataSignatureRequest,
422
+ ]),
423
+ },
424
+ {
425
+ description: "Prepared User Operation (Entrypoint v0.6.0)",
426
+ },
427
+ );
428
+
429
+ export const PreparedCall_UserOpV070 = Type.Object(
430
+ {
431
+ type: Type.Literal("user-operation-v070", {
432
+ description: "User Operation (Entrypoint v0.7.0)",
433
+ }),
434
+ data: Type.Omit(TypeUserOperationRequest_v7, ["signature"], {
435
+ description: "Unsigned User Operation (Entrypoint v0.7.0)",
436
+ }),
437
+ chainId: TypeHex(),
438
+ signatureRequest: Type.Union([
439
+ TypePersonalSignSignatureRequest,
440
+ TypeTypedDataSignatureRequest,
441
+ ]),
442
+ },
443
+ {
444
+ description: "Prepared User Operation (Entrypoint v0.7.0)",
445
+ },
446
+ );
447
+
448
+ export const PreparedCall_Authorization = Type.Object(
449
+ {
450
+ type: Type.Literal("authorization", {
451
+ description: "EIP-7702 Authorization Request",
452
+ }),
453
+ data: Type.Omit(TypeEip7702UnsignedAuth, ["chainId"]),
454
+ chainId: TypeHex(),
455
+ signatureRequest: TypeAuthorizationSignatureRequest,
456
+ },
457
+ {
458
+ description: "Prepared EIP-7702 Authorization",
459
+ },
460
+ );
461
+
462
+ export const TypeEdcsaSigData = Type.Union([
463
+ TypeHex({
464
+ description: "Hex-encoded signature",
465
+ }),
466
+ Type.Transform(
467
+ Type.Object(
468
+ {
469
+ r: TypeHex(),
470
+ s: TypeHex(),
471
+ yParity: TypeHex(),
472
+ },
473
+ { description: "r, s, yParity" },
474
+ ),
475
+ )
476
+ .Decode((sig) =>
477
+ serializeSignature({ ...sig, yParity: hexToNumber(sig.yParity) }),
478
+ )
479
+ .Encode((hex) => {
480
+ const parsed = parseSignature(hex);
481
+ return {
482
+ ...parsed,
483
+ yParity: numberToHex(parsed.yParity),
484
+ };
485
+ }),
486
+ Type.Transform(
487
+ Type.Object(
488
+ {
489
+ r: TypeHex(),
490
+ s: TypeHex(),
491
+ v: TypeHex(),
492
+ },
493
+ {
494
+ description: "r, s, v",
495
+ },
496
+ ),
497
+ )
498
+ .Decode((sig) => serializeSignature({ ...sig, v: hexToBigInt(sig.v) }))
499
+ .Encode((hex) => {
500
+ const parsed = parseSignature(hex);
501
+ return {
502
+ ...parsed,
503
+ v: numberToHex(yParityToV(parsed.yParity)),
504
+ };
505
+ }),
506
+ ]);
507
+
508
+ export const TypeEcdsaSig = Type.Object({
509
+ signature: Type.Union([
510
+ Type.Object(
511
+ {
512
+ type: Type.Literal("secp256k1"),
513
+ data: TypeEdcsaSigData,
514
+ },
515
+ {
516
+ description: "Secp256k1 signature",
517
+ },
518
+ ),
519
+ Type.Object(
520
+ {
521
+ type: Type.Literal("ecdsa"),
522
+ data: TypeEdcsaSigData,
523
+ },
524
+ {
525
+ description: "ECDSA signature (alias for secp256k1)",
526
+ },
527
+ ),
528
+ ]),
529
+ });
530
+
531
+ export const TypePrepareCall_UserOpV060_Signed = Type.Intersect(
532
+ [Type.Omit(PreparedCall_UserOpV060, ["signatureRequest"]), TypeEcdsaSig],
533
+ {
534
+ description: "Prepared User Operation (Entrypoint v0.6.0) with signature",
535
+ },
536
+ );
537
+
538
+ export const TypePrepareCall_UserOpV070_Signed = Type.Intersect(
539
+ [Type.Omit(PreparedCall_UserOpV070, ["signatureRequest"]), TypeEcdsaSig],
540
+ {
541
+ description: "Prepared User Operation (Entrypoint v0.7.0) with signature",
542
+ },
543
+ );
544
+
545
+ export const TypePrepareCall_Authorization_Signed = Type.Intersect(
546
+ [Type.Omit(PreparedCall_Authorization, ["signatureRequest"]), TypeEcdsaSig],
547
+ {
548
+ description: "Prepared EIP-7702 Authorization with signature",
549
+ },
550
+ );
551
+
552
+ export const TypeCallArray = Type.Object(
553
+ {
554
+ type: Type.Literal("array"),
555
+ data: Type.Array(
556
+ Type.Union([
557
+ TypePrepareCall_UserOpV060_Signed,
558
+ TypePrepareCall_UserOpV070_Signed,
559
+ TypePrepareCall_Authorization_Signed,
560
+ ]),
561
+ ),
562
+ },
563
+ {
564
+ description: "Array of prepared calls with signatures",
565
+ },
566
+ );
package/src/types.ts CHANGED
@@ -5,7 +5,6 @@ import type {
5
5
  Chain,
6
6
  Client,
7
7
  Hex,
8
- IsUndefined,
9
8
  JsonRpcAccount,
10
9
  Transport,
11
10
  } from "viem";
@@ -17,32 +16,22 @@ import type { RequestAccountParams } from "./client/actions/requestAccount.ts";
17
16
  import type { WalletServerViemRpcSchema } from "./rpc/schema.ts";
18
17
 
19
18
  export type CreateInnerClientParams<
20
- TAccount extends JsonRpcAccount<Address> | undefined =
21
- | JsonRpcAccount<Address>
22
- | undefined,
19
+ TAccount extends Address | undefined = Address | undefined,
23
20
  > = {
24
21
  chain: Chain;
25
22
  transport: AlchemyTransport;
26
23
  policyId?: string;
27
- } & (IsUndefined<TAccount> extends true
28
- ? {
29
- account?: never;
30
- }
31
- : {
32
- account: Address;
33
- });
24
+ account?: TAccount | Address | undefined;
25
+ };
34
26
 
35
27
  export type InnerWalletApiClientBase<
36
- TAccount extends JsonRpcAccount<Address> | undefined =
37
- | JsonRpcAccount<Address>
38
- | undefined,
39
28
  TExtend extends { [key: string]: unknown } | undefined =
40
29
  | { [key: string]: unknown }
41
30
  | undefined,
42
31
  > = Client<
43
32
  Transport,
44
33
  Chain,
45
- TAccount,
34
+ JsonRpcAccount<Address> | undefined,
46
35
  WalletServerViemRpcSchema,
47
36
  { policyId?: string } & TExtend
48
37
  >;
@@ -64,11 +53,10 @@ export type InternalState = {
64
53
  getAccount: () => CachedAccount | undefined;
65
54
  };
66
55
 
67
- export type InnerWalletApiClient<
68
- TAccount extends JsonRpcAccount<Address> | undefined =
69
- | JsonRpcAccount<Address>
70
- | undefined,
71
- > = InnerWalletApiClientBase<
72
- TAccount,
56
+ export type InnerWalletApiClient = InnerWalletApiClientBase<
73
57
  InnerClientActions & { internal: InternalState }
74
58
  >;
59
+
60
+ export type WithoutChainId<T> = T extends { chainId: Hex }
61
+ ? Omit<T, "chainId">
62
+ : T;