@rhinestone/sdk 1.0.40 → 1.0.41-alpha.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 (208) hide show
  1. package/package.json +1 -1
  2. package/dist/src/accounts/error.d.ts +0 -114
  3. package/dist/src/accounts/error.d.ts.map +0 -1
  4. package/dist/src/accounts/error.js +0 -174
  5. package/dist/src/accounts/index.d.ts +0 -50
  6. package/dist/src/accounts/index.d.ts.map +0 -1
  7. package/dist/src/accounts/index.js +0 -669
  8. package/dist/src/accounts/index.test.d.ts +0 -2
  9. package/dist/src/accounts/index.test.d.ts.map +0 -1
  10. package/dist/src/accounts/index.test.js +0 -33
  11. package/dist/src/accounts/json-rpc/index.d.ts +0 -5
  12. package/dist/src/accounts/json-rpc/index.d.ts.map +0 -1
  13. package/dist/src/accounts/json-rpc/index.js +0 -20
  14. package/dist/src/accounts/json-rpc/index.test.d.ts +0 -2
  15. package/dist/src/accounts/json-rpc/index.test.d.ts.map +0 -1
  16. package/dist/src/accounts/json-rpc/index.test.js +0 -33
  17. package/dist/src/accounts/json-rpc/providers.d.ts +0 -5
  18. package/dist/src/accounts/json-rpc/providers.d.ts.map +0 -1
  19. package/dist/src/accounts/json-rpc/providers.js +0 -22
  20. package/dist/src/accounts/json-rpc/providers.test.d.ts +0 -2
  21. package/dist/src/accounts/json-rpc/providers.test.d.ts.map +0 -1
  22. package/dist/src/accounts/json-rpc/providers.test.js +0 -43
  23. package/dist/src/accounts/kernel.d.ts +0 -29
  24. package/dist/src/accounts/kernel.d.ts.map +0 -1
  25. package/dist/src/accounts/kernel.js +0 -297
  26. package/dist/src/accounts/kernel.test.d.ts +0 -2
  27. package/dist/src/accounts/kernel.test.d.ts.map +0 -1
  28. package/dist/src/accounts/kernel.test.js +0 -132
  29. package/dist/src/accounts/nexus.d.ts +0 -35
  30. package/dist/src/accounts/nexus.d.ts.map +0 -1
  31. package/dist/src/accounts/nexus.js +0 -471
  32. package/dist/src/accounts/nexus.test.d.ts +0 -2
  33. package/dist/src/accounts/nexus.test.d.ts.map +0 -1
  34. package/dist/src/accounts/nexus.test.js +0 -118
  35. package/dist/src/accounts/passport.d.ts +0 -12
  36. package/dist/src/accounts/passport.d.ts.map +0 -1
  37. package/dist/src/accounts/passport.js +0 -173
  38. package/dist/src/accounts/safe.d.ts +0 -35
  39. package/dist/src/accounts/safe.d.ts.map +0 -1
  40. package/dist/src/accounts/safe.js +0 -365
  41. package/dist/src/accounts/safe.test.d.ts +0 -2
  42. package/dist/src/accounts/safe.test.d.ts.map +0 -1
  43. package/dist/src/accounts/safe.test.js +0 -118
  44. package/dist/src/accounts/signing/common.d.ts +0 -27
  45. package/dist/src/accounts/signing/common.d.ts.map +0 -1
  46. package/dist/src/accounts/signing/common.js +0 -183
  47. package/dist/src/accounts/signing/message.d.ts +0 -5
  48. package/dist/src/accounts/signing/message.d.ts.map +0 -1
  49. package/dist/src/accounts/signing/message.js +0 -47
  50. package/dist/src/accounts/signing/passkeys.d.ts +0 -36
  51. package/dist/src/accounts/signing/passkeys.d.ts.map +0 -1
  52. package/dist/src/accounts/signing/passkeys.js +0 -125
  53. package/dist/src/accounts/signing/passkeys.test.d.ts +0 -2
  54. package/dist/src/accounts/signing/passkeys.test.d.ts.map +0 -1
  55. package/dist/src/accounts/signing/passkeys.test.js +0 -88
  56. package/dist/src/accounts/signing/typedData.d.ts +0 -5
  57. package/dist/src/accounts/signing/typedData.d.ts.map +0 -1
  58. package/dist/src/accounts/signing/typedData.js +0 -35
  59. package/dist/src/accounts/startale.d.ts +0 -27
  60. package/dist/src/accounts/startale.d.ts.map +0 -1
  61. package/dist/src/accounts/startale.js +0 -116
  62. package/dist/src/accounts/startale.test.d.ts +0 -2
  63. package/dist/src/accounts/startale.test.d.ts.map +0 -1
  64. package/dist/src/accounts/startale.test.js +0 -92
  65. package/dist/src/accounts/utils.d.ts +0 -33
  66. package/dist/src/accounts/utils.d.ts.map +0 -1
  67. package/dist/src/accounts/utils.js +0 -201
  68. package/dist/src/accounts/utils.test.d.ts +0 -2
  69. package/dist/src/accounts/utils.test.d.ts.map +0 -1
  70. package/dist/src/accounts/utils.test.js +0 -49
  71. package/dist/src/accounts/walletClient.d.ts +0 -34
  72. package/dist/src/accounts/walletClient.d.ts.map +0 -1
  73. package/dist/src/accounts/walletClient.js +0 -121
  74. package/dist/src/actions/compact.d.ts +0 -13
  75. package/dist/src/actions/compact.d.ts.map +0 -1
  76. package/dist/src/actions/compact.js +0 -210
  77. package/dist/src/actions/deployment.d.ts +0 -19
  78. package/dist/src/actions/deployment.d.ts.map +0 -1
  79. package/dist/src/actions/deployment.js +0 -78
  80. package/dist/src/actions/ecdsa.d.ts +0 -35
  81. package/dist/src/actions/ecdsa.d.ts.map +0 -1
  82. package/dist/src/actions/ecdsa.js +0 -114
  83. package/dist/src/actions/ecdsa.test.d.ts +0 -2
  84. package/dist/src/actions/ecdsa.test.d.ts.map +0 -1
  85. package/dist/src/actions/ecdsa.test.js +0 -99
  86. package/dist/src/actions/index.d.ts +0 -17
  87. package/dist/src/actions/index.d.ts.map +0 -1
  88. package/dist/src/actions/index.js +0 -53
  89. package/dist/src/actions/mfa.d.ts +0 -37
  90. package/dist/src/actions/mfa.d.ts.map +0 -1
  91. package/dist/src/actions/mfa.js +0 -133
  92. package/dist/src/actions/passkeys.d.ts +0 -37
  93. package/dist/src/actions/passkeys.d.ts.map +0 -1
  94. package/dist/src/actions/passkeys.js +0 -129
  95. package/dist/src/actions/passkeys.test.d.ts +0 -2
  96. package/dist/src/actions/passkeys.test.d.ts.map +0 -1
  97. package/dist/src/actions/passkeys.test.js +0 -54
  98. package/dist/src/actions/recovery.d.ts +0 -33
  99. package/dist/src/actions/recovery.d.ts.map +0 -1
  100. package/dist/src/actions/recovery.js +0 -193
  101. package/dist/src/actions/recovery.test.d.ts +0 -2
  102. package/dist/src/actions/recovery.test.d.ts.map +0 -1
  103. package/dist/src/actions/recovery.test.js +0 -168
  104. package/dist/src/actions/smart-sessions.d.ts +0 -14
  105. package/dist/src/actions/smart-sessions.d.ts.map +0 -1
  106. package/dist/src/actions/smart-sessions.js +0 -16
  107. package/dist/src/errors/index.d.ts +0 -5
  108. package/dist/src/errors/index.d.ts.map +0 -1
  109. package/dist/src/errors/index.js +0 -53
  110. package/dist/src/execution/compact.d.ts +0 -151
  111. package/dist/src/execution/compact.d.ts.map +0 -1
  112. package/dist/src/execution/compact.js +0 -122
  113. package/dist/src/execution/error.d.ts +0 -61
  114. package/dist/src/execution/error.d.ts.map +0 -1
  115. package/dist/src/execution/error.js +0 -87
  116. package/dist/src/execution/index.d.ts +0 -41
  117. package/dist/src/execution/index.d.ts.map +0 -1
  118. package/dist/src/execution/index.js +0 -233
  119. package/dist/src/execution/permit2.d.ts +0 -148
  120. package/dist/src/execution/permit2.d.ts.map +0 -1
  121. package/dist/src/execution/permit2.js +0 -291
  122. package/dist/src/execution/singleChainOps.d.ts +0 -28
  123. package/dist/src/execution/singleChainOps.d.ts.map +0 -1
  124. package/dist/src/execution/singleChainOps.js +0 -32
  125. package/dist/src/execution/smart-session.d.ts +0 -13
  126. package/dist/src/execution/smart-session.d.ts.map +0 -1
  127. package/dist/src/execution/smart-session.js +0 -178
  128. package/dist/src/execution/types.d.ts +0 -36
  129. package/dist/src/execution/types.d.ts.map +0 -1
  130. package/dist/src/execution/types.js +0 -2
  131. package/dist/src/execution/utils.d.ts +0 -83
  132. package/dist/src/execution/utils.d.ts.map +0 -1
  133. package/dist/src/execution/utils.js +0 -705
  134. package/dist/src/index.d.ts +0 -74
  135. package/dist/src/index.d.ts.map +0 -1
  136. package/dist/src/index.js +0 -317
  137. package/dist/src/modules/abi/smart-sessions.d.ts +0 -104
  138. package/dist/src/modules/abi/smart-sessions.d.ts.map +0 -1
  139. package/dist/src/modules/abi/smart-sessions.js +0 -131
  140. package/dist/src/modules/chain-abstraction.d.ts +0 -5
  141. package/dist/src/modules/chain-abstraction.d.ts.map +0 -1
  142. package/dist/src/modules/chain-abstraction.js +0 -7
  143. package/dist/src/modules/common.d.ts +0 -30
  144. package/dist/src/modules/common.d.ts.map +0 -1
  145. package/dist/src/modules/common.js +0 -42
  146. package/dist/src/modules/index.d.ts +0 -10
  147. package/dist/src/modules/index.d.ts.map +0 -1
  148. package/dist/src/modules/index.js +0 -94
  149. package/dist/src/modules/index.test.d.ts +0 -2
  150. package/dist/src/modules/index.test.d.ts.map +0 -1
  151. package/dist/src/modules/index.test.js +0 -81
  152. package/dist/src/modules/legacy.d.ts +0 -10
  153. package/dist/src/modules/legacy.d.ts.map +0 -1
  154. package/dist/src/modules/legacy.js +0 -65
  155. package/dist/src/modules/read.d.ts +0 -9
  156. package/dist/src/modules/read.d.ts.map +0 -1
  157. package/dist/src/modules/read.js +0 -125
  158. package/dist/src/modules/validators/core.d.ts +0 -29
  159. package/dist/src/modules/validators/core.d.ts.map +0 -1
  160. package/dist/src/modules/validators/core.js +0 -278
  161. package/dist/src/modules/validators/core.test.d.ts +0 -2
  162. package/dist/src/modules/validators/core.test.d.ts.map +0 -1
  163. package/dist/src/modules/validators/core.test.js +0 -101
  164. package/dist/src/modules/validators/index.d.ts +0 -4
  165. package/dist/src/modules/validators/index.d.ts.map +0 -1
  166. package/dist/src/modules/validators/index.js +0 -15
  167. package/dist/src/modules/validators/smart-sessions.d.ts +0 -96
  168. package/dist/src/modules/validators/smart-sessions.d.ts.map +0 -1
  169. package/dist/src/modules/validators/smart-sessions.js +0 -497
  170. package/dist/src/modules/validators/smart-sessions.test.d.ts +0 -2
  171. package/dist/src/modules/validators/smart-sessions.test.d.ts.map +0 -1
  172. package/dist/src/modules/validators/smart-sessions.test.js +0 -219
  173. package/dist/src/orchestrator/client.d.ts +0 -27
  174. package/dist/src/orchestrator/client.d.ts.map +0 -1
  175. package/dist/src/orchestrator/client.js +0 -354
  176. package/dist/src/orchestrator/consts.d.ts +0 -5
  177. package/dist/src/orchestrator/consts.d.ts.map +0 -1
  178. package/dist/src/orchestrator/consts.js +0 -9
  179. package/dist/src/orchestrator/error.d.ts +0 -232
  180. package/dist/src/orchestrator/error.d.ts.map +0 -1
  181. package/dist/src/orchestrator/error.js +0 -268
  182. package/dist/src/orchestrator/index.d.ts +0 -10
  183. package/dist/src/orchestrator/index.d.ts.map +0 -1
  184. package/dist/src/orchestrator/index.js +0 -57
  185. package/dist/src/orchestrator/registry.d.ts +0 -22
  186. package/dist/src/orchestrator/registry.d.ts.map +0 -1
  187. package/dist/src/orchestrator/registry.js +0 -121
  188. package/dist/src/orchestrator/registry.test.d.ts +0 -2
  189. package/dist/src/orchestrator/registry.test.d.ts.map +0 -1
  190. package/dist/src/orchestrator/registry.test.js +0 -150
  191. package/dist/src/orchestrator/types.d.ts +0 -295
  192. package/dist/src/orchestrator/types.d.ts.map +0 -1
  193. package/dist/src/orchestrator/types.js +0 -17
  194. package/dist/src/orchestrator/utils.d.ts +0 -3
  195. package/dist/src/orchestrator/utils.d.ts.map +0 -1
  196. package/dist/src/orchestrator/utils.js +0 -24
  197. package/dist/src/types.d.ts +0 -278
  198. package/dist/src/types.d.ts.map +0 -1
  199. package/dist/src/types.js +0 -2
  200. package/dist/src/utils/index.d.ts +0 -26
  201. package/dist/src/utils/index.d.ts.map +0 -1
  202. package/dist/src/utils/index.js +0 -63
  203. package/dist/test/consts.d.ts +0 -10
  204. package/dist/test/consts.d.ts.map +0 -1
  205. package/dist/test/consts.js +0 -22
  206. package/dist/test/utils/utils.d.ts +0 -5
  207. package/dist/test/utils/utils.d.ts.map +0 -1
  208. package/dist/test/utils/utils.js +0 -20
@@ -1,497 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION = exports.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG = exports.SMART_SESSIONS_FALLBACK_TARGET_FLAG = exports.SMART_SESSIONS_VALIDATOR_ADDRESS = exports.SMART_SESSION_MODE_ENABLE = exports.SMART_SESSION_MODE_USE = void 0;
4
- exports.getSmartSessionData = getSmartSessionData;
5
- exports.getSmartSessionValidator = getSmartSessionValidator;
6
- exports.getEnableSessionCall = getEnableSessionCall;
7
- exports.encodeSmartSessionSignature = encodeSmartSessionSignature;
8
- exports.getPermissionId = getPermissionId;
9
- exports.isSessionEnabled = isSessionEnabled;
10
- const solady_1 = require("solady");
11
- const viem_1 = require("viem");
12
- const smart_sessions_1 = require("../abi/smart-sessions");
13
- const common_1 = require("../common");
14
- const core_1 = require("./core");
15
- const SMART_SESSIONS_VALIDATOR_ADDRESS = '0x00000000008bdaba73cd9815d79069c247eb4bda';
16
- exports.SMART_SESSIONS_VALIDATOR_ADDRESS = SMART_SESSIONS_VALIDATOR_ADDRESS;
17
- const SMART_SESSION_MODE_USE = '0x00';
18
- exports.SMART_SESSION_MODE_USE = SMART_SESSION_MODE_USE;
19
- const SMART_SESSION_MODE_ENABLE = '0x01';
20
- exports.SMART_SESSION_MODE_ENABLE = SMART_SESSION_MODE_ENABLE;
21
- const SMART_SESSION_MODE_UNSAFE_ENABLE = '0x02';
22
- const SPENDING_LIMITS_POLICY_ADDRESS = '0x00000088D48cF102A8Cdb0137A9b173f957c6343';
23
- const TIME_FRAME_POLICY_ADDRESS = '0x8177451511dE0577b911C254E9551D981C26dc72';
24
- const SUDO_POLICY_ADDRESS = '0x0000003111cD8e92337C100F22B7A9dbf8DEE301';
25
- const UNIVERSAL_ACTION_POLICY_ADDRESS = '0x0000006DDA6c463511C4e9B05CFc34C1247fCF1F';
26
- const USAGE_LIMIT_POLICY_ADDRESS = '0x1F34eF8311345A3A4a4566aF321b313052F51493';
27
- const VALUE_LIMIT_POLICY_ADDRESS = '0x730DA93267E7E513e932301B47F2ac7D062abC83';
28
- const SMART_SESSIONS_FALLBACK_TARGET_FLAG = '0x0000000000000000000000000000000000000001';
29
- exports.SMART_SESSIONS_FALLBACK_TARGET_FLAG = SMART_SESSIONS_FALLBACK_TARGET_FLAG;
30
- const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG = '0x00000001';
31
- exports.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG = SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG;
32
- const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION = '0x00000002';
33
- exports.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION = SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION;
34
- const ACTION_CONDITION_EQUAL = 0;
35
- const ACTION_CONDITION_GREATER_THAN = 1;
36
- const ACTION_CONDITION_LESS_THAN = 2;
37
- const ACTION_CONDITION_GREATER_THAN_OR_EQUAL = 3;
38
- const ACTION_CONDITION_LESS_THAN_OR_EQUAL = 4;
39
- const ACTION_CONDITION_NOT_EQUAL = 5;
40
- const ACTION_CONDITION_IN_RANGE = 6;
41
- async function getEnableSessionCall(session) {
42
- const sessionData = getSmartSessionData(session);
43
- return {
44
- to: SMART_SESSIONS_VALIDATOR_ADDRESS,
45
- data: (0, viem_1.encodeFunctionData)({
46
- abi: smart_sessions_1.enableSessionsAbi,
47
- functionName: 'enableSessions',
48
- args: [[sessionData]],
49
- }),
50
- };
51
- }
52
- function getSmartSessionData(session) {
53
- const sessionValidator = (0, core_1.getValidator)(session.owners);
54
- const userOpPolicies = (session.policies || [
55
- {
56
- type: 'sudo',
57
- },
58
- ]).map((policy) => {
59
- return getPolicyData(policy);
60
- });
61
- return {
62
- sessionValidator: sessionValidator.address,
63
- sessionValidatorInitData: sessionValidator.initData,
64
- salt: session.salt ?? viem_1.zeroHash,
65
- userOpPolicies,
66
- // Using the fallback action by default (any transaction will pass)
67
- actions: (session.actions || [
68
- {
69
- target: SMART_SESSIONS_FALLBACK_TARGET_FLAG,
70
- selector: SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG,
71
- },
72
- ]).map((action) => {
73
- const actionPolicies = (action.policies || [
74
- {
75
- type: 'sudo',
76
- },
77
- ]).map((policy) => getPolicyData(policy));
78
- return {
79
- actionTargetSelector: action.selector,
80
- actionTarget: action.target,
81
- actionPolicies,
82
- };
83
- }),
84
- erc7739Policies: session.signing
85
- ? {
86
- allowedERC7739Content: session.signing.allowedContent.map((content) => ({
87
- appDomainSeparator: content.domainSeparator,
88
- contentName: content.contentName,
89
- })),
90
- erc1271Policies: (session.signing.policies || [
91
- {
92
- type: 'sudo',
93
- },
94
- ]).map((policy) => getPolicyData(policy)),
95
- }
96
- : {
97
- allowedERC7739Content: [],
98
- erc1271Policies: [],
99
- },
100
- permitERC4337Paymaster: true,
101
- };
102
- }
103
- function getSmartSessionValidator(config) {
104
- if (!config.experimental_sessions) {
105
- return null;
106
- }
107
- const { enabled, module } = config.experimental_sessions;
108
- if (!enabled) {
109
- return null;
110
- }
111
- return {
112
- address: module ?? SMART_SESSIONS_VALIDATOR_ADDRESS,
113
- initData: '0x',
114
- deInitData: '0x',
115
- additionalContext: '0x',
116
- type: common_1.MODULE_TYPE_ID_VALIDATOR,
117
- };
118
- }
119
- function getPolicyData(policy) {
120
- switch (policy.type) {
121
- case 'sudo':
122
- return {
123
- policy: SUDO_POLICY_ADDRESS,
124
- initData: '0x',
125
- };
126
- case 'universal-action': {
127
- function getCondition(condition) {
128
- switch (condition) {
129
- case 'equal':
130
- return ACTION_CONDITION_EQUAL;
131
- case 'greaterThan':
132
- return ACTION_CONDITION_GREATER_THAN;
133
- case 'lessThan':
134
- return ACTION_CONDITION_LESS_THAN;
135
- case 'greaterThanOrEqual':
136
- return ACTION_CONDITION_GREATER_THAN_OR_EQUAL;
137
- case 'lessThanOrEqual':
138
- return ACTION_CONDITION_LESS_THAN_OR_EQUAL;
139
- case 'notEqual':
140
- return ACTION_CONDITION_NOT_EQUAL;
141
- case 'inRange':
142
- return ACTION_CONDITION_IN_RANGE;
143
- }
144
- }
145
- const MAX_RULES = 16;
146
- const rules = createFixedArray(MAX_RULES, () => ({
147
- condition: ACTION_CONDITION_EQUAL,
148
- offset: 0n,
149
- isLimited: false,
150
- ref: viem_1.zeroHash,
151
- usage: { limit: 0n, used: 0n },
152
- }));
153
- for (let i = 0; i < policy.rules.length; i++) {
154
- const rule = policy.rules[i];
155
- const ref = (0, viem_1.isHex)(rule.referenceValue)
156
- ? (0, viem_1.padHex)(rule.referenceValue)
157
- : (0, viem_1.toHex)(rule.referenceValue, { size: 32 });
158
- rules[i] = {
159
- condition: getCondition(rule.condition),
160
- offset: rule.calldataOffset,
161
- isLimited: rule.usageLimit !== undefined,
162
- ref,
163
- usage: {
164
- limit: rule.usageLimit ? rule.usageLimit : 0n,
165
- used: 0n,
166
- },
167
- };
168
- }
169
- return {
170
- policy: UNIVERSAL_ACTION_POLICY_ADDRESS,
171
- initData: (0, viem_1.encodeAbiParameters)([
172
- {
173
- components: [
174
- {
175
- name: 'valueLimitPerUse',
176
- type: 'uint256',
177
- },
178
- {
179
- components: [
180
- {
181
- name: 'length',
182
- type: 'uint256',
183
- },
184
- {
185
- components: [
186
- {
187
- name: 'condition',
188
- type: 'uint8',
189
- },
190
- {
191
- name: 'offset',
192
- type: 'uint64',
193
- },
194
- {
195
- name: 'isLimited',
196
- type: 'bool',
197
- },
198
- {
199
- name: 'ref',
200
- type: 'bytes32',
201
- },
202
- {
203
- components: [
204
- {
205
- name: 'limit',
206
- type: 'uint256',
207
- },
208
- {
209
- name: 'used',
210
- type: 'uint256',
211
- },
212
- ],
213
- name: 'usage',
214
- type: 'tuple',
215
- },
216
- ],
217
- name: 'rules',
218
- type: 'tuple[16]',
219
- },
220
- ],
221
- name: 'paramRules',
222
- type: 'tuple',
223
- },
224
- ],
225
- name: 'ActionConfig',
226
- type: 'tuple',
227
- },
228
- ], [
229
- {
230
- valueLimitPerUse: policy.valueLimitPerUse ?? 0n,
231
- paramRules: {
232
- length: BigInt(policy.rules.length),
233
- rules: rules,
234
- },
235
- },
236
- ]),
237
- };
238
- }
239
- case 'spending-limits': {
240
- const tokens = policy.limits.map(({ token }) => token);
241
- const limits = policy.limits.map(({ amount }) => amount);
242
- return {
243
- policy: SPENDING_LIMITS_POLICY_ADDRESS,
244
- initData: (0, viem_1.encodeAbiParameters)([{ type: 'address[]' }, { type: 'uint256[]' }], [tokens, limits]),
245
- };
246
- }
247
- case 'time-frame': {
248
- return {
249
- policy: TIME_FRAME_POLICY_ADDRESS,
250
- initData: (0, viem_1.encodePacked)(['uint48', 'uint48'], [
251
- Math.floor(policy.validUntil / 1000),
252
- Math.floor(policy.validAfter / 1000),
253
- ]),
254
- };
255
- }
256
- case 'usage-limit': {
257
- return {
258
- policy: USAGE_LIMIT_POLICY_ADDRESS,
259
- initData: (0, viem_1.encodePacked)(['uint128'], [policy.limit]),
260
- };
261
- }
262
- case 'value-limit': {
263
- return {
264
- policy: VALUE_LIMIT_POLICY_ADDRESS,
265
- initData: (0, viem_1.encodeAbiParameters)([{ type: 'uint256' }], [policy.limit]),
266
- };
267
- }
268
- }
269
- }
270
- function createFixedArray(length, getValue) {
271
- return Array.from({ length }, (_, i) => getValue(i));
272
- }
273
- async function isSessionEnabled(client, address, permissionId) {
274
- return await client.readContract({
275
- address: SMART_SESSIONS_VALIDATOR_ADDRESS,
276
- abi: [
277
- {
278
- inputs: [
279
- {
280
- internalType: 'PermissionId',
281
- name: 'permissionId',
282
- type: 'bytes32',
283
- },
284
- {
285
- internalType: 'address',
286
- name: 'account',
287
- type: 'address',
288
- },
289
- ],
290
- name: 'isPermissionEnabled',
291
- outputs: [
292
- {
293
- internalType: 'bool',
294
- name: '',
295
- type: 'bool',
296
- },
297
- ],
298
- stateMutability: 'view',
299
- type: 'function',
300
- },
301
- ],
302
- functionName: 'isPermissionEnabled',
303
- args: [permissionId, address],
304
- });
305
- }
306
- function encodeSmartSessionSignature(mode, permissionId, signature, enableSessionData) {
307
- switch (mode) {
308
- case SMART_SESSION_MODE_USE:
309
- return (0, viem_1.encodePacked)(['bytes1', 'bytes32', 'bytes'], [mode, permissionId, signature]);
310
- case SMART_SESSION_MODE_ENABLE:
311
- case SMART_SESSION_MODE_UNSAFE_ENABLE:
312
- if (!enableSessionData) {
313
- throw new Error('enableSession is required for ENABLE mode');
314
- }
315
- return (0, viem_1.encodePacked)(['bytes1', 'bytes'], [
316
- mode,
317
- solady_1.LibZip.flzCompress(encodeEnableSessionSignature(enableSessionData, signature)),
318
- ]);
319
- default:
320
- throw new Error(`Unknown mode ${mode}`);
321
- }
322
- }
323
- function encodeEnableSessionSignature(enableSessionData, signature) {
324
- return (0, viem_1.encodeAbiParameters)([
325
- {
326
- components: [
327
- {
328
- type: 'uint8',
329
- name: 'chainDigestIndex',
330
- },
331
- {
332
- type: 'tuple[]',
333
- components: [
334
- {
335
- internalType: 'uint64',
336
- name: 'chainId',
337
- type: 'uint64',
338
- },
339
- {
340
- internalType: 'bytes32',
341
- name: 'sessionDigest',
342
- type: 'bytes32',
343
- },
344
- ],
345
- name: 'hashesAndChainIds',
346
- },
347
- {
348
- components: [
349
- {
350
- internalType: 'contract ISessionValidator',
351
- name: 'sessionValidator',
352
- type: 'address',
353
- },
354
- {
355
- internalType: 'bytes',
356
- name: 'sessionValidatorInitData',
357
- type: 'bytes',
358
- },
359
- { internalType: 'bytes32', name: 'salt', type: 'bytes32' },
360
- {
361
- components: [
362
- { internalType: 'address', name: 'policy', type: 'address' },
363
- { internalType: 'bytes', name: 'initData', type: 'bytes' },
364
- ],
365
- internalType: 'struct PolicyData[]',
366
- name: 'userOpPolicies',
367
- type: 'tuple[]',
368
- },
369
- {
370
- components: [
371
- {
372
- components: [
373
- {
374
- internalType: 'bytes32',
375
- name: 'appDomainSeparator',
376
- type: 'bytes32',
377
- },
378
- {
379
- internalType: 'string[]',
380
- name: 'contentName',
381
- type: 'string[]',
382
- },
383
- ],
384
- internalType: 'struct ERC7739Context[]',
385
- name: 'allowedERC7739Content',
386
- type: 'tuple[]',
387
- },
388
- {
389
- components: [
390
- {
391
- internalType: 'address',
392
- name: 'policy',
393
- type: 'address',
394
- },
395
- {
396
- internalType: 'bytes',
397
- name: 'initData',
398
- type: 'bytes',
399
- },
400
- ],
401
- internalType: 'struct PolicyData[]',
402
- name: 'erc1271Policies',
403
- type: 'tuple[]',
404
- },
405
- ],
406
- internalType: 'struct ERC7739Data',
407
- name: 'erc7739Policies',
408
- type: 'tuple',
409
- },
410
- {
411
- components: [
412
- {
413
- internalType: 'bytes4',
414
- name: 'actionTargetSelector',
415
- type: 'bytes4',
416
- },
417
- {
418
- internalType: 'address',
419
- name: 'actionTarget',
420
- type: 'address',
421
- },
422
- {
423
- components: [
424
- {
425
- internalType: 'address',
426
- name: 'policy',
427
- type: 'address',
428
- },
429
- {
430
- internalType: 'bytes',
431
- name: 'initData',
432
- type: 'bytes',
433
- },
434
- ],
435
- internalType: 'struct PolicyData[]',
436
- name: 'actionPolicies',
437
- type: 'tuple[]',
438
- },
439
- ],
440
- internalType: 'struct ActionData[]',
441
- name: 'actions',
442
- type: 'tuple[]',
443
- },
444
- {
445
- internalType: 'bool',
446
- name: 'permitERC4337Paymaster',
447
- type: 'bool',
448
- },
449
- ],
450
- internalType: 'struct Session',
451
- name: 'sessionToEnable',
452
- type: 'tuple',
453
- },
454
- {
455
- type: 'bytes',
456
- name: 'permissionEnableSig',
457
- },
458
- ],
459
- internalType: 'struct EnableSession',
460
- name: 'enableSession',
461
- type: 'tuple',
462
- },
463
- {
464
- type: 'bytes',
465
- name: 'signature',
466
- },
467
- ], [
468
- {
469
- chainDigestIndex: enableSessionData.chainDigestIndex,
470
- hashesAndChainIds: enableSessionData.hashesAndChainIds,
471
- sessionToEnable: enableSessionData.sessionToEnable,
472
- permissionEnableSig: enableSessionData.signature,
473
- },
474
- signature,
475
- ]);
476
- }
477
- function getPermissionId(session) {
478
- const sessionValidator = (0, core_1.getValidator)(session.owners);
479
- return (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([
480
- {
481
- type: 'address',
482
- name: 'sessionValidator',
483
- },
484
- {
485
- type: 'bytes',
486
- name: 'sessionValidatorInitData',
487
- },
488
- {
489
- type: 'bytes32',
490
- name: 'salt',
491
- },
492
- ], [
493
- sessionValidator.address,
494
- sessionValidator.initData,
495
- session.salt ?? viem_1.zeroHash,
496
- ]));
497
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=smart-sessions.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smart-sessions.test.d.ts","sourceRoot":"","sources":["../../../../modules/validators/smart-sessions.test.ts"],"names":[],"mappings":""}