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