@account-kit/wallet-client 0.1.0-alpha.9 → 4.50.0

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 (276) hide show
  1. package/LICENSE +21 -0
  2. package/dist/esm/client/actions/formatSign.d.ts +30 -0
  3. package/dist/esm/client/actions/formatSign.js +32 -0
  4. package/dist/esm/client/actions/formatSign.js.map +1 -0
  5. package/dist/esm/client/actions/getCallsStatus.d.ts +6 -3
  6. package/dist/esm/client/actions/getCallsStatus.js +3 -0
  7. package/dist/esm/client/actions/getCallsStatus.js.map +1 -1
  8. package/dist/esm/client/actions/grantPermissions.d.ts +10 -11
  9. package/dist/esm/client/actions/grantPermissions.js +26 -12
  10. package/dist/esm/client/actions/grantPermissions.js.map +1 -1
  11. package/dist/esm/client/actions/listAccounts.d.ts +10 -3
  12. package/dist/esm/client/actions/listAccounts.js +14 -2
  13. package/dist/esm/client/actions/listAccounts.js.map +1 -1
  14. package/dist/esm/client/actions/prepareCalls.d.ts +6 -3
  15. package/dist/esm/client/actions/prepareCalls.js +12 -8
  16. package/dist/esm/client/actions/prepareCalls.js.map +1 -1
  17. package/dist/esm/client/actions/prepareSign.d.ts +28 -0
  18. package/dist/esm/client/actions/prepareSign.js +31 -0
  19. package/dist/esm/client/actions/prepareSign.js.map +1 -0
  20. package/dist/esm/client/actions/requestAccount.d.ts +3 -1
  21. package/dist/esm/client/actions/requestAccount.js +5 -3
  22. package/dist/esm/client/actions/requestAccount.js.map +1 -1
  23. package/dist/esm/client/actions/sendPreparedCalls.d.ts +3 -1
  24. package/dist/esm/client/actions/sendPreparedCalls.js +2 -0
  25. package/dist/esm/client/actions/sendPreparedCalls.js.map +1 -1
  26. package/dist/esm/client/actions/signMessage.d.ts +5 -2
  27. package/dist/esm/client/actions/signMessage.js +5 -2
  28. package/dist/esm/client/actions/signMessage.js.map +1 -1
  29. package/dist/esm/client/actions/signPreparedCalls.d.ts +2 -2
  30. package/dist/esm/client/actions/signPreparedCalls.js +3 -3
  31. package/dist/esm/client/actions/signPreparedCalls.js.map +1 -1
  32. package/dist/esm/client/actions/signSignatureRequest.d.ts +6 -10
  33. package/dist/esm/client/actions/signSignatureRequest.js +4 -7
  34. package/dist/esm/client/actions/signSignatureRequest.js.map +1 -1
  35. package/dist/esm/client/actions/signTypedData.d.ts +2 -0
  36. package/dist/esm/client/actions/signTypedData.js +2 -0
  37. package/dist/esm/client/actions/signTypedData.js.map +1 -1
  38. package/dist/esm/client/decorator.d.ts +0 -2
  39. package/dist/esm/client/decorator.js +1 -3
  40. package/dist/esm/client/decorator.js.map +1 -1
  41. package/dist/esm/client/index.d.ts +10 -6
  42. package/dist/esm/client/index.js +18 -21
  43. package/dist/esm/client/index.js.map +1 -1
  44. package/dist/esm/exports/index.d.ts +1 -5
  45. package/dist/esm/exports/index.js +1 -6
  46. package/dist/esm/exports/index.js.map +1 -1
  47. package/dist/esm/internal/account.d.ts +33 -0
  48. package/dist/esm/{isomorphic/utils/createAccount.js → internal/account.js} +25 -49
  49. package/dist/esm/internal/account.js.map +1 -0
  50. package/dist/esm/types.d.ts +5 -11
  51. package/dist/esm/types.js.map +1 -1
  52. package/dist/esm/utils.d.ts +13 -1
  53. package/dist/esm/utils.js +13 -1
  54. package/dist/esm/utils.js.map +1 -1
  55. package/dist/esm/version.d.ts +1 -0
  56. package/dist/esm/version.js +4 -0
  57. package/dist/esm/version.js.map +1 -0
  58. package/dist/types/client/actions/formatSign.d.ts +31 -0
  59. package/dist/types/client/actions/formatSign.d.ts.map +1 -0
  60. package/dist/types/client/actions/getCallsStatus.d.ts +6 -3
  61. package/dist/types/client/actions/getCallsStatus.d.ts.map +1 -1
  62. package/dist/types/client/actions/grantPermissions.d.ts +10 -11
  63. package/dist/types/client/actions/grantPermissions.d.ts.map +1 -1
  64. package/dist/types/client/actions/listAccounts.d.ts +10 -3
  65. package/dist/types/client/actions/listAccounts.d.ts.map +1 -1
  66. package/dist/types/client/actions/prepareCalls.d.ts +6 -3
  67. package/dist/types/client/actions/prepareCalls.d.ts.map +1 -1
  68. package/dist/types/client/actions/prepareSign.d.ts +29 -0
  69. package/dist/types/client/actions/prepareSign.d.ts.map +1 -0
  70. package/dist/types/client/actions/requestAccount.d.ts +3 -1
  71. package/dist/types/client/actions/requestAccount.d.ts.map +1 -1
  72. package/dist/types/client/actions/sendPreparedCalls.d.ts +3 -1
  73. package/dist/types/client/actions/sendPreparedCalls.d.ts.map +1 -1
  74. package/dist/types/client/actions/signMessage.d.ts +5 -2
  75. package/dist/types/client/actions/signMessage.d.ts.map +1 -1
  76. package/dist/types/client/actions/signPreparedCalls.d.ts +2 -2
  77. package/dist/types/client/actions/signPreparedCalls.d.ts.map +1 -1
  78. package/dist/types/client/actions/signSignatureRequest.d.ts +6 -10
  79. package/dist/types/client/actions/signSignatureRequest.d.ts.map +1 -1
  80. package/dist/types/client/actions/signTypedData.d.ts +2 -0
  81. package/dist/types/client/actions/signTypedData.d.ts.map +1 -1
  82. package/dist/types/client/decorator.d.ts +0 -2
  83. package/dist/types/client/decorator.d.ts.map +1 -1
  84. package/dist/types/client/index.d.ts +10 -6
  85. package/dist/types/client/index.d.ts.map +1 -1
  86. package/dist/types/exports/index.d.ts +1 -5
  87. package/dist/types/exports/index.d.ts.map +1 -1
  88. package/dist/types/internal/account.d.ts +34 -0
  89. package/dist/types/internal/account.d.ts.map +1 -0
  90. package/dist/types/types.d.ts +5 -11
  91. package/dist/types/types.d.ts.map +1 -1
  92. package/dist/types/utils.d.ts +13 -1
  93. package/dist/types/utils.d.ts.map +1 -1
  94. package/dist/types/version.d.ts +2 -0
  95. package/dist/types/version.d.ts.map +1 -0
  96. package/package.json +33 -28
  97. package/src/client/actions/formatSign.ts +55 -0
  98. package/src/client/actions/getCallsStatus.ts +10 -6
  99. package/src/client/actions/grantPermissions.ts +46 -18
  100. package/src/client/actions/listAccounts.ts +22 -5
  101. package/src/client/actions/prepareCalls.ts +22 -16
  102. package/src/client/actions/prepareSign.ts +51 -0
  103. package/src/client/actions/requestAccount.ts +6 -4
  104. package/src/client/actions/sendPreparedCalls.ts +3 -1
  105. package/src/client/actions/signMessage.ts +5 -2
  106. package/src/client/actions/signPreparedCalls.ts +8 -12
  107. package/src/client/actions/signSignatureRequest.ts +12 -15
  108. package/src/client/actions/signTypedData.ts +2 -0
  109. package/src/client/decorator.ts +1 -8
  110. package/src/client/index.ts +41 -33
  111. package/src/exports/index.ts +1 -13
  112. package/src/internal/account.ts +120 -0
  113. package/src/types.ts +7 -18
  114. package/src/utils.ts +13 -1
  115. package/src/version.ts +3 -0
  116. package/dist/esm/capabilities/eip7702Auth.d.ts +0 -4
  117. package/dist/esm/capabilities/eip7702Auth.js +0 -18
  118. package/dist/esm/capabilities/eip7702Auth.js.map +0 -1
  119. package/dist/esm/capabilities/index.d.ts +0 -41
  120. package/dist/esm/capabilities/index.js +0 -14
  121. package/dist/esm/capabilities/index.js.map +0 -1
  122. package/dist/esm/capabilities/multiDimensionalNonce.d.ts +0 -3
  123. package/dist/esm/capabilities/multiDimensionalNonce.js +0 -7
  124. package/dist/esm/capabilities/multiDimensionalNonce.js.map +0 -1
  125. package/dist/esm/capabilities/overrides.d.ts +0 -26
  126. package/dist/esm/capabilities/overrides.js +0 -14
  127. package/dist/esm/capabilities/overrides.js.map +0 -1
  128. package/dist/esm/capabilities/paymaster.d.ts +0 -3
  129. package/dist/esm/capabilities/paymaster.js +0 -5
  130. package/dist/esm/capabilities/paymaster.js.map +0 -1
  131. package/dist/esm/capabilities/permissions/index.d.ts +0 -145
  132. package/dist/esm/capabilities/permissions/index.js +0 -83
  133. package/dist/esm/capabilities/permissions/index.js.map +0 -1
  134. package/dist/esm/capabilities/permissions/mav2.d.ts +0 -36
  135. package/dist/esm/capabilities/permissions/mav2.js +0 -88
  136. package/dist/esm/capabilities/permissions/mav2.js.map +0 -1
  137. package/dist/esm/client/actions/createAccount.d.ts +0 -35
  138. package/dist/esm/client/actions/createAccount.js +0 -32
  139. package/dist/esm/client/actions/createAccount.js.map +0 -1
  140. package/dist/esm/client/client.e2e-test.d.ts +0 -1
  141. package/dist/esm/client/client.e2e-test.js +0 -375
  142. package/dist/esm/client/client.e2e-test.js.map +0 -1
  143. package/dist/esm/exports/internal.d.ts +0 -14
  144. package/dist/esm/exports/internal.js +0 -16
  145. package/dist/esm/exports/internal.js.map +0 -1
  146. package/dist/esm/isomorphic/actions/createSession.d.ts +0 -14
  147. package/dist/esm/isomorphic/actions/createSession.js +0 -95
  148. package/dist/esm/isomorphic/actions/createSession.js.map +0 -1
  149. package/dist/esm/isomorphic/actions/getCallsStatus.d.ts +0 -21
  150. package/dist/esm/isomorphic/actions/getCallsStatus.js +0 -113
  151. package/dist/esm/isomorphic/actions/getCallsStatus.js.map +0 -1
  152. package/dist/esm/isomorphic/actions/prepareCalls.d.ts +0 -8
  153. package/dist/esm/isomorphic/actions/prepareCalls.js +0 -116
  154. package/dist/esm/isomorphic/actions/prepareCalls.js.map +0 -1
  155. package/dist/esm/isomorphic/actions/sendPreparedCalls.d.ts +0 -8
  156. package/dist/esm/isomorphic/actions/sendPreparedCalls.js +0 -157
  157. package/dist/esm/isomorphic/actions/sendPreparedCalls.js.map +0 -1
  158. package/dist/esm/isomorphic/client.d.ts +0 -239
  159. package/dist/esm/isomorphic/client.js +0 -37
  160. package/dist/esm/isomorphic/client.js.map +0 -1
  161. package/dist/esm/isomorphic/utils/7702.d.ts +0 -23
  162. package/dist/esm/isomorphic/utils/7702.js +0 -75
  163. package/dist/esm/isomorphic/utils/7702.js.map +0 -1
  164. package/dist/esm/isomorphic/utils/createAccount.d.ts +0 -24
  165. package/dist/esm/isomorphic/utils/createAccount.js.map +0 -1
  166. package/dist/esm/isomorphic/utils/createDummySigner.d.ts +0 -3
  167. package/dist/esm/isomorphic/utils/createDummySigner.js +0 -17
  168. package/dist/esm/isomorphic/utils/createDummySigner.js.map +0 -1
  169. package/dist/esm/isomorphic/utils/decodeSignature.d.ts +0 -3
  170. package/dist/esm/isomorphic/utils/decodeSignature.js +0 -13
  171. package/dist/esm/isomorphic/utils/decodeSignature.js.map +0 -1
  172. package/dist/esm/isomorphic/utils/parsePermissionsContext.d.ts +0 -21
  173. package/dist/esm/isomorphic/utils/parsePermissionsContext.js +0 -34
  174. package/dist/esm/isomorphic/utils/parsePermissionsContext.js.map +0 -1
  175. package/dist/esm/isomorphic/utils/supportsFeature.d.ts +0 -4
  176. package/dist/esm/isomorphic/utils/supportsFeature.js +0 -21
  177. package/dist/esm/isomorphic/utils/supportsFeature.js.map +0 -1
  178. package/dist/esm/local/client.d.ts +0 -3
  179. package/dist/esm/local/client.js +0 -97
  180. package/dist/esm/local/client.js.map +0 -1
  181. package/dist/esm/remote/client.d.ts +0 -9
  182. package/dist/esm/remote/client.js +0 -41
  183. package/dist/esm/remote/client.js.map +0 -1
  184. package/dist/esm/rpc/examples.d.ts +0 -230
  185. package/dist/esm/rpc/examples.js +0 -314
  186. package/dist/esm/rpc/examples.js.map +0 -1
  187. package/dist/esm/rpc/request.d.ts +0 -755
  188. package/dist/esm/rpc/request.js +0 -214
  189. package/dist/esm/rpc/request.js.map +0 -1
  190. package/dist/esm/rpc/schema.d.ts +0 -703
  191. package/dist/esm/rpc/schema.js +0 -5
  192. package/dist/esm/rpc/schema.js.map +0 -1
  193. package/dist/esm/schemas.d.ts +0 -712
  194. package/dist/esm/schemas.js +0 -463
  195. package/dist/esm/schemas.js.map +0 -1
  196. package/dist/types/capabilities/eip7702Auth.d.ts +0 -5
  197. package/dist/types/capabilities/eip7702Auth.d.ts.map +0 -1
  198. package/dist/types/capabilities/index.d.ts +0 -42
  199. package/dist/types/capabilities/index.d.ts.map +0 -1
  200. package/dist/types/capabilities/multiDimensionalNonce.d.ts +0 -4
  201. package/dist/types/capabilities/multiDimensionalNonce.d.ts.map +0 -1
  202. package/dist/types/capabilities/overrides.d.ts +0 -27
  203. package/dist/types/capabilities/overrides.d.ts.map +0 -1
  204. package/dist/types/capabilities/paymaster.d.ts +0 -4
  205. package/dist/types/capabilities/paymaster.d.ts.map +0 -1
  206. package/dist/types/capabilities/permissions/index.d.ts +0 -146
  207. package/dist/types/capabilities/permissions/index.d.ts.map +0 -1
  208. package/dist/types/capabilities/permissions/mav2.d.ts +0 -37
  209. package/dist/types/capabilities/permissions/mav2.d.ts.map +0 -1
  210. package/dist/types/client/actions/createAccount.d.ts +0 -36
  211. package/dist/types/client/actions/createAccount.d.ts.map +0 -1
  212. package/dist/types/client/client.e2e-test.d.ts +0 -2
  213. package/dist/types/client/client.e2e-test.d.ts.map +0 -1
  214. package/dist/types/exports/internal.d.ts +0 -15
  215. package/dist/types/exports/internal.d.ts.map +0 -1
  216. package/dist/types/isomorphic/actions/createSession.d.ts +0 -15
  217. package/dist/types/isomorphic/actions/createSession.d.ts.map +0 -1
  218. package/dist/types/isomorphic/actions/getCallsStatus.d.ts +0 -22
  219. package/dist/types/isomorphic/actions/getCallsStatus.d.ts.map +0 -1
  220. package/dist/types/isomorphic/actions/prepareCalls.d.ts +0 -9
  221. package/dist/types/isomorphic/actions/prepareCalls.d.ts.map +0 -1
  222. package/dist/types/isomorphic/actions/sendPreparedCalls.d.ts +0 -9
  223. package/dist/types/isomorphic/actions/sendPreparedCalls.d.ts.map +0 -1
  224. package/dist/types/isomorphic/client.d.ts +0 -240
  225. package/dist/types/isomorphic/client.d.ts.map +0 -1
  226. package/dist/types/isomorphic/utils/7702.d.ts +0 -24
  227. package/dist/types/isomorphic/utils/7702.d.ts.map +0 -1
  228. package/dist/types/isomorphic/utils/createAccount.d.ts +0 -25
  229. package/dist/types/isomorphic/utils/createAccount.d.ts.map +0 -1
  230. package/dist/types/isomorphic/utils/createDummySigner.d.ts +0 -4
  231. package/dist/types/isomorphic/utils/createDummySigner.d.ts.map +0 -1
  232. package/dist/types/isomorphic/utils/decodeSignature.d.ts +0 -4
  233. package/dist/types/isomorphic/utils/decodeSignature.d.ts.map +0 -1
  234. package/dist/types/isomorphic/utils/parsePermissionsContext.d.ts +0 -22
  235. package/dist/types/isomorphic/utils/parsePermissionsContext.d.ts.map +0 -1
  236. package/dist/types/isomorphic/utils/supportsFeature.d.ts +0 -5
  237. package/dist/types/isomorphic/utils/supportsFeature.d.ts.map +0 -1
  238. package/dist/types/local/client.d.ts +0 -4
  239. package/dist/types/local/client.d.ts.map +0 -1
  240. package/dist/types/remote/client.d.ts +0 -10
  241. package/dist/types/remote/client.d.ts.map +0 -1
  242. package/dist/types/rpc/examples.d.ts +0 -231
  243. package/dist/types/rpc/examples.d.ts.map +0 -1
  244. package/dist/types/rpc/request.d.ts +0 -756
  245. package/dist/types/rpc/request.d.ts.map +0 -1
  246. package/dist/types/rpc/schema.d.ts +0 -704
  247. package/dist/types/rpc/schema.d.ts.map +0 -1
  248. package/dist/types/schemas.d.ts +0 -713
  249. package/dist/types/schemas.d.ts.map +0 -1
  250. package/src/capabilities/eip7702Auth.ts +0 -26
  251. package/src/capabilities/index.ts +0 -14
  252. package/src/capabilities/multiDimensionalNonce.ts +0 -7
  253. package/src/capabilities/overrides.ts +0 -35
  254. package/src/capabilities/paymaster.ts +0 -5
  255. package/src/capabilities/permissions/index.ts +0 -163
  256. package/src/capabilities/permissions/mav2.ts +0 -138
  257. package/src/client/actions/createAccount.ts +0 -53
  258. package/src/client/client.e2e-test.ts +0 -463
  259. package/src/exports/internal.ts +0 -17
  260. package/src/isomorphic/actions/createSession.ts +0 -159
  261. package/src/isomorphic/actions/getCallsStatus.ts +0 -170
  262. package/src/isomorphic/actions/prepareCalls.ts +0 -170
  263. package/src/isomorphic/actions/sendPreparedCalls.ts +0 -232
  264. package/src/isomorphic/client.ts +0 -94
  265. package/src/isomorphic/utils/7702.ts +0 -143
  266. package/src/isomorphic/utils/createAccount.ts +0 -170
  267. package/src/isomorphic/utils/createDummySigner.ts +0 -27
  268. package/src/isomorphic/utils/decodeSignature.ts +0 -18
  269. package/src/isomorphic/utils/parsePermissionsContext.ts +0 -49
  270. package/src/isomorphic/utils/supportsFeature.ts +0 -34
  271. package/src/local/client.ts +0 -136
  272. package/src/remote/client.ts +0 -67
  273. package/src/rpc/examples.ts +0 -342
  274. package/src/rpc/request.ts +0 -300
  275. package/src/rpc/schema.ts +0 -40
  276. package/src/schemas.ts +0 -657
package/src/schemas.ts DELETED
@@ -1,657 +0,0 @@
1
- import {
2
- FormatRegistry,
3
- Type,
4
- type SchemaOptions,
5
- type Static,
6
- } from "@sinclair/typebox";
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";
19
- import type { Expect } from "./utils.ts";
20
-
21
- const UUID_V4_REGEX =
22
- /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
23
- FormatRegistry.Set("uuid", (value) => UUID_V4_REGEX.test(value));
24
-
25
- const BASE_64_URL_REGEX = /^[A-Za-z0-9_-]+$/; // Matches base64url encoded strings (without padding)
26
- FormatRegistry.Set("base64url", (value) => BASE_64_URL_REGEX.test(value));
27
-
28
- export const baseAccountTypes = [
29
- "sma-b",
30
- "la-v2",
31
- "la-v2-multi-owner",
32
- "la-v1.0.1",
33
- "la-v1.0.2",
34
- "la-v1.1.0",
35
- "ma-v1-multi-owner",
36
- ] as const;
37
-
38
- export type BaseAccountType = (typeof baseAccountTypes)[number];
39
-
40
- export const accountTypes = [...baseAccountTypes, "7702"] as const;
41
-
42
- export type AccountType = (typeof accountTypes)[number];
43
-
44
- export const TypeHex = (options?: SchemaOptions) =>
45
- Type.TemplateLiteral("0x${string}", {
46
- ...options,
47
- });
48
-
49
- export const TypeAddress = Type.TemplateLiteral("0x${string}", {});
50
-
51
- export const TypeUuid = Type.String({
52
- format: "uuid",
53
- });
54
-
55
- export const TypeBase64UrlEncodedString = Type.String({
56
- format: "base64url",
57
- });
58
-
59
- // BigInt is not json-serializable, so it must be encoded as a string.
60
- export const TypeU256 = Type.Transform(Type.String({}))
61
- .Decode((value) => BigInt(value))
62
- .Encode((value) => toHex(value));
63
-
64
- export const TypeU32 = Type.Transform(Type.String({}))
65
- .Decode((value) => Number.parseInt(value, 16))
66
- .Encode((value) => toHex(value));
67
-
68
- export const TypeUserOperationRequest_v6 = Type.Object({
69
- sender: TypeAddress,
70
- nonce: TypeHex(),
71
- initCode: Type.Union([
72
- TypeHex({
73
- description: "Present",
74
- }),
75
- Type.Literal("0x", {
76
- description: "Absent",
77
- }),
78
- ]),
79
- callData: TypeHex(),
80
- callGasLimit: TypeHex(),
81
- verificationGasLimit: TypeHex(),
82
- preVerificationGas: TypeHex(),
83
- maxFeePerGas: TypeHex(),
84
- maxPriorityFeePerGas: TypeHex(),
85
- paymasterAndData: Type.Union([
86
- TypeHex({
87
- description: "Present",
88
- }),
89
- Type.Literal("0x", {
90
- description: "Absent",
91
- }),
92
- ]),
93
- signature: TypeHex(),
94
- });
95
-
96
- export const TypeUserOperationRequest_v7 = Type.Object({
97
- sender: TypeAddress,
98
- nonce: TypeHex(),
99
- factory: Type.Optional(TypeAddress),
100
- factoryData: Type.Optional(TypeHex()),
101
- callData: TypeHex(),
102
- callGasLimit: TypeHex(),
103
- verificationGasLimit: TypeHex(),
104
- preVerificationGas: TypeHex(),
105
- maxFeePerGas: TypeHex(),
106
- maxPriorityFeePerGas: TypeHex(),
107
- paymaster: Type.Optional(TypeAddress),
108
- paymasterData: Type.Optional(TypeHex()),
109
- paymasterVerificationGasLimit: Type.Optional(TypeHex()),
110
- paymasterPostOpGasLimit: Type.Optional(TypeHex()),
111
- signature: TypeHex(),
112
- });
113
-
114
- export const TypeEip7702UnsignedAuth = Type.Object({
115
- chainId: TypeHex(),
116
- address: TypeAddress,
117
- nonce: TypeHex(),
118
- });
119
-
120
- export const TypeEip7702SignedAuth = Type.Intersect([
121
- TypeEip7702UnsignedAuth,
122
- Type.Object({
123
- r: TypeHex(),
124
- s: TypeHex(),
125
- yParity: TypeHex(),
126
- }),
127
- ]);
128
-
129
- export const TypeWebAuthnPublicKey = Type.Object({
130
- x: TypeU256,
131
- y: TypeU256,
132
- });
133
-
134
- export const TypePersistedInitcode = Type.Object({
135
- factoryAddress: TypeAddress,
136
- initcode: Type.Union([
137
- Type.Object(
138
- {
139
- factoryType: Type.Literal("unknown", {
140
- description: "Unknown factory type",
141
- }),
142
- factoryData: TypeHex({}),
143
- },
144
- {
145
- description: "Unknown factory type",
146
- },
147
- ),
148
- Type.Object(
149
- {
150
- factoryType: Type.Union([
151
- Type.Literal("LightAccountV2.0.0"),
152
- Type.Literal("LightAccountV1.1.0"),
153
- Type.Literal("LightAccountV1.0.2"),
154
- Type.Literal("LightAccountV1.0.1"),
155
- ]),
156
- salt: TypeU256,
157
- initialOwner: TypeAddress,
158
- },
159
- {
160
- description: "Light Account",
161
- },
162
- ),
163
- Type.Object(
164
- {
165
- factoryType: Type.Union([
166
- Type.Literal("MAv1.0.0-MultiOwner"),
167
- Type.Literal("LightAccountV2.0.0-MultiOwner"),
168
- ]),
169
- salt: TypeU256,
170
- initialOwners: Type.Array(TypeAddress),
171
- },
172
- {
173
- description: "Multi-Owner Modular Account",
174
- },
175
- ),
176
- Type.Object(
177
- {
178
- factoryType: Type.Literal("MAv1.0.0-MultiSig"),
179
- salt: TypeU256,
180
- initialOwners: Type.Array(TypeAddress),
181
- threshold: TypeU256,
182
- },
183
- {
184
- description: "Multi-Sig Modular Account",
185
- },
186
- ),
187
- Type.Intersect([
188
- Type.Object({
189
- factoryType: Type.Literal("MAv2.0.0"),
190
- salt: TypeU256,
191
- }),
192
- Type.Union([
193
- Type.Object(
194
- {
195
- mav2type: Type.Literal("ma-ssv"),
196
- initialOwner: TypeAddress,
197
- entityId: TypeU32,
198
- },
199
- {
200
- description: "Modular Account V2 SSV",
201
- },
202
- ),
203
- Type.Object(
204
- {
205
- mav2type: Type.Literal("sma-b"),
206
- initialOwner: TypeAddress,
207
- },
208
- {
209
- description: "Modular Account V2 SMA-B",
210
- },
211
- ),
212
- Type.Object(
213
- {
214
- mav2type: Type.Literal("ma-webauthn"),
215
- initialOwner: TypeWebAuthnPublicKey,
216
- entityId: TypeU32,
217
- },
218
- {
219
- description: "Modular Account V2 WebAuthn",
220
- },
221
- ),
222
- ]),
223
- ]),
224
- ]),
225
- });
226
-
227
- export const TypeSerializedInitcode = Type.Object({
228
- factoryType: Type.Union([
229
- Type.Literal("LightAccountV1.0.1", { description: "Light Account v1.0.1" }),
230
- Type.Literal("LightAccountV1.0.2", { description: "Light Account v1.0.2" }),
231
- Type.Literal("LightAccountV1.1.0", { description: "Light Account v1.1.0" }),
232
- Type.Literal("LightAccountV2.0.0", { description: "Light Account v2.0.0" }),
233
- Type.Literal("LightAccountV2.0.0-MultiOwner", {
234
- description: "Light Account v2.0.0 MultiOwner",
235
- }),
236
- Type.Literal("MAv1.0.0-MultiOwner", {
237
- description: "Modular Account v1.0.0 MultiOwner",
238
- }),
239
- Type.Literal("MAv1.0.0-MultiSig", {
240
- description: "Modular Account v1.0.0 MultiSig",
241
- }),
242
- Type.Literal("MAv2.0.0-sma-b", {
243
- description: "Modular Account v2.0.0 SMA-B",
244
- }),
245
- Type.Literal("MAv2.0.0-ma-ssv", {
246
- description: "Modular Account v2.0.0 SSV",
247
- }),
248
- Type.Literal("MAv2.0.0-ma-webauthn", {
249
- description: "Modular Account v2.0.0 WebAuthn",
250
- }),
251
- Type.Literal("unknown", { description: "Unknown factory type" }),
252
- ]),
253
- factoryAddress: TypeAddress,
254
- factoryData: TypeHex({}),
255
- });
256
-
257
- export const TypeCounterfactualInfo = Type.Intersect([
258
- Type.Object({
259
- accountAddress: TypeAddress,
260
- }),
261
- Type.Union([
262
- Type.Intersect(
263
- [
264
- Type.Object({
265
- type: Type.Literal("sca"),
266
- }),
267
- TypePersistedInitcode,
268
- ],
269
- {
270
- description: "Smart Contract Account",
271
- },
272
- ),
273
- Type.Object(
274
- {
275
- type: Type.Literal("7702"),
276
- implementationAddress: TypeAddress,
277
- },
278
- {
279
- description: "7702 Account",
280
- },
281
- ),
282
- ]),
283
- ]);
284
- export type TypeCounterfactualInfo = Static<typeof TypeCounterfactualInfo>;
285
-
286
- export const TypeCreationOptions = Type.Optional(
287
- Type.Union([
288
- Type.Object(
289
- {
290
- // Optional b/c `sma-b` is the default if no accountType is specified.
291
- accountType: Type.Optional(Type.Literal("sma-b")),
292
- salt: Type.Optional(TypeHex()),
293
- },
294
- {
295
- description: "Modular Account V2 SMA-B account type",
296
- },
297
- ),
298
- Type.Object(
299
- {
300
- accountType: Type.Literal("la-v2"),
301
- salt: Type.Optional(TypeHex()),
302
- },
303
- {
304
- description: "Light Account V2 account type",
305
- },
306
- ),
307
- Type.Object(
308
- {
309
- accountType: Type.Literal("la-v2-multi-owner"),
310
- salt: Type.Optional(TypeHex()),
311
- initialOwners: Type.Optional(
312
- Type.Array(TypeAddress, {
313
- description:
314
- "The initial owners of the account. The signer address will be implicitly added if not specified in this list.",
315
- }),
316
- ),
317
- },
318
- {
319
- description: "Light Account V2 Multi-Owner account type",
320
- },
321
- ),
322
- Type.Object(
323
- {
324
- accountType: Type.Literal("la-v1.0.1"),
325
- salt: Type.Optional(TypeHex()),
326
- },
327
- {
328
- description: "Light Account V1.0.1 account type",
329
- },
330
- ),
331
- Type.Object(
332
- {
333
- accountType: Type.Literal("la-v1.0.2"),
334
- salt: Type.Optional(TypeHex()),
335
- },
336
- {
337
- description: "Light Account V1.0.2 account type",
338
- },
339
- ),
340
- Type.Object(
341
- {
342
- accountType: Type.Literal("la-v1.1.0"),
343
- salt: Type.Optional(TypeHex()),
344
- },
345
- {
346
- description: "Light Account V1.1.0 account type",
347
- },
348
- ),
349
- Type.Object(
350
- {
351
- accountType: Type.Literal("ma-v1-multi-owner"),
352
- salt: Type.Optional(TypeHex()),
353
- initialOwners: Type.Optional(
354
- Type.Array(TypeAddress, {
355
- description:
356
- "The initial owners of the account. The signer address will be implicitly added if not specified in this list.",
357
- }),
358
- ),
359
- },
360
- {
361
- description: "Modular Account V1 Multi-Owner account type",
362
- },
363
- ),
364
- Type.Object(
365
- {
366
- accountType: Type.Literal("7702"),
367
- // TODO: Add support for specifying a delegation address.
368
- // Currently we only support delegating to MAv2, and it's important
369
- // that wallet applications maintain a strict shortlist of well-known
370
- // accounts: https://github.com/ethereum/ERCs/pull/947/files#diff-dab085f963ca621595044bcbc0922705aa38b69f5bf8770dcb3d0496a633efcfR189
371
- // delegation: TypeAddress,
372
- },
373
- {
374
- description: "7702 account type",
375
- },
376
- ),
377
- ]),
378
- );
379
- export type TypeCreationOptions = Static<typeof TypeCreationOptions>;
380
-
381
- type BaseAccountTypeExhaustive = BaseAccountType extends Exclude<
382
- Static<typeof TypeCreationOptions>,
383
- undefined
384
- >["accountType"]
385
- ? true
386
- : "BaseAccountType values not fully covered in TypeCreationOptions";
387
-
388
- // Compile-time assertion that TypeCreationOptions covers all BaseAccountType values.
389
- type _AssertBaseAccountTypeExhaustive = Expect<BaseAccountTypeExhaustive>;
390
-
391
- export const TypeSignatureType = Type.Union([
392
- Type.Literal("secp256k1", { description: "Secp256k1" }),
393
- Type.Literal("ecdsa", { description: "ECDSA (alias for secp256k1)" }),
394
- Type.Literal("contract", { description: "Contract" }),
395
- ]);
396
- export type TypeSignatureType = Static<typeof TypeSignatureType>;
397
-
398
- export const KeySigner = Type.Object({
399
- type: TypeSignatureType,
400
- publicKey: TypeHex({}),
401
- });
402
- export type KeySigner = Static<typeof KeySigner>;
403
-
404
- export const TTypedDataDefinition = Type.Transform(
405
- Type.Object({
406
- domain: Type.Optional(
407
- Type.Object({
408
- chainId: Type.Optional(Type.Integer()),
409
- name: Type.Optional(Type.String()),
410
- salt: Type.Optional(TypeHex()),
411
- verifyingContract: Type.Optional(TypeAddress),
412
- version: Type.Optional(Type.String()),
413
- }),
414
- ),
415
- types: Type.Record(
416
- Type.String(),
417
- Type.Array(
418
- Type.Object({
419
- name: Type.String(),
420
- type: Type.String(),
421
- }),
422
- ),
423
- ),
424
- primaryType: Type.String(),
425
- message: Type.Record(Type.String(), Type.Unknown()),
426
- }),
427
- )
428
- // No-op b/c Viem is happy w/ the encoded version too.
429
- .Decode((it) => it)
430
- // Encode the TypedDataDefinition into our json-serialized format.
431
- .Encode(({ domain, types, primaryType, message }) => {
432
- return {
433
- domain: {
434
- ...domain,
435
- chainId:
436
- typeof domain?.chainId === "bigint"
437
- ? Number(domain.chainId)
438
- : domain?.chainId,
439
- },
440
- types,
441
- primaryType,
442
- message: JSON.parse(
443
- JSON.stringify(message, (_, v) =>
444
- typeof v === "bigint" ? toHex(v) : v,
445
- ),
446
- ),
447
- };
448
- });
449
-
450
- export const TypePersonalSignSignatureRequest = Type.Object(
451
- {
452
- type: Type.Literal("personal_sign"),
453
- data: Type.Union([
454
- Type.String({ minLength: 1, description: "Message" }),
455
- Type.Object(
456
- {
457
- raw: TypeHex(),
458
- },
459
- { description: "Raw message" },
460
- ),
461
- ]),
462
- rawPayload: TypeHex(),
463
- },
464
- { description: "Personal sign" },
465
- );
466
-
467
- export const TypeTypedDataSignatureRequest = Type.Object(
468
- {
469
- type: Type.Literal("eth_signTypedData_v4"),
470
- data: TTypedDataDefinition,
471
- rawPayload: TypeHex(),
472
- },
473
- {
474
- description: "Typed data",
475
- },
476
- );
477
-
478
- export const TypeAuthorizationSignatureRequest = Type.Object({
479
- type: Type.Literal("eip7702Auth"),
480
- rawPayload: TypeHex(),
481
- });
482
-
483
- export const TypeSignatureRequest = Type.Union([
484
- TypePersonalSignSignatureRequest,
485
- TypeTypedDataSignatureRequest,
486
- TypeAuthorizationSignatureRequest,
487
- ]);
488
-
489
- export const TypeCallId = Type.Transform(TypeHex())
490
- .Decode((value) => {
491
- return {
492
- chainId: toHex(hexToBigInt(slice(value, 0, 32))),
493
- hash: slice(value, 32),
494
- };
495
- })
496
- .Encode(({ chainId, hash }) => {
497
- const chainIdPadded = pad(chainId, { size: 32 });
498
- return concat([chainIdPadded, hash]);
499
- });
500
-
501
- export const PreparedCall_UserOpV060 = Type.Object(
502
- {
503
- type: Type.Literal("user-operation-v060", {
504
- description: "User Operation (Entrypoint v0.6.0)",
505
- }),
506
- data: Type.Omit(TypeUserOperationRequest_v6, ["signature"], {
507
- description: "Unsigned User Operation (Entrypoint v0.6.0)",
508
- }),
509
- chainId: TypeHex(),
510
- signatureRequest: Type.Union([
511
- TypePersonalSignSignatureRequest,
512
- TypeTypedDataSignatureRequest,
513
- ]),
514
- },
515
- {
516
- description: "Prepared User Operation (Entrypoint v0.6.0)",
517
- },
518
- );
519
-
520
- export const PreparedCall_UserOpV070 = Type.Object(
521
- {
522
- type: Type.Literal("user-operation-v070", {
523
- description: "User Operation (Entrypoint v0.7.0)",
524
- }),
525
- data: Type.Omit(TypeUserOperationRequest_v7, ["signature"], {
526
- description: "Unsigned User Operation (Entrypoint v0.7.0)",
527
- }),
528
- chainId: TypeHex(),
529
- signatureRequest: Type.Union([
530
- TypePersonalSignSignatureRequest,
531
- TypeTypedDataSignatureRequest,
532
- ]),
533
- },
534
- {
535
- description: "Prepared User Operation (Entrypoint v0.7.0)",
536
- },
537
- );
538
-
539
- export const PreparedCall_Authorization = Type.Object(
540
- {
541
- type: Type.Literal("authorization", {
542
- description: "EIP-7702 Authorization Request",
543
- }),
544
- data: Type.Omit(TypeEip7702UnsignedAuth, ["chainId"]),
545
- chainId: TypeHex(),
546
- signatureRequest: TypeAuthorizationSignatureRequest,
547
- },
548
- {
549
- description: "Prepared EIP-7702 Authorization",
550
- },
551
- );
552
-
553
- export const TypeEdcsaSigData = Type.Union([
554
- TypeHex({
555
- description: "Hex-encoded signature",
556
- }),
557
- Type.Transform(
558
- Type.Object(
559
- {
560
- r: TypeHex(),
561
- s: TypeHex(),
562
- yParity: TypeHex(),
563
- },
564
- { description: "r, s, yParity" },
565
- ),
566
- )
567
- .Decode((sig) =>
568
- serializeSignature({ ...sig, yParity: hexToNumber(sig.yParity) }),
569
- )
570
- .Encode((hex) => {
571
- const parsed = parseSignature(hex);
572
- return {
573
- ...parsed,
574
- yParity: numberToHex(parsed.yParity),
575
- };
576
- }),
577
- Type.Transform(
578
- Type.Object(
579
- {
580
- r: TypeHex(),
581
- s: TypeHex(),
582
- v: TypeHex(),
583
- },
584
- {
585
- description: "r, s, v",
586
- },
587
- ),
588
- )
589
- .Decode((sig) => serializeSignature({ ...sig, v: hexToBigInt(sig.v) }))
590
- .Encode((hex) => {
591
- const parsed = parseSignature(hex);
592
- return {
593
- ...parsed,
594
- v: numberToHex(yParityToV(parsed.yParity)),
595
- };
596
- }),
597
- ]);
598
-
599
- export const TypeEcdsaSig = Type.Object({
600
- signature: Type.Union([
601
- Type.Object(
602
- {
603
- type: Type.Literal("secp256k1"),
604
- data: TypeEdcsaSigData,
605
- },
606
- {
607
- description: "Secp256k1 signature",
608
- },
609
- ),
610
- Type.Object(
611
- {
612
- type: Type.Literal("ecdsa"),
613
- data: TypeEdcsaSigData,
614
- },
615
- {
616
- description: "ECDSA signature (alias for secp256k1)",
617
- },
618
- ),
619
- ]),
620
- });
621
-
622
- export const TypePrepareCall_UserOpV060_Signed = Type.Intersect(
623
- [Type.Omit(PreparedCall_UserOpV060, ["signatureRequest"]), TypeEcdsaSig],
624
- {
625
- description: "Prepared User Operation (Entrypoint v0.6.0) with signature",
626
- },
627
- );
628
-
629
- export const TypePrepareCall_UserOpV070_Signed = Type.Intersect(
630
- [Type.Omit(PreparedCall_UserOpV070, ["signatureRequest"]), TypeEcdsaSig],
631
- {
632
- description: "Prepared User Operation (Entrypoint v0.7.0) with signature",
633
- },
634
- );
635
-
636
- export const TypePrepareCall_Authorization_Signed = Type.Intersect(
637
- [Type.Omit(PreparedCall_Authorization, ["signatureRequest"]), TypeEcdsaSig],
638
- {
639
- description: "Prepared EIP-7702 Authorization with signature",
640
- },
641
- );
642
-
643
- export const TypeCallArray = Type.Object(
644
- {
645
- type: Type.Literal("array"),
646
- data: Type.Array(
647
- Type.Union([
648
- TypePrepareCall_UserOpV060_Signed,
649
- TypePrepareCall_UserOpV070_Signed,
650
- TypePrepareCall_Authorization_Signed,
651
- ]),
652
- ),
653
- },
654
- {
655
- description: "Array of prepared calls with signatures",
656
- },
657
- );