@rhinestone/sdk 0.0.0-dev-20260204114155

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 (206) hide show
  1. package/README.md +83 -0
  2. package/dist/src/accounts/error.d.ts +114 -0
  3. package/dist/src/accounts/error.d.ts.map +1 -0
  4. package/dist/src/accounts/error.js +174 -0
  5. package/dist/src/accounts/index.d.ts +48 -0
  6. package/dist/src/accounts/index.d.ts.map +1 -0
  7. package/dist/src/accounts/index.js +643 -0
  8. package/dist/src/accounts/index.test.d.ts +2 -0
  9. package/dist/src/accounts/index.test.d.ts.map +1 -0
  10. package/dist/src/accounts/index.test.js +33 -0
  11. package/dist/src/accounts/json-rpc/index.d.ts +5 -0
  12. package/dist/src/accounts/json-rpc/index.d.ts.map +1 -0
  13. package/dist/src/accounts/json-rpc/index.js +20 -0
  14. package/dist/src/accounts/json-rpc/index.test.d.ts +2 -0
  15. package/dist/src/accounts/json-rpc/index.test.d.ts.map +1 -0
  16. package/dist/src/accounts/json-rpc/index.test.js +33 -0
  17. package/dist/src/accounts/json-rpc/providers.d.ts +5 -0
  18. package/dist/src/accounts/json-rpc/providers.d.ts.map +1 -0
  19. package/dist/src/accounts/json-rpc/providers.js +22 -0
  20. package/dist/src/accounts/json-rpc/providers.test.d.ts +2 -0
  21. package/dist/src/accounts/json-rpc/providers.test.d.ts.map +1 -0
  22. package/dist/src/accounts/json-rpc/providers.test.js +43 -0
  23. package/dist/src/accounts/kernel.d.ts +27 -0
  24. package/dist/src/accounts/kernel.d.ts.map +1 -0
  25. package/dist/src/accounts/kernel.js +281 -0
  26. package/dist/src/accounts/kernel.test.d.ts +2 -0
  27. package/dist/src/accounts/kernel.test.d.ts.map +1 -0
  28. package/dist/src/accounts/kernel.test.js +132 -0
  29. package/dist/src/accounts/nexus.d.ts +33 -0
  30. package/dist/src/accounts/nexus.d.ts.map +1 -0
  31. package/dist/src/accounts/nexus.js +455 -0
  32. package/dist/src/accounts/nexus.test.d.ts +2 -0
  33. package/dist/src/accounts/nexus.test.d.ts.map +1 -0
  34. package/dist/src/accounts/nexus.test.js +118 -0
  35. package/dist/src/accounts/passport.d.ts +9 -0
  36. package/dist/src/accounts/passport.d.ts.map +1 -0
  37. package/dist/src/accounts/passport.js +82 -0
  38. package/dist/src/accounts/safe.d.ts +33 -0
  39. package/dist/src/accounts/safe.d.ts.map +1 -0
  40. package/dist/src/accounts/safe.js +349 -0
  41. package/dist/src/accounts/safe.test.d.ts +2 -0
  42. package/dist/src/accounts/safe.test.d.ts.map +1 -0
  43. package/dist/src/accounts/safe.test.js +118 -0
  44. package/dist/src/accounts/signing/common.d.ts +27 -0
  45. package/dist/src/accounts/signing/common.d.ts.map +1 -0
  46. package/dist/src/accounts/signing/common.js +190 -0
  47. package/dist/src/accounts/signing/message.d.ts +5 -0
  48. package/dist/src/accounts/signing/message.d.ts.map +1 -0
  49. package/dist/src/accounts/signing/message.js +47 -0
  50. package/dist/src/accounts/signing/passkeys.d.ts +36 -0
  51. package/dist/src/accounts/signing/passkeys.d.ts.map +1 -0
  52. package/dist/src/accounts/signing/passkeys.js +125 -0
  53. package/dist/src/accounts/signing/passkeys.test.d.ts +2 -0
  54. package/dist/src/accounts/signing/passkeys.test.d.ts.map +1 -0
  55. package/dist/src/accounts/signing/passkeys.test.js +88 -0
  56. package/dist/src/accounts/signing/typedData.d.ts +5 -0
  57. package/dist/src/accounts/signing/typedData.d.ts.map +1 -0
  58. package/dist/src/accounts/signing/typedData.js +35 -0
  59. package/dist/src/accounts/startale.d.ts +25 -0
  60. package/dist/src/accounts/startale.d.ts.map +1 -0
  61. package/dist/src/accounts/startale.js +112 -0
  62. package/dist/src/accounts/startale.test.d.ts +2 -0
  63. package/dist/src/accounts/startale.test.d.ts.map +1 -0
  64. package/dist/src/accounts/startale.test.js +92 -0
  65. package/dist/src/accounts/utils.d.ts +33 -0
  66. package/dist/src/accounts/utils.d.ts.map +1 -0
  67. package/dist/src/accounts/utils.js +208 -0
  68. package/dist/src/accounts/utils.test.d.ts +2 -0
  69. package/dist/src/accounts/utils.test.d.ts.map +1 -0
  70. package/dist/src/accounts/utils.test.js +49 -0
  71. package/dist/src/accounts/walletClient.d.ts +34 -0
  72. package/dist/src/accounts/walletClient.d.ts.map +1 -0
  73. package/dist/src/accounts/walletClient.js +121 -0
  74. package/dist/src/actions/compact.d.ts +15 -0
  75. package/dist/src/actions/compact.d.ts.map +1 -0
  76. package/dist/src/actions/compact.js +213 -0
  77. package/dist/src/actions/deployment.d.ts +19 -0
  78. package/dist/src/actions/deployment.d.ts.map +1 -0
  79. package/dist/src/actions/deployment.js +78 -0
  80. package/dist/src/actions/ecdsa.d.ts +35 -0
  81. package/dist/src/actions/ecdsa.d.ts.map +1 -0
  82. package/dist/src/actions/ecdsa.js +114 -0
  83. package/dist/src/actions/ecdsa.test.d.ts +2 -0
  84. package/dist/src/actions/ecdsa.test.d.ts.map +1 -0
  85. package/dist/src/actions/ecdsa.test.js +99 -0
  86. package/dist/src/actions/index.d.ts +17 -0
  87. package/dist/src/actions/index.d.ts.map +1 -0
  88. package/dist/src/actions/index.js +53 -0
  89. package/dist/src/actions/mfa.d.ts +37 -0
  90. package/dist/src/actions/mfa.d.ts.map +1 -0
  91. package/dist/src/actions/mfa.js +133 -0
  92. package/dist/src/actions/passkeys.d.ts +37 -0
  93. package/dist/src/actions/passkeys.d.ts.map +1 -0
  94. package/dist/src/actions/passkeys.js +129 -0
  95. package/dist/src/actions/passkeys.test.d.ts +2 -0
  96. package/dist/src/actions/passkeys.test.d.ts.map +1 -0
  97. package/dist/src/actions/passkeys.test.js +54 -0
  98. package/dist/src/actions/recovery.d.ts +33 -0
  99. package/dist/src/actions/recovery.d.ts.map +1 -0
  100. package/dist/src/actions/recovery.js +193 -0
  101. package/dist/src/actions/recovery.test.d.ts +2 -0
  102. package/dist/src/actions/recovery.test.d.ts.map +1 -0
  103. package/dist/src/actions/recovery.test.js +168 -0
  104. package/dist/src/actions/smart-sessions.d.ts +23 -0
  105. package/dist/src/actions/smart-sessions.d.ts.map +1 -0
  106. package/dist/src/actions/smart-sessions.js +52 -0
  107. package/dist/src/errors/index.d.ts +5 -0
  108. package/dist/src/errors/index.d.ts.map +1 -0
  109. package/dist/src/errors/index.js +54 -0
  110. package/dist/src/execution/compact.d.ts +148 -0
  111. package/dist/src/execution/compact.d.ts.map +1 -0
  112. package/dist/src/execution/compact.js +120 -0
  113. package/dist/src/execution/error.d.ts +55 -0
  114. package/dist/src/execution/error.d.ts.map +1 -0
  115. package/dist/src/execution/error.js +78 -0
  116. package/dist/src/execution/index.d.ts +41 -0
  117. package/dist/src/execution/index.d.ts.map +1 -0
  118. package/dist/src/execution/index.js +230 -0
  119. package/dist/src/execution/permit2.d.ts +143 -0
  120. package/dist/src/execution/permit2.d.ts.map +1 -0
  121. package/dist/src/execution/permit2.js +285 -0
  122. package/dist/src/execution/singleChainOps.d.ts +40 -0
  123. package/dist/src/execution/singleChainOps.d.ts.map +1 -0
  124. package/dist/src/execution/singleChainOps.js +46 -0
  125. package/dist/src/execution/types.d.ts +36 -0
  126. package/dist/src/execution/types.d.ts.map +1 -0
  127. package/dist/src/execution/types.js +2 -0
  128. package/dist/src/execution/utils.d.ts +87 -0
  129. package/dist/src/execution/utils.d.ts.map +1 -0
  130. package/dist/src/execution/utils.js +783 -0
  131. package/dist/src/index.d.ts +76 -0
  132. package/dist/src/index.d.ts.map +1 -0
  133. package/dist/src/index.js +319 -0
  134. package/dist/src/modules/abi/smart-session-emissary.d.ts +696 -0
  135. package/dist/src/modules/abi/smart-session-emissary.d.ts.map +1 -0
  136. package/dist/src/modules/abi/smart-session-emissary.js +565 -0
  137. package/dist/src/modules/abi/smart-sessions.d.ts +104 -0
  138. package/dist/src/modules/abi/smart-sessions.d.ts.map +1 -0
  139. package/dist/src/modules/abi/smart-sessions.js +131 -0
  140. package/dist/src/modules/chain-abstraction.d.ts +5 -0
  141. package/dist/src/modules/chain-abstraction.d.ts.map +1 -0
  142. package/dist/src/modules/chain-abstraction.js +7 -0
  143. package/dist/src/modules/common.d.ts +30 -0
  144. package/dist/src/modules/common.d.ts.map +1 -0
  145. package/dist/src/modules/common.js +42 -0
  146. package/dist/src/modules/index.d.ts +11 -0
  147. package/dist/src/modules/index.d.ts.map +1 -0
  148. package/dist/src/modules/index.js +97 -0
  149. package/dist/src/modules/index.test.d.ts +2 -0
  150. package/dist/src/modules/index.test.d.ts.map +1 -0
  151. package/dist/src/modules/index.test.js +81 -0
  152. package/dist/src/modules/legacy.d.ts +10 -0
  153. package/dist/src/modules/legacy.d.ts.map +1 -0
  154. package/dist/src/modules/legacy.js +65 -0
  155. package/dist/src/modules/read.d.ts +9 -0
  156. package/dist/src/modules/read.d.ts.map +1 -0
  157. package/dist/src/modules/read.js +125 -0
  158. package/dist/src/modules/validators/core.d.ts +31 -0
  159. package/dist/src/modules/validators/core.d.ts.map +1 -0
  160. package/dist/src/modules/validators/core.js +284 -0
  161. package/dist/src/modules/validators/core.test.d.ts +2 -0
  162. package/dist/src/modules/validators/core.test.d.ts.map +1 -0
  163. package/dist/src/modules/validators/core.test.js +101 -0
  164. package/dist/src/modules/validators/index.d.ts +4 -0
  165. package/dist/src/modules/validators/index.d.ts.map +1 -0
  166. package/dist/src/modules/validators/index.js +10 -0
  167. package/dist/src/modules/validators/smart-sessions.d.ts +185 -0
  168. package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -0
  169. package/dist/src/modules/validators/smart-sessions.js +624 -0
  170. package/dist/src/orchestrator/client.d.ts +22 -0
  171. package/dist/src/orchestrator/client.d.ts.map +1 -0
  172. package/dist/src/orchestrator/client.js +360 -0
  173. package/dist/src/orchestrator/consts.d.ts +5 -0
  174. package/dist/src/orchestrator/consts.d.ts.map +1 -0
  175. package/dist/src/orchestrator/consts.js +9 -0
  176. package/dist/src/orchestrator/error.d.ts +242 -0
  177. package/dist/src/orchestrator/error.d.ts.map +1 -0
  178. package/dist/src/orchestrator/error.js +283 -0
  179. package/dist/src/orchestrator/index.d.ts +10 -0
  180. package/dist/src/orchestrator/index.d.ts.map +1 -0
  181. package/dist/src/orchestrator/index.js +58 -0
  182. package/dist/src/orchestrator/registry.d.ts +22 -0
  183. package/dist/src/orchestrator/registry.d.ts.map +1 -0
  184. package/dist/src/orchestrator/registry.js +116 -0
  185. package/dist/src/orchestrator/registry.test.d.ts +2 -0
  186. package/dist/src/orchestrator/registry.test.d.ts.map +1 -0
  187. package/dist/src/orchestrator/registry.test.js +154 -0
  188. package/dist/src/orchestrator/types.d.ts +322 -0
  189. package/dist/src/orchestrator/types.d.ts.map +1 -0
  190. package/dist/src/orchestrator/types.js +31 -0
  191. package/dist/src/orchestrator/utils.d.ts +3 -0
  192. package/dist/src/orchestrator/utils.d.ts.map +1 -0
  193. package/dist/src/orchestrator/utils.js +24 -0
  194. package/dist/src/types.d.ts +296 -0
  195. package/dist/src/types.d.ts.map +1 -0
  196. package/dist/src/types.js +2 -0
  197. package/dist/src/utils/index.d.ts +26 -0
  198. package/dist/src/utils/index.d.ts.map +1 -0
  199. package/dist/src/utils/index.js +63 -0
  200. package/dist/test/consts.d.ts +10 -0
  201. package/dist/test/consts.d.ts.map +1 -0
  202. package/dist/test/consts.js +22 -0
  203. package/dist/test/utils/utils.d.ts +5 -0
  204. package/dist/test/utils/utils.d.ts.map +1 -0
  205. package/dist/test/utils/utils.js +20 -0
  206. package/package.json +161 -0
@@ -0,0 +1,624 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ 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_SESSION_EMISSARY_ADDRESS_DEV = exports.SMART_SESSION_EMISSARY_ADDRESS = void 0;
7
+ exports.packSignature = packSignature;
8
+ exports.getSessionData = getSessionData;
9
+ exports.getEnableSessionCall = getEnableSessionCall;
10
+ exports.getPermissionId = getPermissionId;
11
+ exports.getSmartSessionValidator = getSmartSessionValidator;
12
+ exports.getSessionDetails = getSessionDetails;
13
+ exports.isSessionEnabled = isSessionEnabled;
14
+ exports.signEnableSession = signEnableSession;
15
+ const solady_1 = require("solady");
16
+ const viem_1 = require("viem");
17
+ const chains_1 = require("viem/chains");
18
+ const utils_1 = require("../../accounts/utils");
19
+ const compact_1 = require("../../execution/compact");
20
+ const utils_2 = require("../../execution/utils");
21
+ const smart_session_emissary_1 = __importDefault(require("../abi/smart-session-emissary"));
22
+ const common_1 = require("../common");
23
+ const core_1 = require("./core");
24
+ Object.defineProperty(exports, "SMART_SESSION_EMISSARY_ADDRESS", { enumerable: true, get: function () { return core_1.SMART_SESSION_EMISSARY_ADDRESS; } });
25
+ Object.defineProperty(exports, "SMART_SESSION_EMISSARY_ADDRESS_DEV", { enumerable: true, get: function () { return core_1.SMART_SESSION_EMISSARY_ADDRESS_DEV; } });
26
+ const types = {
27
+ PolicyData: [
28
+ { name: 'policy', type: 'address' },
29
+ { name: 'initData', type: 'bytes' },
30
+ ],
31
+ ActionData: [
32
+ { name: 'actionTargetSelector', type: 'bytes4' },
33
+ { name: 'actionTarget', type: 'address' },
34
+ { name: 'actionPolicies', type: 'PolicyData[]' },
35
+ ],
36
+ ERC7739Context: [
37
+ { name: 'appDomainSeparator', type: 'bytes32' },
38
+ { name: 'contentName', type: 'string[]' },
39
+ ],
40
+ ERC7739Data: [
41
+ { name: 'allowedERC7739Content', type: 'ERC7739Context[]' },
42
+ { name: 'erc1271Policies', type: 'PolicyData[]' },
43
+ ],
44
+ LockTagData: [
45
+ { name: 'lockTag', type: 'bytes12' },
46
+ { name: 'claimPolicies', type: 'PolicyData[]' },
47
+ ],
48
+ SignedPermissions: [
49
+ { name: 'actions', type: 'ActionData[]' },
50
+ { name: 'erc7739Policies', type: 'ERC7739Data' },
51
+ { name: 'lockTagPolicies', type: 'LockTagData' },
52
+ { name: 'permitGenericPolicy', type: 'bool' },
53
+ ],
54
+ SignedSession: [
55
+ { name: 'account', type: 'address' },
56
+ { name: 'expires', type: 'uint256' },
57
+ { name: 'nonce', type: 'uint256' },
58
+ { name: 'permissions', type: 'SignedPermissions' },
59
+ { name: 'salt', type: 'bytes32' },
60
+ { name: 'sessionValidator', type: 'address' },
61
+ { name: 'sessionValidatorInitData', type: 'bytes' },
62
+ { name: 'smartSessionEmissary', type: 'address' },
63
+ ],
64
+ ChainSession: [
65
+ { name: 'chainId', type: 'uint64' },
66
+ { name: 'session', type: 'SignedSession' },
67
+ ],
68
+ MultiChainSession: [{ name: 'sessionsAndChainIds', type: 'ChainSession[]' }],
69
+ };
70
+ const SMART_SESSION_MODE_USE = '0x00';
71
+ const SMART_SESSION_MODE_ENABLE = '0x01';
72
+ const SMART_SESSIONS_FALLBACK_TARGET_FLAG = '0x0000000000000000000000000000000000000001';
73
+ exports.SMART_SESSIONS_FALLBACK_TARGET_FLAG = SMART_SESSIONS_FALLBACK_TARGET_FLAG;
74
+ const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG = '0x00000001';
75
+ exports.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG = SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG;
76
+ const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION = '0x00000002';
77
+ exports.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION = SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION;
78
+ const SPENDING_LIMITS_POLICY_ADDRESS = '0x00000088d48cf102a8cdb0137a9b173f957c6343';
79
+ const TIME_FRAME_POLICY_ADDRESS = '0x8177451511de0577b911c254e9551d981c26dc72';
80
+ const SUDO_POLICY_ADDRESS = '0x0000003111cd8e92337c100f22b7a9dbf8dee301';
81
+ const UNIVERSAL_ACTION_POLICY_ADDRESS = '0x0000006dda6c463511c4e9b05cfc34c1247fcf1f';
82
+ const USAGE_LIMIT_POLICY_ADDRESS = '0x1f34ef8311345a3a4a4566af321b313052f51493';
83
+ const VALUE_LIMIT_POLICY_ADDRESS = '0x730da93267e7e513e932301b47f2ac7d062abc83';
84
+ const ACTION_CONDITION_EQUAL = 0;
85
+ const ACTION_CONDITION_GREATER_THAN = 1;
86
+ const ACTION_CONDITION_LESS_THAN = 2;
87
+ const ACTION_CONDITION_GREATER_THAN_OR_EQUAL = 3;
88
+ const ACTION_CONDITION_LESS_THAN_OR_EQUAL = 4;
89
+ const ACTION_CONDITION_NOT_EQUAL = 5;
90
+ const ACTION_CONDITION_IN_RANGE = 6;
91
+ function packSignature(signers, validatorSignature) {
92
+ const session = signers.session;
93
+ const permissionId = getPermissionId(session);
94
+ if (signers.verifyExecutions) {
95
+ const smartSessionMode = signers.enableData
96
+ ? SMART_SESSION_MODE_ENABLE
97
+ : SMART_SESSION_MODE_USE;
98
+ const sessionData = getSessionData(signers.session);
99
+ const packedSignature = signers.enableData
100
+ ? solady_1.LibZip.flzCompress((0, viem_1.encodeAbiParameters)([
101
+ {
102
+ type: 'tuple',
103
+ name: 'enableData',
104
+ components: [
105
+ { type: 'bytes', name: 'allocatorSig' },
106
+ { type: 'bytes', name: 'userSig' },
107
+ { type: 'uint256', name: 'expires' },
108
+ {
109
+ type: 'tuple',
110
+ name: 'enableSession',
111
+ components: [
112
+ {
113
+ type: 'uint8',
114
+ name: 'chainDigestIndex',
115
+ },
116
+ {
117
+ type: 'tuple[]',
118
+ name: 'hashesAndChainIds',
119
+ components: [
120
+ { type: 'uint64', name: 'chainId' },
121
+ { type: 'bytes32', name: 'sessionDigest' },
122
+ ],
123
+ },
124
+ {
125
+ type: 'tuple',
126
+ name: 'session',
127
+ components: [
128
+ { type: 'address', name: 'sessionValidator' },
129
+ { type: 'bytes', name: 'sessionValidatorInitData' },
130
+ { type: 'bytes32', name: 'salt' },
131
+ {
132
+ type: 'tuple[]',
133
+ name: 'actions',
134
+ components: [
135
+ { type: 'bytes4', name: 'actionTargetSelector' },
136
+ { type: 'address', name: 'actionTarget' },
137
+ {
138
+ type: 'tuple[]',
139
+ name: 'actionPolicies',
140
+ components: [
141
+ { type: 'address', name: 'policy' },
142
+ { type: 'bytes', name: 'initData' },
143
+ ],
144
+ },
145
+ ],
146
+ },
147
+ {
148
+ type: 'tuple[]',
149
+ name: 'claimPolicies',
150
+ components: [
151
+ { type: 'address', name: 'policy' },
152
+ { type: 'bytes', name: 'initData' },
153
+ ],
154
+ },
155
+ {
156
+ type: 'tuple',
157
+ name: 'erc7739Policies',
158
+ components: [
159
+ {
160
+ type: 'tuple[]',
161
+ name: 'allowedERC7739Content',
162
+ components: [
163
+ {
164
+ type: 'bytes32',
165
+ name: 'appDomainSeparator',
166
+ },
167
+ { type: 'string[]', name: 'contentNames' },
168
+ ],
169
+ },
170
+ {
171
+ type: 'tuple[]',
172
+ name: 'erc1271Policies',
173
+ components: [
174
+ { type: 'address', name: 'policy' },
175
+ { type: 'bytes', name: 'initData' },
176
+ ],
177
+ },
178
+ ],
179
+ },
180
+ ],
181
+ },
182
+ ],
183
+ },
184
+ ],
185
+ },
186
+ {
187
+ type: 'tuple',
188
+ name: 'config',
189
+ components: [
190
+ { type: 'uint8', name: 'scope' },
191
+ { type: 'uint8', name: 'resetPeriod' },
192
+ { type: 'address', name: 'allocator' },
193
+ { type: 'bytes32', name: 'permissionId' },
194
+ ],
195
+ },
196
+ { type: 'bytes' },
197
+ ], [
198
+ {
199
+ allocatorSig: viem_1.zeroHash,
200
+ userSig: signers.enableData.userSignature,
201
+ expires: viem_1.maxUint256,
202
+ enableSession: {
203
+ chainDigestIndex: signers.enableData.sessionToEnableIndex,
204
+ hashesAndChainIds: signers.enableData.hashesAndChainIds,
205
+ session: sessionData,
206
+ },
207
+ },
208
+ {
209
+ scope: compact_1.SCOPE_MULTICHAIN,
210
+ resetPeriod: compact_1.RESET_PERIOD_ONE_WEEK,
211
+ allocator: viem_1.zeroAddress,
212
+ permissionId: getPermissionId(signers.session),
213
+ },
214
+ validatorSignature,
215
+ ]))
216
+ : validatorSignature;
217
+ return signers.enableData
218
+ ? (0, viem_1.encodePacked)(['bytes1', 'bytes'], [smartSessionMode, packedSignature])
219
+ : (0, viem_1.encodePacked)(['bytes1', 'bytes32', 'bytes'], [smartSessionMode, permissionId, packedSignature]);
220
+ }
221
+ else {
222
+ const SIGNATURE_IS_VALID_SIG_1271 = '0x00';
223
+ const policyDataOffset = BigInt(64 + (0, viem_1.size)(validatorSignature));
224
+ const mode = SIGNATURE_IS_VALID_SIG_1271;
225
+ const policySpecificData = '0x';
226
+ const signature = (0, viem_1.encodePacked)(['bytes1', 'bytes32', 'uint256', 'bytes', 'bytes'], [
227
+ mode,
228
+ permissionId,
229
+ policyDataOffset,
230
+ validatorSignature,
231
+ policySpecificData,
232
+ ]);
233
+ return signature;
234
+ }
235
+ }
236
+ async function getSessionDetails(account, sessions, useDevContracts) {
237
+ const lockTag = '0x000000000000000000000000';
238
+ const sessionNonces = await Promise.all(sessions.map((session) => getSessionNonce(account, session, lockTag, useDevContracts)));
239
+ const sessionDatas = sessions.map((session) => getSessionData(session));
240
+ const signedSessions = sessionDatas.map((session, index) => getSignedSession(account, lockTag, session, sessionNonces[index], useDevContracts));
241
+ const chains = sessions.map((session) => session.chain);
242
+ const hashesAndChainIds = signedSessions.map((session, index) => ({
243
+ chainId: BigInt(chains[index].id),
244
+ sessionDigest: (0, viem_1.hashStruct)({
245
+ types,
246
+ primaryType: 'SignedSession',
247
+ data: session,
248
+ }),
249
+ }));
250
+ const data = {
251
+ domain: {
252
+ name: 'SmartSessionEmissary',
253
+ version: '1',
254
+ },
255
+ types: types,
256
+ primaryType: 'MultiChainSession',
257
+ message: {
258
+ sessionsAndChainIds: signedSessions.map((session, index) => ({
259
+ chainId: BigInt(chains[index].id),
260
+ session,
261
+ })),
262
+ },
263
+ };
264
+ return {
265
+ nonces: sessionNonces,
266
+ hashesAndChainIds,
267
+ data,
268
+ };
269
+ }
270
+ async function isSessionEnabled(account, provider, session, useDevContracts) {
271
+ const publicClient = (0, viem_1.createPublicClient)({
272
+ chain: session.chain,
273
+ transport: (0, utils_1.createTransport)(session.chain, provider),
274
+ });
275
+ const isEnabled = await publicClient.readContract({
276
+ address: getSmartSessionEmissaryAddress(useDevContracts),
277
+ abi: [
278
+ {
279
+ type: 'function',
280
+ name: 'isPermissionEnabled',
281
+ inputs: [
282
+ { name: 'account', type: 'address' },
283
+ { name: 'permissionId', type: 'bytes32' },
284
+ ],
285
+ outputs: [{ name: 'isEnabled', type: 'bool' }],
286
+ stateMutability: 'view',
287
+ },
288
+ ],
289
+ functionName: 'isPermissionEnabled',
290
+ args: [account, getPermissionId(session)],
291
+ });
292
+ return isEnabled;
293
+ }
294
+ async function signEnableSession(config, details) {
295
+ return (0, utils_2.signTypedData)(config, details.data, chains_1.mainnet, undefined, {
296
+ skipErc6492: true,
297
+ });
298
+ }
299
+ async function getSessionNonce(account, session, lockTag, useDevContracts) {
300
+ const publicClient = (0, viem_1.createPublicClient)({
301
+ chain: session.chain,
302
+ transport: (0, viem_1.http)(),
303
+ });
304
+ const nonce = await publicClient.readContract({
305
+ address: getSmartSessionEmissaryAddress(useDevContracts),
306
+ abi: [
307
+ {
308
+ type: 'function',
309
+ name: 'getNonce',
310
+ inputs: [
311
+ { name: 'sponsor', type: 'address', internalType: 'address' },
312
+ { name: 'lockTag', type: 'bytes12', internalType: 'bytes12' },
313
+ ],
314
+ outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],
315
+ stateMutability: 'view',
316
+ },
317
+ ],
318
+ functionName: 'getNonce',
319
+ args: [account, lockTag],
320
+ });
321
+ return nonce;
322
+ }
323
+ function getSignedSession(account, lockTag, session, nonce, useDevContracts) {
324
+ return {
325
+ account,
326
+ permissions: {
327
+ permitGenericPolicy: session.actions.some((action) => action.actionTarget === SMART_SESSIONS_FALLBACK_TARGET_FLAG &&
328
+ action.actionTargetSelector ===
329
+ SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG),
330
+ lockTagPolicies: {
331
+ lockTag,
332
+ claimPolicies: session.claimPolicies,
333
+ },
334
+ erc7739Policies: {
335
+ allowedERC7739Content: session.erc7739Policies.allowedERC7739Content.map((content) => ({
336
+ contentName: content.contentNames,
337
+ appDomainSeparator: content.appDomainSeparator,
338
+ })),
339
+ erc1271Policies: session.erc7739Policies.erc1271Policies,
340
+ },
341
+ actions: session.actions,
342
+ },
343
+ sessionValidator: session.sessionValidator,
344
+ sessionValidatorInitData: session.sessionValidatorInitData,
345
+ salt: session.salt,
346
+ smartSessionEmissary: getSmartSessionEmissaryAddress(useDevContracts),
347
+ expires: viem_1.maxUint256,
348
+ nonce,
349
+ };
350
+ }
351
+ async function getEnableSessionCall(account, session, enableSessionSignature, hashesAndChainIds, sessionToEnableIndex, useDevContracts) {
352
+ const sessionData = getSessionData(session);
353
+ const permissionId = getPermissionId(session);
354
+ return {
355
+ to: getSmartSessionEmissaryAddress(useDevContracts),
356
+ data: (0, viem_1.encodeFunctionData)({
357
+ abi: smart_session_emissary_1.default,
358
+ functionName: 'setConfig',
359
+ args: [
360
+ account,
361
+ {
362
+ scope: compact_1.SCOPE_MULTICHAIN,
363
+ resetPeriod: compact_1.RESET_PERIOD_ONE_WEEK,
364
+ allocator: viem_1.zeroAddress,
365
+ permissionId,
366
+ },
367
+ {
368
+ allocatorSig: viem_1.zeroHash,
369
+ userSig: enableSessionSignature,
370
+ expires: viem_1.maxUint256,
371
+ session: {
372
+ chainDigestIndex: sessionToEnableIndex,
373
+ hashesAndChainIds,
374
+ sessionToEnable: sessionData,
375
+ },
376
+ },
377
+ ],
378
+ }),
379
+ };
380
+ }
381
+ function getSessionData(session) {
382
+ const validator = (0, core_1.getValidator)(session.owners);
383
+ const allowedContent = [
384
+ {
385
+ contentNames: [''],
386
+ appDomainSeparator: viem_1.zeroHash,
387
+ },
388
+ ];
389
+ const erc7739Data = {
390
+ allowedERC7739Content: allowedContent,
391
+ erc1271Policies: [
392
+ {
393
+ policy: SUDO_POLICY_ADDRESS,
394
+ initData: '0x',
395
+ },
396
+ ],
397
+ };
398
+ const sudoAction = {
399
+ actionTargetSelector: SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG,
400
+ actionTarget: SMART_SESSIONS_FALLBACK_TARGET_FLAG,
401
+ actionPolicies: [
402
+ {
403
+ policy: SUDO_POLICY_ADDRESS,
404
+ initData: '0x',
405
+ },
406
+ ],
407
+ };
408
+ const actions = session.actions
409
+ ? session.actions.map((action) => ({
410
+ actionTargetSelector: action.selector ?? SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG,
411
+ actionTarget: action.target ?? SMART_SESSIONS_FALLBACK_TARGET_FLAG,
412
+ actionPolicies: action.policies?.map((policy) => getPolicyData(policy)) ?? [
413
+ {
414
+ policy: SUDO_POLICY_ADDRESS,
415
+ initData: '0x',
416
+ },
417
+ ],
418
+ }))
419
+ : [sudoAction];
420
+ return {
421
+ sessionValidator: validator.address,
422
+ salt: viem_1.zeroHash,
423
+ sessionValidatorInitData: validator.initData,
424
+ erc7739Policies: erc7739Data,
425
+ actions,
426
+ claimPolicies: [],
427
+ };
428
+ }
429
+ function getPermissionId(session) {
430
+ const sessionData = getSessionData(session);
431
+ return (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([
432
+ {
433
+ type: 'address',
434
+ name: 'sessionValidator',
435
+ },
436
+ {
437
+ type: 'bytes',
438
+ name: 'sessionValidatorInitData',
439
+ },
440
+ {
441
+ type: 'bytes32',
442
+ name: 'salt',
443
+ },
444
+ ], [
445
+ sessionData.sessionValidator,
446
+ sessionData.sessionValidatorInitData,
447
+ sessionData.salt,
448
+ ]));
449
+ }
450
+ function getPolicyData(policy) {
451
+ switch (policy.type) {
452
+ case 'sudo':
453
+ return {
454
+ policy: SUDO_POLICY_ADDRESS,
455
+ initData: '0x',
456
+ };
457
+ case 'universal-action': {
458
+ function getCondition(condition) {
459
+ switch (condition) {
460
+ case 'equal':
461
+ return ACTION_CONDITION_EQUAL;
462
+ case 'greaterThan':
463
+ return ACTION_CONDITION_GREATER_THAN;
464
+ case 'lessThan':
465
+ return ACTION_CONDITION_LESS_THAN;
466
+ case 'greaterThanOrEqual':
467
+ return ACTION_CONDITION_GREATER_THAN_OR_EQUAL;
468
+ case 'lessThanOrEqual':
469
+ return ACTION_CONDITION_LESS_THAN_OR_EQUAL;
470
+ case 'notEqual':
471
+ return ACTION_CONDITION_NOT_EQUAL;
472
+ case 'inRange':
473
+ return ACTION_CONDITION_IN_RANGE;
474
+ }
475
+ }
476
+ const MAX_RULES = 16;
477
+ const rules = createFixedArray(MAX_RULES, () => ({
478
+ condition: ACTION_CONDITION_EQUAL,
479
+ offset: 0n,
480
+ isLimited: false,
481
+ ref: viem_1.zeroHash,
482
+ usage: { limit: 0n, used: 0n },
483
+ }));
484
+ for (let i = 0; i < policy.rules.length; i++) {
485
+ const rule = policy.rules[i];
486
+ const ref = (0, viem_1.isHex)(rule.referenceValue)
487
+ ? (0, viem_1.padHex)(rule.referenceValue)
488
+ : (0, viem_1.toHex)(rule.referenceValue, { size: 32 });
489
+ rules[i] = {
490
+ condition: getCondition(rule.condition),
491
+ offset: rule.calldataOffset,
492
+ isLimited: rule.usageLimit !== undefined,
493
+ ref,
494
+ usage: {
495
+ limit: rule.usageLimit ? rule.usageLimit : 0n,
496
+ used: 0n,
497
+ },
498
+ };
499
+ }
500
+ return {
501
+ policy: UNIVERSAL_ACTION_POLICY_ADDRESS,
502
+ initData: (0, viem_1.encodeAbiParameters)([
503
+ {
504
+ components: [
505
+ {
506
+ name: 'valueLimitPerUse',
507
+ type: 'uint256',
508
+ },
509
+ {
510
+ components: [
511
+ {
512
+ name: 'length',
513
+ type: 'uint256',
514
+ },
515
+ {
516
+ components: [
517
+ {
518
+ name: 'condition',
519
+ type: 'uint8',
520
+ },
521
+ {
522
+ name: 'offset',
523
+ type: 'uint64',
524
+ },
525
+ {
526
+ name: 'isLimited',
527
+ type: 'bool',
528
+ },
529
+ {
530
+ name: 'ref',
531
+ type: 'bytes32',
532
+ },
533
+ {
534
+ components: [
535
+ {
536
+ name: 'limit',
537
+ type: 'uint256',
538
+ },
539
+ {
540
+ name: 'used',
541
+ type: 'uint256',
542
+ },
543
+ ],
544
+ name: 'usage',
545
+ type: 'tuple',
546
+ },
547
+ ],
548
+ name: 'rules',
549
+ type: 'tuple[16]',
550
+ },
551
+ ],
552
+ name: 'paramRules',
553
+ type: 'tuple',
554
+ },
555
+ ],
556
+ name: 'ActionConfig',
557
+ type: 'tuple',
558
+ },
559
+ ], [
560
+ {
561
+ valueLimitPerUse: policy.valueLimitPerUse ?? 0n,
562
+ paramRules: {
563
+ length: BigInt(policy.rules.length),
564
+ rules: rules,
565
+ },
566
+ },
567
+ ]),
568
+ };
569
+ }
570
+ case 'spending-limits': {
571
+ const tokens = policy.limits.map(({ token }) => token);
572
+ const limits = policy.limits.map(({ amount }) => amount);
573
+ return {
574
+ policy: SPENDING_LIMITS_POLICY_ADDRESS,
575
+ initData: (0, viem_1.encodeAbiParameters)([{ type: 'address[]' }, { type: 'uint256[]' }], [tokens, limits]),
576
+ };
577
+ }
578
+ case 'time-frame': {
579
+ return {
580
+ policy: TIME_FRAME_POLICY_ADDRESS,
581
+ initData: (0, viem_1.encodePacked)(['uint48', 'uint48'], [
582
+ Math.floor(policy.validUntil / 1000),
583
+ Math.floor(policy.validAfter / 1000),
584
+ ]),
585
+ };
586
+ }
587
+ case 'usage-limit': {
588
+ return {
589
+ policy: USAGE_LIMIT_POLICY_ADDRESS,
590
+ initData: (0, viem_1.encodePacked)(['uint128'], [policy.limit]),
591
+ };
592
+ }
593
+ case 'value-limit': {
594
+ return {
595
+ policy: VALUE_LIMIT_POLICY_ADDRESS,
596
+ initData: (0, viem_1.encodeAbiParameters)([{ type: 'uint256' }], [policy.limit]),
597
+ };
598
+ }
599
+ }
600
+ }
601
+ function getSmartSessionValidator(config) {
602
+ if (!config.experimental_sessions) {
603
+ return null;
604
+ }
605
+ const { enabled, module } = config.experimental_sessions;
606
+ if (!enabled) {
607
+ return null;
608
+ }
609
+ return {
610
+ address: module ?? getSmartSessionEmissaryAddress(config.useDevContracts),
611
+ initData: '0x',
612
+ deInitData: '0x',
613
+ additionalContext: '0x',
614
+ type: common_1.MODULE_TYPE_ID_VALIDATOR,
615
+ };
616
+ }
617
+ function getSmartSessionEmissaryAddress(useDevContracts) {
618
+ return useDevContracts === true
619
+ ? core_1.SMART_SESSION_EMISSARY_ADDRESS_DEV
620
+ : core_1.SMART_SESSION_EMISSARY_ADDRESS;
621
+ }
622
+ function createFixedArray(length, getValue) {
623
+ return Array.from({ length }, (_, i) => getValue(i));
624
+ }
@@ -0,0 +1,22 @@
1
+ import type { Address } from 'viem';
2
+ import type { IntentInput, IntentOpStatus, IntentResult, IntentRoute, Portfolio, SignedIntentOp, SplitIntentsInput, SplitIntentsResult } from './types';
3
+ export declare class Orchestrator {
4
+ private serverUrl;
5
+ private apiKey?;
6
+ constructor(serverUrl: string, apiKey?: string);
7
+ getPortfolio(userAddress: Address, filter?: {
8
+ chainIds?: number[];
9
+ tokens?: {
10
+ [chainId: number]: Address[];
11
+ };
12
+ }): Promise<Portfolio>;
13
+ getIntentRoute(input: IntentInput): Promise<IntentRoute>;
14
+ splitIntents(input: SplitIntentsInput): Promise<SplitIntentsResult>;
15
+ submitIntent(signedIntentOpUnformatted: SignedIntentOp, dryRun: boolean): Promise<IntentResult>;
16
+ getIntentOpStatus(intentId: bigint): Promise<IntentOpStatus>;
17
+ private getHeaders;
18
+ private fetch;
19
+ private parseError;
20
+ private parseErrorMessage;
21
+ }
22
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../orchestrator/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AA0BnC,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,YAAY,EACZ,WAAW,EACX,SAAS,EAET,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,SAAS,CAAA;AAchB,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,MAAM,CAAC,CAAQ;gBAEX,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAKxC,YAAY,CAChB,WAAW,EAAE,OAAO,EACpB,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,MAAM,CAAC,EAAE;YACP,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAAA;SAC7B,CAAA;KACF,GACA,OAAO,CAAC,SAAS,CAAC;IA+Cf,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAQxD,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwDnE,YAAY,CAChB,yBAAyB,EAAE,cAAc,EACzC,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,YAAY,CAAC;IAgBlB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IASlE,OAAO,CAAC,UAAU;YAUJ,KAAK;IA4BnB,OAAO,CAAC,UAAU;IA6GlB,OAAO,CAAC,iBAAiB;CAmG1B"}