@account-kit/wallet-client 0.1.0-alpha.1 → 0.1.0-alpha.11

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 (258) hide show
  1. package/dist/esm/client/actions/createAccount.d.ts +27 -2
  2. package/dist/esm/client/actions/createAccount.js +25 -0
  3. package/dist/esm/client/actions/createAccount.js.map +1 -1
  4. package/dist/esm/client/actions/formatSign.d.ts +28 -0
  5. package/dist/esm/client/actions/formatSign.js +30 -0
  6. package/dist/esm/client/actions/formatSign.js.map +1 -0
  7. package/dist/esm/client/actions/getCallsStatus.d.ts +22 -4
  8. package/dist/esm/client/actions/getCallsStatus.js +19 -0
  9. package/dist/esm/client/actions/getCallsStatus.js.map +1 -1
  10. package/dist/esm/client/actions/grantPermissions.d.ts +63 -6
  11. package/dist/esm/client/actions/grantPermissions.js +63 -3
  12. package/dist/esm/client/actions/grantPermissions.js.map +1 -1
  13. package/dist/esm/client/actions/listAccounts.d.ts +32 -4
  14. package/dist/esm/client/actions/listAccounts.js +35 -2
  15. package/dist/esm/client/actions/listAccounts.js.map +1 -1
  16. package/dist/esm/client/actions/prepareCalls.d.ts +32 -6
  17. package/dist/esm/client/actions/prepareCalls.js +39 -5
  18. package/dist/esm/client/actions/prepareCalls.js.map +1 -1
  19. package/dist/esm/client/actions/prepareSign.d.ts +25 -0
  20. package/dist/esm/client/actions/prepareSign.js +28 -0
  21. package/dist/esm/client/actions/prepareSign.js.map +1 -0
  22. package/dist/esm/client/actions/requestAccount.d.ts +24 -6
  23. package/dist/esm/client/actions/requestAccount.js +38 -7
  24. package/dist/esm/client/actions/requestAccount.js.map +1 -1
  25. package/dist/esm/client/actions/sendPreparedCalls.d.ts +33 -4
  26. package/dist/esm/client/actions/sendPreparedCalls.js +37 -1
  27. package/dist/esm/client/actions/sendPreparedCalls.js.map +1 -1
  28. package/dist/esm/client/actions/signMessage.d.ts +25 -5
  29. package/dist/esm/client/actions/signMessage.js +22 -2
  30. package/dist/esm/client/actions/signMessage.js.map +1 -1
  31. package/dist/esm/client/actions/signPreparedCalls.d.ts +14 -0
  32. package/dist/esm/client/actions/signPreparedCalls.js +43 -0
  33. package/dist/esm/client/actions/signPreparedCalls.js.map +1 -0
  34. package/dist/esm/client/actions/signSignatureRequest.d.ts +39 -5
  35. package/dist/esm/client/actions/signSignatureRequest.js +69 -11
  36. package/dist/esm/client/actions/signSignatureRequest.js.map +1 -1
  37. package/dist/esm/client/actions/signTypedData.d.ts +37 -4
  38. package/dist/esm/client/actions/signTypedData.js +34 -1
  39. package/dist/esm/client/actions/signTypedData.js.map +1 -1
  40. package/dist/esm/client/client.e2e-test.js +249 -45
  41. package/dist/esm/client/client.e2e-test.js.map +1 -1
  42. package/dist/esm/client/decorator.d.ts +12 -8
  43. package/dist/esm/client/decorator.js +5 -3
  44. package/dist/esm/client/decorator.js.map +1 -1
  45. package/dist/esm/client/index.d.ts +38 -12
  46. package/dist/esm/client/index.js +0 -3
  47. package/dist/esm/client/index.js.map +1 -1
  48. package/dist/esm/exports/index.d.ts +5 -6
  49. package/dist/esm/exports/index.js +4 -6
  50. package/dist/esm/exports/index.js.map +1 -1
  51. package/dist/esm/exports/internal.d.ts +1 -10
  52. package/dist/esm/exports/internal.js +0 -12
  53. package/dist/esm/exports/internal.js.map +1 -1
  54. package/dist/esm/internal/decorator.d.ts +2 -0
  55. package/dist/esm/internal/decorator.js +10 -0
  56. package/dist/esm/internal/decorator.js.map +1 -0
  57. package/dist/esm/isomorphic/actions/createSession.d.ts +1 -2
  58. package/dist/esm/isomorphic/actions/createSession.js +40 -11
  59. package/dist/esm/isomorphic/actions/createSession.js.map +1 -1
  60. package/dist/esm/isomorphic/actions/formatSign.d.ts +8 -0
  61. package/dist/esm/isomorphic/actions/formatSign.js +42 -0
  62. package/dist/esm/isomorphic/actions/formatSign.js.map +1 -0
  63. package/dist/esm/isomorphic/actions/getCallsStatus.d.ts +1 -15
  64. package/dist/esm/isomorphic/actions/getCallsStatus.js +38 -27
  65. package/dist/esm/isomorphic/actions/getCallsStatus.js.map +1 -1
  66. package/dist/esm/isomorphic/actions/prepareCalls.d.ts +1 -2
  67. package/dist/esm/isomorphic/actions/prepareCalls.js +78 -20
  68. package/dist/esm/isomorphic/actions/prepareCalls.js.map +1 -1
  69. package/dist/esm/isomorphic/actions/prepareSign.d.ts +7 -0
  70. package/dist/esm/isomorphic/actions/prepareSign.js +49 -0
  71. package/dist/esm/isomorphic/actions/prepareSign.js.map +1 -0
  72. package/dist/esm/isomorphic/actions/sendPreparedCalls.d.ts +3 -4
  73. package/dist/esm/isomorphic/actions/sendPreparedCalls.js +165 -25
  74. package/dist/esm/isomorphic/actions/sendPreparedCalls.js.map +1 -1
  75. package/dist/esm/isomorphic/client.d.ts +204 -27
  76. package/dist/esm/isomorphic/client.js +6 -2
  77. package/dist/esm/isomorphic/client.js.map +1 -1
  78. package/dist/esm/isomorphic/utils/7702.d.ts +19 -0
  79. package/dist/esm/isomorphic/utils/7702.js +70 -0
  80. package/dist/esm/isomorphic/utils/7702.js.map +1 -0
  81. package/dist/esm/isomorphic/utils/createAccount.d.ts +5 -4
  82. package/dist/esm/isomorphic/utils/createAccount.js +84 -10
  83. package/dist/esm/isomorphic/utils/createAccount.js.map +1 -1
  84. package/dist/esm/isomorphic/utils/createDummySigner.js +3 -3
  85. package/dist/esm/isomorphic/utils/createDummySigner.js.map +1 -1
  86. package/dist/esm/isomorphic/utils/decodeSignature.d.ts +3 -0
  87. package/dist/esm/isomorphic/utils/decodeSignature.js +15 -0
  88. package/dist/esm/isomorphic/utils/decodeSignature.js.map +1 -0
  89. package/dist/esm/isomorphic/utils/parsePermissionsContext.d.ts +6 -5
  90. package/dist/esm/isomorphic/utils/parsePermissionsContext.js +19 -6
  91. package/dist/esm/isomorphic/utils/parsePermissionsContext.js.map +1 -1
  92. package/dist/esm/isomorphic/utils/supportsFeature.d.ts +4 -0
  93. package/dist/esm/isomorphic/utils/supportsFeature.js +21 -0
  94. package/dist/esm/isomorphic/utils/supportsFeature.js.map +1 -0
  95. package/dist/esm/local/client.d.ts +3 -3
  96. package/dist/esm/local/client.js +11 -4
  97. package/dist/esm/local/client.js.map +1 -1
  98. package/dist/esm/remote/client.d.ts +9 -3
  99. package/dist/esm/remote/client.js +10 -11
  100. package/dist/esm/remote/client.js.map +1 -1
  101. package/dist/esm/types.d.ts +27 -13
  102. package/dist/esm/types.js.map +1 -1
  103. package/dist/esm/utils.d.ts +1 -0
  104. package/dist/esm/utils.js.map +1 -1
  105. package/dist/types/client/actions/createAccount.d.ts +27 -2
  106. package/dist/types/client/actions/createAccount.d.ts.map +1 -1
  107. package/dist/types/client/actions/formatSign.d.ts +29 -0
  108. package/dist/types/client/actions/formatSign.d.ts.map +1 -0
  109. package/dist/types/client/actions/getCallsStatus.d.ts +22 -4
  110. package/dist/types/client/actions/getCallsStatus.d.ts.map +1 -1
  111. package/dist/types/client/actions/grantPermissions.d.ts +63 -6
  112. package/dist/types/client/actions/grantPermissions.d.ts.map +1 -1
  113. package/dist/types/client/actions/listAccounts.d.ts +32 -4
  114. package/dist/types/client/actions/listAccounts.d.ts.map +1 -1
  115. package/dist/types/client/actions/prepareCalls.d.ts +32 -6
  116. package/dist/types/client/actions/prepareCalls.d.ts.map +1 -1
  117. package/dist/types/client/actions/prepareSign.d.ts +26 -0
  118. package/dist/types/client/actions/prepareSign.d.ts.map +1 -0
  119. package/dist/types/client/actions/requestAccount.d.ts +24 -6
  120. package/dist/types/client/actions/requestAccount.d.ts.map +1 -1
  121. package/dist/types/client/actions/sendPreparedCalls.d.ts +33 -4
  122. package/dist/types/client/actions/sendPreparedCalls.d.ts.map +1 -1
  123. package/dist/types/client/actions/signMessage.d.ts +25 -5
  124. package/dist/types/client/actions/signMessage.d.ts.map +1 -1
  125. package/dist/types/client/actions/signPreparedCalls.d.ts +15 -0
  126. package/dist/types/client/actions/signPreparedCalls.d.ts.map +1 -0
  127. package/dist/types/client/actions/signSignatureRequest.d.ts +39 -5
  128. package/dist/types/client/actions/signSignatureRequest.d.ts.map +1 -1
  129. package/dist/types/client/actions/signTypedData.d.ts +37 -4
  130. package/dist/types/client/actions/signTypedData.d.ts.map +1 -1
  131. package/dist/types/client/decorator.d.ts +12 -8
  132. package/dist/types/client/decorator.d.ts.map +1 -1
  133. package/dist/types/client/index.d.ts +38 -12
  134. package/dist/types/client/index.d.ts.map +1 -1
  135. package/dist/types/exports/index.d.ts +5 -6
  136. package/dist/types/exports/index.d.ts.map +1 -1
  137. package/dist/types/exports/internal.d.ts +1 -10
  138. package/dist/types/exports/internal.d.ts.map +1 -1
  139. package/dist/types/internal/decorator.d.ts +3 -0
  140. package/dist/types/internal/decorator.d.ts.map +1 -0
  141. package/dist/types/isomorphic/actions/createSession.d.ts +1 -2
  142. package/dist/types/isomorphic/actions/createSession.d.ts.map +1 -1
  143. package/dist/types/isomorphic/actions/formatSign.d.ts +9 -0
  144. package/dist/types/isomorphic/actions/formatSign.d.ts.map +1 -0
  145. package/dist/types/isomorphic/actions/getCallsStatus.d.ts +1 -15
  146. package/dist/types/isomorphic/actions/getCallsStatus.d.ts.map +1 -1
  147. package/dist/types/isomorphic/actions/prepareCalls.d.ts +1 -2
  148. package/dist/types/isomorphic/actions/prepareCalls.d.ts.map +1 -1
  149. package/dist/types/isomorphic/actions/prepareSign.d.ts +8 -0
  150. package/dist/types/isomorphic/actions/prepareSign.d.ts.map +1 -0
  151. package/dist/types/isomorphic/actions/sendPreparedCalls.d.ts +3 -4
  152. package/dist/types/isomorphic/actions/sendPreparedCalls.d.ts.map +1 -1
  153. package/dist/types/isomorphic/client.d.ts +204 -27
  154. package/dist/types/isomorphic/client.d.ts.map +1 -1
  155. package/dist/types/isomorphic/utils/7702.d.ts +20 -0
  156. package/dist/types/isomorphic/utils/7702.d.ts.map +1 -0
  157. package/dist/types/isomorphic/utils/createAccount.d.ts +5 -4
  158. package/dist/types/isomorphic/utils/createAccount.d.ts.map +1 -1
  159. package/dist/types/isomorphic/utils/createDummySigner.d.ts.map +1 -1
  160. package/dist/types/isomorphic/utils/decodeSignature.d.ts +4 -0
  161. package/dist/types/isomorphic/utils/decodeSignature.d.ts.map +1 -0
  162. package/dist/types/isomorphic/utils/parsePermissionsContext.d.ts +6 -5
  163. package/dist/types/isomorphic/utils/parsePermissionsContext.d.ts.map +1 -1
  164. package/dist/types/isomorphic/utils/supportsFeature.d.ts +5 -0
  165. package/dist/types/isomorphic/utils/supportsFeature.d.ts.map +1 -0
  166. package/dist/types/local/client.d.ts +3 -3
  167. package/dist/types/local/client.d.ts.map +1 -1
  168. package/dist/types/remote/client.d.ts +9 -3
  169. package/dist/types/remote/client.d.ts.map +1 -1
  170. package/dist/types/types.d.ts +27 -13
  171. package/dist/types/types.d.ts.map +1 -1
  172. package/dist/types/utils.d.ts +1 -0
  173. package/dist/types/utils.d.ts.map +1 -1
  174. package/package.json +9 -6
  175. package/src/client/actions/createAccount.ts +27 -2
  176. package/src/client/actions/formatSign.ts +53 -0
  177. package/src/client/actions/getCallsStatus.ts +21 -12
  178. package/src/client/actions/grantPermissions.ts +69 -26
  179. package/src/client/actions/listAccounts.ts +44 -6
  180. package/src/client/actions/prepareCalls.ts +46 -26
  181. package/src/client/actions/prepareSign.ts +46 -0
  182. package/src/client/actions/requestAccount.ts +60 -41
  183. package/src/client/actions/sendPreparedCalls.ts +44 -7
  184. package/src/client/actions/signMessage.ts +26 -21
  185. package/src/client/actions/signPreparedCalls.ts +67 -0
  186. package/src/client/actions/signSignatureRequest.ts +84 -20
  187. package/src/client/actions/signTypedData.ts +40 -19
  188. package/src/client/client.e2e-test.ts +408 -127
  189. package/src/client/decorator.ts +28 -26
  190. package/src/client/index.ts +50 -40
  191. package/src/exports/index.ts +5 -13
  192. package/src/exports/internal.ts +2 -10
  193. package/src/internal/decorator.ts +12 -0
  194. package/src/isomorphic/actions/createSession.ts +56 -13
  195. package/src/isomorphic/actions/formatSign.ts +76 -0
  196. package/src/isomorphic/actions/getCallsStatus.ts +47 -33
  197. package/src/isomorphic/actions/prepareCalls.ts +95 -23
  198. package/src/isomorphic/actions/prepareSign.ts +88 -0
  199. package/src/isomorphic/actions/sendPreparedCalls.ts +218 -42
  200. package/src/isomorphic/client.ts +10 -2
  201. package/src/isomorphic/utils/7702.ts +135 -0
  202. package/src/isomorphic/utils/createAccount.ts +101 -13
  203. package/src/isomorphic/utils/createDummySigner.ts +3 -2
  204. package/src/isomorphic/utils/decodeSignature.ts +21 -0
  205. package/src/isomorphic/utils/parsePermissionsContext.ts +29 -11
  206. package/src/isomorphic/utils/supportsFeature.ts +34 -0
  207. package/src/local/client.ts +58 -55
  208. package/src/remote/client.ts +19 -19
  209. package/src/types.ts +29 -23
  210. package/src/utils.ts +2 -0
  211. package/dist/esm/capabilities/index.d.ts +0 -31
  212. package/dist/esm/capabilities/index.js +0 -10
  213. package/dist/esm/capabilities/index.js.map +0 -1
  214. package/dist/esm/capabilities/overrides.d.ts +0 -26
  215. package/dist/esm/capabilities/overrides.js +0 -14
  216. package/dist/esm/capabilities/overrides.js.map +0 -1
  217. package/dist/esm/capabilities/paymaster.d.ts +0 -3
  218. package/dist/esm/capabilities/paymaster.js +0 -5
  219. package/dist/esm/capabilities/paymaster.js.map +0 -1
  220. package/dist/esm/capabilities/permissions/index.d.ts +0 -138
  221. package/dist/esm/capabilities/permissions/index.js +0 -71
  222. package/dist/esm/capabilities/permissions/index.js.map +0 -1
  223. package/dist/esm/capabilities/permissions/mav2.d.ts +0 -36
  224. package/dist/esm/capabilities/permissions/mav2.js +0 -79
  225. package/dist/esm/capabilities/permissions/mav2.js.map +0 -1
  226. package/dist/esm/rpc/request.d.ts +0 -352
  227. package/dist/esm/rpc/request.js +0 -204
  228. package/dist/esm/rpc/request.js.map +0 -1
  229. package/dist/esm/rpc/schema.d.ts +0 -342
  230. package/dist/esm/rpc/schema.js +0 -5
  231. package/dist/esm/rpc/schema.js.map +0 -1
  232. package/dist/esm/schemas.d.ts +0 -216
  233. package/dist/esm/schemas.js +0 -211
  234. package/dist/esm/schemas.js.map +0 -1
  235. package/dist/types/capabilities/index.d.ts +0 -32
  236. package/dist/types/capabilities/index.d.ts.map +0 -1
  237. package/dist/types/capabilities/overrides.d.ts +0 -27
  238. package/dist/types/capabilities/overrides.d.ts.map +0 -1
  239. package/dist/types/capabilities/paymaster.d.ts +0 -4
  240. package/dist/types/capabilities/paymaster.d.ts.map +0 -1
  241. package/dist/types/capabilities/permissions/index.d.ts +0 -139
  242. package/dist/types/capabilities/permissions/index.d.ts.map +0 -1
  243. package/dist/types/capabilities/permissions/mav2.d.ts +0 -37
  244. package/dist/types/capabilities/permissions/mav2.d.ts.map +0 -1
  245. package/dist/types/rpc/request.d.ts +0 -353
  246. package/dist/types/rpc/request.d.ts.map +0 -1
  247. package/dist/types/rpc/schema.d.ts +0 -343
  248. package/dist/types/rpc/schema.d.ts.map +0 -1
  249. package/dist/types/schemas.d.ts +0 -217
  250. package/dist/types/schemas.d.ts.map +0 -1
  251. package/src/capabilities/index.ts +0 -13
  252. package/src/capabilities/overrides.ts +0 -20
  253. package/src/capabilities/paymaster.ts +0 -5
  254. package/src/capabilities/permissions/index.ts +0 -142
  255. package/src/capabilities/permissions/mav2.ts +0 -127
  256. package/src/rpc/request.ts +0 -273
  257. package/src/rpc/schema.ts +0 -40
  258. package/src/schemas.ts +0 -257
package/src/types.ts CHANGED
@@ -1,47 +1,37 @@
1
+ import type { SmartAccountSigner, SmartContractAccount } from "@aa-sdk/core";
1
2
  import type { AlchemyTransport } from "@account-kit/infra";
2
3
  import type {
3
4
  Address,
4
5
  Chain,
5
6
  Client,
6
7
  Hex,
7
- IsUndefined,
8
8
  JsonRpcAccount,
9
9
  Transport,
10
10
  } from "viem";
11
- import type { WalletServerViemRpcSchema } from "./rpc/schema";
12
- import type { SmartAccountSigner } from "@aa-sdk/core";
13
11
  import type {
14
12
  GrantPermissionsParams,
15
13
  GrantPermissionsResult,
16
- } from "./client/actions/grantPermissions";
14
+ } from "./client/actions/grantPermissions.ts";
15
+ import type { RequestAccountParams } from "./client/actions/requestAccount.ts";
16
+ import type { WalletServerViemRpcSchema } from "@alchemy/wallet-api-types/rpc";
17
17
 
18
18
  export type CreateInnerClientParams<
19
- TAccount extends JsonRpcAccount<Address> | undefined =
20
- | JsonRpcAccount<Address>
21
- | undefined,
19
+ TAccount extends Address | undefined = Address | undefined,
22
20
  > = {
23
21
  chain: Chain;
24
22
  transport: AlchemyTransport;
25
23
  policyId?: string;
26
- } & (IsUndefined<TAccount> extends true
27
- ? {
28
- account?: never;
29
- }
30
- : {
31
- account: Address;
32
- });
24
+ account?: TAccount | Address | undefined;
25
+ };
33
26
 
34
27
  export type InnerWalletApiClientBase<
35
- TAccount extends JsonRpcAccount<Address> | undefined =
36
- | JsonRpcAccount<Address>
37
- | undefined,
38
28
  TExtend extends { [key: string]: unknown } | undefined =
39
29
  | { [key: string]: unknown }
40
30
  | undefined,
41
31
  > = Client<
42
32
  Transport,
43
33
  Chain,
44
- TAccount,
34
+ JsonRpcAccount<Address> | undefined,
45
35
  WalletServerViemRpcSchema,
46
36
  { policyId?: string } & TExtend
47
37
  >;
@@ -53,8 +43,24 @@ export type InnerClientActions = {
53
43
  ) => Promise<GrantPermissionsResult>;
54
44
  };
55
45
 
56
- export type InnerWalletApiClient<
57
- TAccount extends JsonRpcAccount<Address> | undefined =
58
- | JsonRpcAccount<Address>
59
- | undefined,
60
- > = InnerWalletApiClientBase<TAccount, InnerClientActions>;
46
+ export type CachedAccount = {
47
+ account: SmartContractAccount;
48
+ requestParams: RequestAccountParams;
49
+ };
50
+
51
+ export type InternalState = {
52
+ setAccount: (account: CachedAccount) => void;
53
+ getAccount: () => CachedAccount | undefined;
54
+ };
55
+
56
+ export type InnerWalletApiClient = InnerWalletApiClientBase<
57
+ InnerClientActions & { internal: InternalState }
58
+ >;
59
+
60
+ export type WithoutChainId<T> = T extends { chainId: Hex }
61
+ ? Omit<T, "chainId">
62
+ : T;
63
+
64
+ export type WithoutRawPayload<T> = T extends { rawPayload: Hex }
65
+ ? Omit<T, "rawPayload">
66
+ : T;
package/src/utils.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { isHex, toHex, type Hex } from "viem";
2
2
 
3
+ export type Expect<T extends true> = T;
4
+
3
5
  export const assertNever = (_val: never, msg: string): never => {
4
6
  throw new Error(msg);
5
7
  };
@@ -1,31 +0,0 @@
1
- export declare const Capabilities: import("@sinclair/typebox").TObject<{
2
- permissions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
3
- context: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
4
- }>>;
5
- paymasterService: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
6
- policyId: import("@sinclair/typebox").TString;
7
- }>>;
8
- gasParamsOverride: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
9
- preVerificationGas: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
10
- multiplier: import("@sinclair/typebox").TNumber;
11
- }>]>>;
12
- verificationGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
13
- multiplier: import("@sinclair/typebox").TNumber;
14
- }>]>>;
15
- callGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
16
- multiplier: import("@sinclair/typebox").TNumber;
17
- }>]>>;
18
- paymasterVerificationGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
19
- multiplier: import("@sinclair/typebox").TNumber;
20
- }>]>>;
21
- paymasterPostOpGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
22
- multiplier: import("@sinclair/typebox").TNumber;
23
- }>]>>;
24
- maxFeePerGas: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
25
- multiplier: import("@sinclair/typebox").TNumber;
26
- }>]>>;
27
- maxPriorityFeePerGas: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
28
- multiplier: import("@sinclair/typebox").TNumber;
29
- }>]>>;
30
- }>>;
31
- }>;
@@ -1,10 +0,0 @@
1
- import { Type } from "@sinclair/typebox";
2
- import { GasParamsOverrideCapability } from "./overrides.js";
3
- import { PaymasterCapability } from "./paymaster.js";
4
- import { PermissionsCapability } from "./permissions/index.js";
5
- export const Capabilities = Type.Object({
6
- permissions: Type.Optional(PermissionsCapability),
7
- paymasterService: Type.Optional(PaymasterCapability),
8
- gasParamsOverride: Type.Optional(GasParamsOverrideCapability),
9
- }, { minProperties: 1 });
10
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/capabilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CACrC;IACE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACjD,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACpD,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CAC9D,EACD,EAAE,aAAa,EAAE,CAAC,EAAE,CACrB,CAAC","sourcesContent":["import { Type } from \"@sinclair/typebox\";\nimport { GasParamsOverrideCapability } from \"./overrides.js\";\nimport { PaymasterCapability } from \"./paymaster.js\";\nimport { PermissionsCapability } from \"./permissions/index.js\";\n\nexport const Capabilities = Type.Object(\n {\n permissions: Type.Optional(PermissionsCapability),\n paymasterService: Type.Optional(PaymasterCapability),\n gasParamsOverride: Type.Optional(GasParamsOverrideCapability),\n },\n { minProperties: 1 },\n);\n"]}
@@ -1,26 +0,0 @@
1
- export declare const Mutliplier: import("@sinclair/typebox").TObject<{
2
- multiplier: import("@sinclair/typebox").TNumber;
3
- }>;
4
- export declare const GasParamsOverrideCapability: import("@sinclair/typebox").TObject<{
5
- preVerificationGas: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
6
- multiplier: import("@sinclair/typebox").TNumber;
7
- }>]>>;
8
- verificationGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
9
- multiplier: import("@sinclair/typebox").TNumber;
10
- }>]>>;
11
- callGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
12
- multiplier: import("@sinclair/typebox").TNumber;
13
- }>]>>;
14
- paymasterVerificationGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
15
- multiplier: import("@sinclair/typebox").TNumber;
16
- }>]>>;
17
- paymasterPostOpGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
18
- multiplier: import("@sinclair/typebox").TNumber;
19
- }>]>>;
20
- maxFeePerGas: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
21
- multiplier: import("@sinclair/typebox").TNumber;
22
- }>]>>;
23
- maxPriorityFeePerGas: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
24
- multiplier: import("@sinclair/typebox").TNumber;
25
- }>]>>;
26
- }>;
@@ -1,14 +0,0 @@
1
- import { Type } from "@sinclair/typebox";
2
- import { TypeHex } from "../schemas.js";
3
- export const Mutliplier = Type.Object({ multiplier: Type.Number() });
4
- // This is still being defined in https://github.com/ethereum/ERCs/pull/947/files#diff-dab085f963ca621595044bcbc0922705aa38b69f5bf8770dcb3d0496a633efcfR158
5
- export const GasParamsOverrideCapability = Type.Object({
6
- preVerificationGas: Type.Optional(Type.Union([TypeHex(), Mutliplier])),
7
- verificationGasLimit: Type.Optional(Type.Union([TypeHex(), Mutliplier])),
8
- callGasLimit: Type.Optional(Type.Union([TypeHex(), Mutliplier])),
9
- paymasterVerificationGasLimit: Type.Optional(Type.Union([TypeHex(), Mutliplier])),
10
- paymasterPostOpGasLimit: Type.Optional(Type.Union([TypeHex(), Mutliplier])),
11
- maxFeePerGas: Type.Optional(Type.Union([TypeHex(), Mutliplier])),
12
- maxPriorityFeePerGas: Type.Optional(Type.Union([TypeHex(), Mutliplier])),
13
- }, { minProperties: 1 });
14
- //# sourceMappingURL=overrides.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../../src/capabilities/overrides.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAErE,2JAA2J;AAC3J,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC,MAAM,CACpD;IACE,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IACtE,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IACxE,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IAChE,6BAA6B,EAAE,IAAI,CAAC,QAAQ,CAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CACpC;IACD,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3E,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IAChE,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;CACzE,EACD,EAAE,aAAa,EAAE,CAAC,EAAE,CACrB,CAAC","sourcesContent":["import { Type } from \"@sinclair/typebox\";\nimport { TypeHex } from \"../schemas.js\";\n\nexport const Mutliplier = Type.Object({ multiplier: Type.Number() });\n\n// This is still being defined in https://github.com/ethereum/ERCs/pull/947/files#diff-dab085f963ca621595044bcbc0922705aa38b69f5bf8770dcb3d0496a633efcfR158\nexport const GasParamsOverrideCapability = Type.Object(\n {\n preVerificationGas: Type.Optional(Type.Union([TypeHex(), Mutliplier])),\n verificationGasLimit: Type.Optional(Type.Union([TypeHex(), Mutliplier])),\n callGasLimit: Type.Optional(Type.Union([TypeHex(), Mutliplier])),\n paymasterVerificationGasLimit: Type.Optional(\n Type.Union([TypeHex(), Mutliplier]),\n ),\n paymasterPostOpGasLimit: Type.Optional(Type.Union([TypeHex(), Mutliplier])),\n maxFeePerGas: Type.Optional(Type.Union([TypeHex(), Mutliplier])),\n maxPriorityFeePerGas: Type.Optional(Type.Union([TypeHex(), Mutliplier])),\n },\n { minProperties: 1 },\n);\n"]}
@@ -1,3 +0,0 @@
1
- export declare const PaymasterCapability: import("@sinclair/typebox").TObject<{
2
- policyId: import("@sinclair/typebox").TString;
3
- }>;
@@ -1,5 +0,0 @@
1
- import { Type } from "@sinclair/typebox";
2
- export const PaymasterCapability = Type.Object({
3
- policyId: Type.String(),
4
- });
5
- //# sourceMappingURL=paymaster.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paymaster.js","sourceRoot":"","sources":["../../../src/capabilities/paymaster.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7C,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC","sourcesContent":["import { Type } from \"@sinclair/typebox\";\n\nexport const PaymasterCapability = Type.Object({\n policyId: Type.String(),\n});\n"]}
@@ -1,138 +0,0 @@
1
- import { type TLiteral, type TObject } from "@sinclair/typebox";
2
- export declare const TypePermission: import("@sinclair/typebox").TUnion<[TObject<{
3
- type: TLiteral<"native-token-transfer">;
4
- data: TObject<{
5
- allowance: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
6
- }>;
7
- }>, TObject<{
8
- type: TLiteral<"erc20-token-transfer">;
9
- data: TObject<{
10
- allowance: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
11
- address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
12
- }>;
13
- }>, TObject<{
14
- type: TLiteral<"gas-limit">;
15
- data: TObject<{
16
- limit: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
17
- }>;
18
- }>, TObject<{
19
- type: TLiteral<"contract-access">;
20
- data: TObject<{
21
- address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
22
- }>;
23
- }>, TObject<{
24
- type: TLiteral<"account-functions">;
25
- data: TObject<{
26
- functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
27
- }>;
28
- }>, TObject<{
29
- type: TLiteral<"functions-on-all-contracts">;
30
- data: TObject<{
31
- functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
32
- }>;
33
- }>, TObject<{
34
- type: TLiteral<"functions-on-contract">;
35
- data: TObject<{
36
- address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
37
- functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
38
- }>;
39
- }>, TObject<{
40
- type: TLiteral<"root">;
41
- data: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNever>;
42
- }>]>;
43
- export declare const PermissionsArray: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[TObject<{
44
- type: TLiteral<"native-token-transfer">;
45
- data: TObject<{
46
- allowance: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
47
- }>;
48
- }>, TObject<{
49
- type: TLiteral<"erc20-token-transfer">;
50
- data: TObject<{
51
- allowance: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
52
- address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
53
- }>;
54
- }>, TObject<{
55
- type: TLiteral<"gas-limit">;
56
- data: TObject<{
57
- limit: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
58
- }>;
59
- }>, TObject<{
60
- type: TLiteral<"contract-access">;
61
- data: TObject<{
62
- address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
63
- }>;
64
- }>, TObject<{
65
- type: TLiteral<"account-functions">;
66
- data: TObject<{
67
- functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
68
- }>;
69
- }>, TObject<{
70
- type: TLiteral<"functions-on-all-contracts">;
71
- data: TObject<{
72
- functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
73
- }>;
74
- }>, TObject<{
75
- type: TLiteral<"functions-on-contract">;
76
- data: TObject<{
77
- address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
78
- functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
79
- }>;
80
- }>, TObject<{
81
- type: TLiteral<"root">;
82
- data: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNever>;
83
- }>]>>;
84
- export declare const PermissionsContext: TObject<{
85
- context: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
86
- }>;
87
- export declare const PermissionsData: TObject<{
88
- chainId: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
89
- expiry: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
90
- key: TObject<{
91
- type: import("@sinclair/typebox").TUnion<[TLiteral<"secp256k1">, TLiteral<"contract">]>;
92
- publicKey: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
93
- }>;
94
- permissions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[TObject<{
95
- type: TLiteral<"native-token-transfer">;
96
- data: TObject<{
97
- allowance: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
98
- }>;
99
- }>, TObject<{
100
- type: TLiteral<"erc20-token-transfer">;
101
- data: TObject<{
102
- allowance: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
103
- address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
104
- }>;
105
- }>, TObject<{
106
- type: TLiteral<"gas-limit">;
107
- data: TObject<{
108
- limit: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
109
- }>;
110
- }>, TObject<{
111
- type: TLiteral<"contract-access">;
112
- data: TObject<{
113
- address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
114
- }>;
115
- }>, TObject<{
116
- type: TLiteral<"account-functions">;
117
- data: TObject<{
118
- functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
119
- }>;
120
- }>, TObject<{
121
- type: TLiteral<"functions-on-all-contracts">;
122
- data: TObject<{
123
- functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
124
- }>;
125
- }>, TObject<{
126
- type: TLiteral<"functions-on-contract">;
127
- data: TObject<{
128
- address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
129
- functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
130
- }>;
131
- }>, TObject<{
132
- type: TLiteral<"root">;
133
- data: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNever>;
134
- }>]>>;
135
- }>;
136
- export declare const PermissionsCapability: TObject<{
137
- context: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
138
- }>;
@@ -1,71 +0,0 @@
1
- import { PermissionType } from "@account-kit/smart-contracts/experimental";
2
- import { Type, } from "@sinclair/typebox";
3
- import { KeySigner, TypeAddress, TypeHex } from "../../schemas.js";
4
- const Permission = (typeString, // e.g., "root"
5
- typeEnum, // e.g., PermissionType.ROOT
6
- data, description) => {
7
- return Type.Transform(Type.Object({
8
- type: Type.Literal(typeEnum),
9
- data,
10
- }, { description }))
11
- .Decode((value) => ({
12
- ...value,
13
- type: typeString, // enum → string
14
- }))
15
- .Encode((value) => ({
16
- ...value,
17
- type: typeEnum, // string → enum
18
- }));
19
- };
20
- const NativeTokenTransfer = Permission("native-token-transfer", PermissionType.NATIVE_TOKEN_TRANSFER, Type.Object({
21
- allowance: TypeHex(),
22
- }), "allows transfer of native tokens from the account");
23
- const Erc20TokenTransfer = Permission("erc20-token-transfer", PermissionType.ERC20_TOKEN_TRANSFER, Type.Object({
24
- allowance: TypeHex(),
25
- address: TypeAddress,
26
- }), "allows transfer or approval of erc20 tokens from the account");
27
- const GasLimit = Permission("gas-limit", PermissionType.GAS_LIMIT, Type.Object({
28
- limit: TypeHex(),
29
- }), "allows the key to spend gas for UOs");
30
- const ContractAccess = Permission("contract-access", PermissionType.CONTRACT_ACCESS, Type.Object({
31
- address: TypeAddress,
32
- }), "grants access to all functions in a contract");
33
- const AccountFunction = Permission("account-functions", PermissionType.ACCOUNT_FUNCTIONS, Type.Object({
34
- functions: Type.Array(TypeHex(), { minItems: 1 }),
35
- }), "grants access to functions in the account");
36
- const AllExternalFunctionAccess = Permission("functions-on-all-contracts", PermissionType.FUNCTIONS_ON_ALL_CONTRACTS, Type.Object({
37
- functions: Type.Array(TypeHex(), { minItems: 1 }),
38
- }), "access to a function selector in any address or contract");
39
- const ContractFunctionAccess = Permission("functions-on-contract", PermissionType.FUNCTIONS_ON_CONTRACT, Type.Object({
40
- address: TypeAddress,
41
- functions: Type.Array(TypeHex(), { minItems: 1 }),
42
- }), "grants access to specified functions on a specific contract");
43
- const Root = Permission("root", PermissionType.ROOT, Type.Optional(Type.Never()), "grants full access to everything");
44
- export const TypePermission = Type.Union([
45
- // 7715 permissions
46
- NativeTokenTransfer,
47
- Erc20TokenTransfer,
48
- GasLimit,
49
- // additional permissions
50
- ContractAccess,
51
- AccountFunction,
52
- AllExternalFunctionAccess,
53
- ContractFunctionAccess,
54
- Root,
55
- ]);
56
- export const PermissionsArray = Type.Array(TypePermission, { minItems: 1 });
57
- export const PermissionsContext = Type.Object({
58
- context: TypeHex(),
59
- });
60
- export const PermissionsData = Type.Object({
61
- chainId: TypeHex(),
62
- expiry: Type.Optional(Type.Number()),
63
- key: KeySigner,
64
- permissions: PermissionsArray,
65
- });
66
- export const PermissionsCapability = Type.Union([
67
- PermissionsContext,
68
- // TODO: support permissions object here instead of only context-encoded permissions
69
- // PermissionsData,
70
- ]);
71
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/capabilities/permissions/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { PermissionType } from \"@account-kit/smart-contracts/experimental\";\nimport {\n Type,\n type TLiteral,\n type TLiteralValue,\n type TObject,\n type TSchema,\n} from \"@sinclair/typebox\";\nimport { KeySigner, TypeAddress, TypeHex } from \"../../schemas.js\";\n\nconst Permission = <\n TData extends TSchema,\n TLiteralVal extends TLiteralValue,\n TType extends TLiteral<TLiteralVal>,\n>(\n typeString: TLiteralVal, // e.g., \"root\"\n typeEnum: TLiteralVal, // e.g., PermissionType.ROOT\n data: TData,\n description: string,\n): TObject<{ type: TType; data: TData }> => {\n return Type.Transform(\n Type.Object(\n {\n type: Type.Literal(typeEnum),\n data,\n },\n { description },\n ),\n )\n .Decode((value) => ({\n ...value,\n type: typeString, // enum → string\n }))\n .Encode((value) => ({\n ...value,\n type: typeEnum, // string → enum\n })) as never;\n};\n\nconst NativeTokenTransfer = Permission(\n \"native-token-transfer\",\n PermissionType.NATIVE_TOKEN_TRANSFER,\n Type.Object({\n allowance: TypeHex(),\n }),\n \"allows transfer of native tokens from the account\",\n);\n\nconst Erc20TokenTransfer = Permission(\n \"erc20-token-transfer\",\n PermissionType.ERC20_TOKEN_TRANSFER,\n Type.Object({\n allowance: TypeHex(),\n address: TypeAddress,\n }),\n \"allows transfer or approval of erc20 tokens from the account\",\n);\n\nconst GasLimit = Permission(\n \"gas-limit\",\n PermissionType.GAS_LIMIT,\n Type.Object({\n limit: TypeHex(),\n }),\n \"allows the key to spend gas for UOs\",\n);\n\nconst ContractAccess = Permission(\n \"contract-access\",\n PermissionType.CONTRACT_ACCESS,\n Type.Object({\n address: TypeAddress,\n }),\n \"grants access to all functions in a contract\",\n);\n\nconst AccountFunction = Permission(\n \"account-functions\",\n PermissionType.ACCOUNT_FUNCTIONS,\n Type.Object({\n functions: Type.Array(TypeHex(), { minItems: 1 }),\n }),\n \"grants access to functions in the account\",\n);\n\nconst AllExternalFunctionAccess = Permission(\n \"functions-on-all-contracts\",\n PermissionType.FUNCTIONS_ON_ALL_CONTRACTS,\n Type.Object({\n functions: Type.Array(TypeHex(), { minItems: 1 }),\n }),\n \"access to a function selector in any address or contract\",\n);\n\nconst ContractFunctionAccess = Permission(\n \"functions-on-contract\",\n PermissionType.FUNCTIONS_ON_CONTRACT,\n Type.Object({\n address: TypeAddress,\n functions: Type.Array(TypeHex(), { minItems: 1 }),\n }),\n \"grants access to specified functions on a specific contract\",\n);\n\nconst Root = Permission(\n \"root\",\n PermissionType.ROOT,\n Type.Optional(Type.Never()),\n \"grants full access to everything\",\n);\n\nexport const TypePermission = Type.Union([\n // 7715 permissions\n NativeTokenTransfer,\n Erc20TokenTransfer,\n GasLimit,\n // additional permissions\n ContractAccess,\n AccountFunction,\n AllExternalFunctionAccess,\n ContractFunctionAccess,\n Root,\n]);\n\nexport const PermissionsArray = Type.Array(TypePermission, { minItems: 1 });\n\nexport const PermissionsContext = Type.Object({\n context: TypeHex(),\n});\n\nexport const PermissionsData = Type.Object({\n chainId: TypeHex(),\n expiry: Type.Optional(Type.Number()),\n key: KeySigner,\n permissions: PermissionsArray,\n});\n\nexport const PermissionsCapability = Type.Union([\n PermissionsContext,\n // TODO: support permissions object here instead of only context-encoded permissions\n // PermissionsData,\n]);\n"]}
@@ -1,36 +0,0 @@
1
- import type { Static } from "@sinclair/typebox";
2
- import { type Hex } from "viem";
3
- import type { PermissionsData } from ".";
4
- import type { KeySigner } from "../../schemas";
5
- export declare const SESSION_ID_LENGTH_BYTES = 16;
6
- export declare const ENTITY_ID_LENGTH_BYTES = 4;
7
- export declare const PermissionsContextVersion: {
8
- readonly REMOTE_MODE_DEFERRED_ACTION: "0x00";
9
- readonly LOCAL_MODE_DEFERRED_ACTION: "0x01";
10
- readonly NON_DEFERRED_ACTION: "0x02";
11
- };
12
- type DecodedPermissionsContext = {
13
- contextVersion: keyof typeof PermissionsContextVersion;
14
- } & ({
15
- contextVersion: "REMOTE_MODE_DEFERRED_ACTION";
16
- sessionId: Hex;
17
- signature: Hex;
18
- deferredAction?: never;
19
- } | {
20
- contextVersion: "LOCAL_MODE_DEFERRED_ACTION";
21
- deferredAction: Hex;
22
- sessionId?: never;
23
- signature?: never;
24
- } | {
25
- contextVersion: "NON_DEFERRED_ACTION";
26
- deferredAction?: never;
27
- sessionId?: never;
28
- signature?: never;
29
- entityId: Hex;
30
- isGlobalValidation: boolean;
31
- });
32
- export declare const encodePermissionsContext: (context: DecodedPermissionsContext) => Hex;
33
- export declare const decodePermissionsContext: (input: Hex) => DecodedPermissionsContext;
34
- export declare const prefixSignatureKeyType: (sig: Hex, type: KeySigner["type"]) => Hex;
35
- export declare const isGlobalValidation: (data: Pick<Static<typeof PermissionsData>, "permissions">) => boolean;
36
- export {};
@@ -1,79 +0,0 @@
1
- import { PermissionType } from "@account-kit/smart-contracts/experimental";
2
- import { concatHex, sliceHex } from "viem";
3
- import { assertNever } from "../../utils.js";
4
- export const SESSION_ID_LENGTH_BYTES = 16;
5
- export const ENTITY_ID_LENGTH_BYTES = 4;
6
- export const PermissionsContextVersion = {
7
- REMOTE_MODE_DEFERRED_ACTION: "0x00",
8
- LOCAL_MODE_DEFERRED_ACTION: "0x01",
9
- NON_DEFERRED_ACTION: "0x02",
10
- };
11
- export const encodePermissionsContext = (context) => {
12
- switch (context.contextVersion) {
13
- case "REMOTE_MODE_DEFERRED_ACTION":
14
- return concatHex([
15
- PermissionsContextVersion.REMOTE_MODE_DEFERRED_ACTION,
16
- context.sessionId,
17
- context.signature,
18
- ]);
19
- case "LOCAL_MODE_DEFERRED_ACTION":
20
- return concatHex([
21
- PermissionsContextVersion.LOCAL_MODE_DEFERRED_ACTION,
22
- context.deferredAction,
23
- ]);
24
- case "NON_DEFERRED_ACTION":
25
- return concatHex([
26
- PermissionsContextVersion.NON_DEFERRED_ACTION,
27
- context.isGlobalValidation ? "0x01" : "0x00",
28
- context.entityId,
29
- ]);
30
- default:
31
- return assertNever(context, "Unexpected context version");
32
- }
33
- };
34
- export const decodePermissionsContext = (input) => {
35
- const contextVersion = sliceHex(input, 0, 1);
36
- switch (contextVersion) {
37
- case "0x00": {
38
- const sessionId = sliceHex(input, 1, SESSION_ID_LENGTH_BYTES + 1);
39
- const signature = sliceHex(input, SESSION_ID_LENGTH_BYTES + 1);
40
- return {
41
- contextVersion: "REMOTE_MODE_DEFERRED_ACTION",
42
- sessionId,
43
- signature,
44
- };
45
- }
46
- case "0x01": {
47
- const deferredAction = sliceHex(input, 1);
48
- return {
49
- contextVersion: "LOCAL_MODE_DEFERRED_ACTION",
50
- deferredAction,
51
- };
52
- }
53
- case "0x02": {
54
- const isGlobalValidation = sliceHex(input, 1, 2) === "0x01";
55
- const entityId = sliceHex(input, 2, ENTITY_ID_LENGTH_BYTES + 2);
56
- return {
57
- contextVersion: "NON_DEFERRED_ACTION",
58
- isGlobalValidation,
59
- entityId,
60
- };
61
- }
62
- default:
63
- return assertNever(contextVersion, `Unexpected context version: ${contextVersion}`);
64
- }
65
- };
66
- export const prefixSignatureKeyType = (sig, type) => {
67
- switch (type) {
68
- case "secp256k1":
69
- return concatHex(["0x00", sig]);
70
- case "contract":
71
- return concatHex(["0x01", sig]);
72
- default:
73
- return assertNever(type, "Unexpected session key type");
74
- }
75
- };
76
- export const isGlobalValidation = (data) => {
77
- return data.permissions.some((p) => p.type === PermissionType.ROOT);
78
- };
79
- //# sourceMappingURL=mav2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mav2.js","sourceRoot":"","sources":["../../../../src/capabilities/permissions/mav2.ts"],"names":[],"mappings":"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","sourcesContent":["import { PermissionType } from \"@account-kit/smart-contracts/experimental\";\nimport type { Static } from \"@sinclair/typebox\";\nimport { concatHex, sliceHex, type Hex } from \"viem\";\nimport type { PermissionsData } from \".\";\nimport type { KeySigner } from \"../../schemas\";\nimport { assertNever } from \"../../utils.js\";\n\nexport const SESSION_ID_LENGTH_BYTES = 16;\nexport const ENTITY_ID_LENGTH_BYTES = 4;\n\nexport const PermissionsContextVersion = {\n REMOTE_MODE_DEFERRED_ACTION: \"0x00\",\n LOCAL_MODE_DEFERRED_ACTION: \"0x01\",\n NON_DEFERRED_ACTION: \"0x02\",\n} as const;\n\ntype ContextVersionHex =\n (typeof PermissionsContextVersion)[keyof typeof PermissionsContextVersion];\n\ntype DecodedPermissionsContext = {\n contextVersion: keyof typeof PermissionsContextVersion;\n} & (\n | {\n contextVersion: \"REMOTE_MODE_DEFERRED_ACTION\";\n sessionId: Hex;\n signature: Hex;\n deferredAction?: never;\n }\n | {\n contextVersion: \"LOCAL_MODE_DEFERRED_ACTION\";\n deferredAction: Hex;\n sessionId?: never;\n signature?: never;\n }\n | {\n contextVersion: \"NON_DEFERRED_ACTION\";\n deferredAction?: never;\n sessionId?: never;\n signature?: never;\n entityId: Hex;\n isGlobalValidation: boolean;\n }\n);\n\nexport const encodePermissionsContext = (\n context: DecodedPermissionsContext,\n): Hex => {\n switch (context.contextVersion) {\n case \"REMOTE_MODE_DEFERRED_ACTION\":\n return concatHex([\n PermissionsContextVersion.REMOTE_MODE_DEFERRED_ACTION,\n context.sessionId,\n context.signature,\n ]);\n case \"LOCAL_MODE_DEFERRED_ACTION\":\n return concatHex([\n PermissionsContextVersion.LOCAL_MODE_DEFERRED_ACTION,\n context.deferredAction,\n ]);\n case \"NON_DEFERRED_ACTION\":\n return concatHex([\n PermissionsContextVersion.NON_DEFERRED_ACTION,\n context.isGlobalValidation ? \"0x01\" : \"0x00\",\n context.entityId,\n ]);\n default:\n return assertNever(context, \"Unexpected context version\");\n }\n};\n\nexport const decodePermissionsContext = (\n input: Hex,\n): DecodedPermissionsContext => {\n const contextVersion = sliceHex(input, 0, 1) as ContextVersionHex;\n switch (contextVersion) {\n case \"0x00\": {\n const sessionId = sliceHex(input, 1, SESSION_ID_LENGTH_BYTES + 1);\n const signature = sliceHex(input, SESSION_ID_LENGTH_BYTES + 1);\n return {\n contextVersion: \"REMOTE_MODE_DEFERRED_ACTION\",\n sessionId,\n signature,\n };\n }\n case \"0x01\": {\n const deferredAction = sliceHex(input, 1);\n return {\n contextVersion: \"LOCAL_MODE_DEFERRED_ACTION\",\n deferredAction,\n };\n }\n case \"0x02\": {\n const isGlobalValidation = sliceHex(input, 1, 2) === \"0x01\";\n const entityId = sliceHex(input, 2, ENTITY_ID_LENGTH_BYTES + 2);\n return {\n contextVersion: \"NON_DEFERRED_ACTION\",\n isGlobalValidation,\n entityId,\n };\n }\n default:\n return assertNever(\n contextVersion,\n `Unexpected context version: ${contextVersion}`,\n );\n }\n};\n\nexport const prefixSignatureKeyType = (\n sig: Hex,\n type: KeySigner[\"type\"],\n): Hex => {\n switch (type) {\n case \"secp256k1\":\n return concatHex([\"0x00\", sig]);\n case \"contract\":\n return concatHex([\"0x01\", sig]);\n default:\n return assertNever(type, \"Unexpected session key type\");\n }\n};\n\nexport const isGlobalValidation = (\n data: Pick<Static<typeof PermissionsData>, \"permissions\">,\n): boolean => {\n return data.permissions.some((p) => p.type === PermissionType.ROOT);\n};\n"]}