@charterlabs/rhinestone-sdk 0.3.8 → 0.4.1

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 (144) hide show
  1. package/README.md +89 -1
  2. package/dist/src/accounts/index.d.ts +6 -3
  3. package/dist/src/accounts/index.d.ts.map +1 -1
  4. package/dist/src/accounts/index.js +8 -2
  5. package/dist/src/accounts/json-rpc/providers.d.ts.map +1 -1
  6. package/dist/src/accounts/json-rpc/providers.js +3 -3
  7. package/dist/src/accounts/safe.d.ts.map +1 -1
  8. package/dist/src/accounts/safe.js +4 -1
  9. package/dist/src/accounts/signing/common.d.ts +10 -5
  10. package/dist/src/accounts/signing/common.d.ts.map +1 -1
  11. package/dist/src/accounts/signing/message.d.ts +3 -1
  12. package/dist/src/accounts/signing/message.d.ts.map +1 -1
  13. package/dist/src/accounts/startale.d.ts +3 -2
  14. package/dist/src/accounts/startale.d.ts.map +1 -1
  15. package/dist/src/accounts/startale.js +108 -19
  16. package/dist/src/accounts/utils.d.ts +1 -1
  17. package/dist/src/accounts/utils.d.ts.map +1 -1
  18. package/dist/src/auth/provider.d.ts +7 -0
  19. package/dist/src/auth/provider.d.ts.map +1 -0
  20. package/dist/src/auth/provider.js +41 -0
  21. package/dist/src/errors/index.d.ts +2 -2
  22. package/dist/src/errors/index.d.ts.map +1 -1
  23. package/dist/src/errors/index.js +2 -1
  24. package/dist/src/execution/error.d.ts +9 -1
  25. package/dist/src/execution/error.d.ts.map +1 -1
  26. package/dist/src/execution/error.js +12 -1
  27. package/dist/src/execution/index.d.ts +6 -4
  28. package/dist/src/execution/index.d.ts.map +1 -1
  29. package/dist/src/execution/index.js +18 -15
  30. package/dist/src/execution/utils.d.ts +31 -7
  31. package/dist/src/execution/utils.d.ts.map +1 -1
  32. package/dist/src/execution/utils.js +317 -46
  33. package/dist/src/index.d.ts +5 -5
  34. package/dist/src/index.d.ts.map +1 -1
  35. package/dist/src/index.js +13 -11
  36. package/dist/src/jwt-server/digest.d.ts +11 -0
  37. package/dist/src/jwt-server/digest.d.ts.map +1 -0
  38. package/dist/src/jwt-server/digest.js +22 -0
  39. package/dist/src/jwt-server/express.d.ts +16 -0
  40. package/dist/src/jwt-server/express.d.ts.map +1 -0
  41. package/dist/src/jwt-server/express.js +24 -0
  42. package/dist/src/jwt-server/handlers.d.ts +10 -0
  43. package/dist/src/jwt-server/handlers.d.ts.map +1 -0
  44. package/dist/src/jwt-server/handlers.js +41 -0
  45. package/dist/src/jwt-server/index.d.ts +8 -0
  46. package/dist/src/jwt-server/index.d.ts.map +1 -0
  47. package/dist/src/jwt-server/index.js +18 -0
  48. package/dist/src/jwt-server/jcs.d.ts +12 -0
  49. package/dist/src/jwt-server/jcs.d.ts.map +1 -0
  50. package/dist/src/jwt-server/jcs.js +60 -0
  51. package/dist/src/jwt-server/signer.d.ts +18 -0
  52. package/dist/src/jwt-server/signer.d.ts.map +1 -0
  53. package/dist/src/jwt-server/signer.js +71 -0
  54. package/dist/src/jwt-server/sponsorship.d.ts +19 -0
  55. package/dist/src/jwt-server/sponsorship.d.ts.map +1 -0
  56. package/dist/src/jwt-server/sponsorship.js +56 -0
  57. package/dist/src/jwt-server/web.d.ts +4 -0
  58. package/dist/src/jwt-server/web.d.ts.map +1 -0
  59. package/dist/src/jwt-server/web.js +27 -0
  60. package/dist/src/modules/validators/index.d.ts +2 -2
  61. package/dist/src/modules/validators/index.d.ts.map +1 -1
  62. package/dist/src/modules/validators/index.js +6 -1
  63. package/dist/src/modules/validators/policies/claim/permit2.d.ts +55 -0
  64. package/dist/src/modules/validators/policies/claim/permit2.d.ts.map +1 -0
  65. package/dist/src/modules/validators/policies/claim/permit2.js +239 -0
  66. package/dist/src/modules/validators/policies/claim/types.d.ts +12 -0
  67. package/dist/src/modules/validators/policies/claim/types.d.ts.map +1 -0
  68. package/dist/src/modules/validators/policies/claim/types.js +18 -0
  69. package/dist/src/modules/validators/smart-sessions.d.ts +30 -6
  70. package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
  71. package/dist/src/modules/validators/smart-sessions.js +135 -12
  72. package/dist/src/orchestrator/client.d.ts +9 -4
  73. package/dist/src/orchestrator/client.d.ts.map +1 -1
  74. package/dist/src/orchestrator/client.js +29 -17
  75. package/dist/src/orchestrator/consts.d.ts +3 -2
  76. package/dist/src/orchestrator/consts.d.ts.map +1 -1
  77. package/dist/src/orchestrator/consts.js +4 -2
  78. package/dist/src/orchestrator/index.d.ts +4 -3
  79. package/dist/src/orchestrator/index.d.ts.map +1 -1
  80. package/dist/src/orchestrator/index.js +2 -2
  81. package/dist/src/orchestrator/registry.d.ts +2 -1
  82. package/dist/src/orchestrator/registry.d.ts.map +1 -1
  83. package/dist/src/orchestrator/registry.js +17 -1
  84. package/dist/src/orchestrator/types.d.ts +30 -2
  85. package/dist/src/orchestrator/types.d.ts.map +1 -1
  86. package/dist/src/types.d.ts +99 -10
  87. package/dist/src/types.d.ts.map +1 -1
  88. package/dist/src/utils/index.d.ts +3 -9
  89. package/dist/src/utils/index.d.ts.map +1 -1
  90. package/package.json +18 -4
  91. package/dist/src/accounts/index.test.d.ts +0 -2
  92. package/dist/src/accounts/index.test.d.ts.map +0 -1
  93. package/dist/src/accounts/index.test.js +0 -33
  94. package/dist/src/accounts/json-rpc/index.test.d.ts +0 -2
  95. package/dist/src/accounts/json-rpc/index.test.d.ts.map +0 -1
  96. package/dist/src/accounts/json-rpc/index.test.js +0 -35
  97. package/dist/src/accounts/json-rpc/providers.test.d.ts +0 -2
  98. package/dist/src/accounts/json-rpc/providers.test.d.ts.map +0 -1
  99. package/dist/src/accounts/json-rpc/providers.test.js +0 -43
  100. package/dist/src/accounts/kernel.test.d.ts +0 -2
  101. package/dist/src/accounts/kernel.test.d.ts.map +0 -1
  102. package/dist/src/accounts/kernel.test.js +0 -132
  103. package/dist/src/accounts/nexus.test.d.ts +0 -2
  104. package/dist/src/accounts/nexus.test.d.ts.map +0 -1
  105. package/dist/src/accounts/nexus.test.js +0 -118
  106. package/dist/src/accounts/safe.test.d.ts +0 -2
  107. package/dist/src/accounts/safe.test.d.ts.map +0 -1
  108. package/dist/src/accounts/safe.test.js +0 -118
  109. package/dist/src/accounts/signing/passkeys.test.d.ts +0 -2
  110. package/dist/src/accounts/signing/passkeys.test.d.ts.map +0 -1
  111. package/dist/src/accounts/signing/passkeys.test.js +0 -88
  112. package/dist/src/accounts/startale.test.d.ts +0 -2
  113. package/dist/src/accounts/startale.test.d.ts.map +0 -1
  114. package/dist/src/accounts/startale.test.js +0 -92
  115. package/dist/src/accounts/utils.test.d.ts +0 -2
  116. package/dist/src/accounts/utils.test.d.ts.map +0 -1
  117. package/dist/src/accounts/utils.test.js +0 -49
  118. package/dist/src/actions/ecdsa.test.d.ts +0 -2
  119. package/dist/src/actions/ecdsa.test.d.ts.map +0 -1
  120. package/dist/src/actions/ecdsa.test.js +0 -99
  121. package/dist/src/actions/passkeys.test.d.ts +0 -2
  122. package/dist/src/actions/passkeys.test.d.ts.map +0 -1
  123. package/dist/src/actions/passkeys.test.js +0 -54
  124. package/dist/src/actions/recovery.test.d.ts +0 -2
  125. package/dist/src/actions/recovery.test.d.ts.map +0 -1
  126. package/dist/src/actions/recovery.test.js +0 -168
  127. package/dist/src/execution/utils.test.d.ts +0 -2
  128. package/dist/src/execution/utils.test.d.ts.map +0 -1
  129. package/dist/src/execution/utils.test.js +0 -49
  130. package/dist/src/modules/index.test.d.ts +0 -2
  131. package/dist/src/modules/index.test.d.ts.map +0 -1
  132. package/dist/src/modules/index.test.js +0 -81
  133. package/dist/src/modules/validators/core.test.d.ts +0 -2
  134. package/dist/src/modules/validators/core.test.d.ts.map +0 -1
  135. package/dist/src/modules/validators/core.test.js +0 -101
  136. package/dist/src/orchestrator/registry.test.d.ts +0 -2
  137. package/dist/src/orchestrator/registry.test.d.ts.map +0 -1
  138. package/dist/src/orchestrator/registry.test.js +0 -154
  139. package/dist/test/consts.d.ts +0 -10
  140. package/dist/test/consts.d.ts.map +0 -1
  141. package/dist/test/consts.js +0 -22
  142. package/dist/test/utils/utils.d.ts +0 -5
  143. package/dist/test/utils/utils.d.ts.map +0 -1
  144. package/dist/test/utils/utils.js +0 -20
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permit2.d.ts","sourceRoot":"","sources":["../../../../../../modules/validators/policies/claim/permit2.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAIZ,KAAK,GAAG,EAKT,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAiD3D,oFAAoF;AACpF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACxD,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE;QACP,MAAM,EAAE;YACN,SAAS,EAAE,OAAO,CAAA;YAClB,QAAQ,EAAE,SAAS;gBAAE,KAAK,EAAE,OAAO,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,EAAE,CAAA;YACvD,WAAW,EAAE,MAAM,CAAA;YACnB,UAAU,EAAE,MAAM,CAAA;SACnB,CAAA;QACD,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE;YACT,EAAE,EAAE,GAAG,CAAA;YACP,GAAG,EAAE,SAAS;gBAAE,EAAE,EAAE,OAAO,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,GAAG,CAAA;aAAE,EAAE,CAAA;SAC1D,CAAA;QACD,OAAO,EAAE;YACP,EAAE,EAAE,GAAG,CAAA;YACP,GAAG,EAAE,SAAS;gBAAE,EAAE,EAAE,OAAO,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,GAAG,CAAA;aAAE,EAAE,CAAA;SAC1D,CAAA;QACD,CAAC,EAAE,GAAG,CAAA;KACP,CAAA;CACF;AA+ED;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,mBAAmB,GAC3B,GAAG,CA2EL;AAED,eAAO,MAAM,4BAA4B,EAAE,OACG,CAAA;AAE9C,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,kBAAkB,GACzB,GAAG,CA2FL"}
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PERMIT2_CLAIM_POLICY_ADDRESS = void 0;
4
+ exports.buildPermit2ClaimPolicyCalldata = buildPermit2ClaimPolicyCalldata;
5
+ exports.encodePermit2ClaimPolicyInitData = encodePermit2ClaimPolicyInitData;
6
+ const viem_1 = require("viem");
7
+ const types_1 = require("./types");
8
+ // EIP-712 type definitions for Permit2/Mandate struct encoding.
9
+ // Note: the token-out struct is named 'Token' in the Solidity contract (matching the
10
+ // signed Permit2 message types in execution/permit2.ts).
11
+ const PERMIT2_TYPES = {
12
+ TokenPermissions: [
13
+ { name: 'token', type: 'address' },
14
+ { name: 'amount', type: 'uint256' },
15
+ ],
16
+ Token: [
17
+ { name: 'token', type: 'address' },
18
+ { name: 'amount', type: 'uint256' },
19
+ ],
20
+ Ops: [
21
+ { name: 'to', type: 'address' },
22
+ { name: 'value', type: 'uint256' },
23
+ { name: 'data', type: 'bytes' },
24
+ ],
25
+ Op: [
26
+ { name: 'vt', type: 'bytes32' },
27
+ { name: 'ops', type: 'Ops[]' },
28
+ ],
29
+ Target: [
30
+ { name: 'recipient', type: 'address' },
31
+ { name: 'tokenOut', type: 'Token[]' },
32
+ { name: 'targetChain', type: 'uint256' },
33
+ { name: 'fillExpiry', type: 'uint256' },
34
+ ],
35
+ Mandate: [
36
+ { name: 'target', type: 'Target' },
37
+ { name: 'minGas', type: 'uint128' },
38
+ { name: 'originOps', type: 'Op' },
39
+ { name: 'destOps', type: 'Op' },
40
+ { name: 'q', type: 'bytes32' },
41
+ ],
42
+ };
43
+ // --- EIP-712 hash helpers ---
44
+ function hashArray(hashes) {
45
+ return (0, viem_1.keccak256)(hashes.length > 0 ? (0, viem_1.concat)(hashes) : '0x');
46
+ }
47
+ function hashTokenPermissionsArray(permitted) {
48
+ return hashArray(permitted.map(({ token, amount }) => (0, viem_1.hashStruct)({
49
+ primaryType: 'TokenPermissions',
50
+ types: PERMIT2_TYPES,
51
+ data: { token, amount },
52
+ })));
53
+ }
54
+ function hashTokenOutArray(tokenOut) {
55
+ return hashArray(tokenOut.map(({ token, amount }) => (0, viem_1.hashStruct)({
56
+ primaryType: 'Token',
57
+ types: PERMIT2_TYPES,
58
+ data: { token, amount },
59
+ })));
60
+ }
61
+ function hashOpStruct(op) {
62
+ return (0, viem_1.hashStruct)({
63
+ primaryType: 'Op',
64
+ types: PERMIT2_TYPES,
65
+ data: { vt: op.vt, ops: Array.from(op.ops) },
66
+ });
67
+ }
68
+ function hashMandateStruct(mandate) {
69
+ return (0, viem_1.hashStruct)({
70
+ primaryType: 'Mandate',
71
+ types: PERMIT2_TYPES,
72
+ data: {
73
+ target: {
74
+ recipient: mandate.target.recipient,
75
+ tokenOut: Array.from(mandate.target.tokenOut),
76
+ targetChain: mandate.target.targetChain,
77
+ fillExpiry: mandate.target.fillExpiry,
78
+ },
79
+ minGas: mandate.minGas,
80
+ originOps: {
81
+ vt: mandate.originOps.vt,
82
+ ops: Array.from(mandate.originOps.ops),
83
+ },
84
+ destOps: { vt: mandate.destOps.vt, ops: Array.from(mandate.destOps.ops) },
85
+ q: mandate.q,
86
+ },
87
+ });
88
+ }
89
+ // --- Token array encoding helpers ---
90
+ /** Encodes a token+amount pair as [token_as_uint256:32][amount:32] (64 bytes) */
91
+ function encodeTokenEntry(token, amount) {
92
+ return (0, viem_1.encodeAbiParameters)([{ type: 'address' }, { type: 'uint256' }], [token, amount]);
93
+ }
94
+ /**
95
+ * Builds the policySpecificData calldata for a Permit2ClaimPolicy EIP-1271 check.
96
+ *
97
+ * Format (derived from Permit2ClaimPolicy.sol calldata layout):
98
+ * Header: [spender:20][nonce:32][deadline:32]
99
+ * TokenIn: expanded [count:1][token:32][amount:32]... OR pre-computed hash [32]
100
+ * Mandate: if any target check enabled — expanded target + minGas:16 + ops hashes + q
101
+ * else — pre-computed mandateHash [32]
102
+ *
103
+ */
104
+ function buildPermit2ClaimPolicyCalldata(policy, message) {
105
+ const tokenInEnabled = !!policy.tokensIn?.length;
106
+ const recipientEnabled = !!policy.recipients?.length;
107
+ const fillExpiryEnabled = !!policy.fillExpiryBounds?.length;
108
+ const tokenOutEnabled = !!policy.tokensOut?.length;
109
+ const recipientIsSponsorEnabled = !!policy.recipientIsSponsor;
110
+ // hasAnyTargetCheck mirrors the Solidity MASK_TARGET_CHECKS logic for our supported fields
111
+ const hasAnyTargetCheck = recipientEnabled ||
112
+ fillExpiryEnabled ||
113
+ tokenOutEnabled ||
114
+ recipientIsSponsorEnabled;
115
+ const parts = [];
116
+ // Header: [spender:20][nonce:32][deadline:32] (spender == arbiter in Permit2 context)
117
+ parts.push((0, viem_1.encodePacked)(['address', 'uint256', 'uint256'], [message.spender, message.nonce, message.deadline]));
118
+ // TokenIn section
119
+ if (tokenInEnabled) {
120
+ // Expanded: [count:1][token_as_uint256:32][amount:32]...
121
+ if (message.permitted.length > 255)
122
+ throw new Error('permitted array exceeds max length of 255');
123
+ parts.push((0, viem_1.toHex)(message.permitted.length, { size: 1 }));
124
+ for (const { token, amount } of message.permitted) {
125
+ parts.push(encodeTokenEntry(token, amount));
126
+ }
127
+ }
128
+ else {
129
+ parts.push(hashTokenPermissionsArray(message.permitted));
130
+ }
131
+ // Mandate section
132
+ if (!hasAnyTargetCheck) {
133
+ // No mandate-level checks enabled — provide pre-computed mandateHash
134
+ parts.push(hashMandateStruct(message.mandate));
135
+ }
136
+ else {
137
+ // Expanded mandate: target fields + minGas + ops hashes + q
138
+ const target = message.mandate.target;
139
+ // Target: [recipient:20][targetChain:32][fillExpiry:32]
140
+ parts.push((0, viem_1.encodePacked)(['address', 'uint256', 'uint256'], [target.recipient, target.targetChain, target.fillExpiry]));
141
+ // TokenOut (inside target)
142
+ if (tokenOutEnabled) {
143
+ if (target.tokenOut.length > 255)
144
+ throw new Error('tokenOut array exceeds max length of 255');
145
+ parts.push((0, viem_1.toHex)(target.tokenOut.length, { size: 1 }));
146
+ for (const { token, amount } of target.tokenOut) {
147
+ parts.push(encodeTokenEntry(token, amount));
148
+ }
149
+ }
150
+ else {
151
+ parts.push(hashTokenOutArray(target.tokenOut));
152
+ }
153
+ // minGas: uint128 = 16 bytes
154
+ parts.push((0, viem_1.toHex)(message.mandate.minGas, { size: 16 }));
155
+ // originOpsHash and destOpsHash: always 32-byte hashes (we don't support ops checks)
156
+ parts.push(hashOpStruct(message.mandate.originOps));
157
+ parts.push(hashOpStruct(message.mandate.destOps));
158
+ // qualificationHash: q is already keccak256(qualifier.encodedVal)
159
+ parts.push(message.mandate.q);
160
+ }
161
+ return (0, viem_1.concat)(parts);
162
+ }
163
+ exports.PERMIT2_CLAIM_POLICY_ADDRESS = '0x62E3588C6d861C9f986E82EC3757434EDF16ce91';
164
+ function encodePermit2ClaimPolicyInitData(policy) {
165
+ let modeConfig = 0;
166
+ const setMode = (fieldId) => {
167
+ modeConfig |= types_1.MODE_CHECK_STORAGE << (fieldId * 2);
168
+ };
169
+ if (policy.arbiters?.length)
170
+ setMode(types_1.FIELD_ARBITER);
171
+ if (policy.expiryBounds)
172
+ setMode(types_1.FIELD_EXPIRY);
173
+ if (policy.tokensIn?.length)
174
+ setMode(types_1.FIELD_TOKEN_IN);
175
+ if (policy.recipients?.length)
176
+ setMode(types_1.FIELD_RECIPIENT);
177
+ if (policy.fillExpiryBounds?.length)
178
+ setMode(types_1.FIELD_FILL_EXPIRY);
179
+ if (policy.tokensOut?.length)
180
+ setMode(types_1.FIELD_TOKEN_OUT);
181
+ if (policy.recipientIsSponsor)
182
+ setMode(types_1.FIELD_RECIPIENT_IS_SPONSOR);
183
+ const parts = [(0, viem_1.toHex)(modeConfig, { size: 4 })];
184
+ // Arbiter: [count: 1][address: 20] each
185
+ if (policy.arbiters?.length) {
186
+ if (policy.arbiters.length > 255)
187
+ throw new Error('arbiters array exceeds max length of 255');
188
+ parts.push((0, viem_1.encodePacked)(['uint8', ...policy.arbiters.map(() => 'address')], [policy.arbiters.length, ...policy.arbiters]));
189
+ }
190
+ // Expiry: [maxExpiry: 16][minExpiry: 16] packed into uint256
191
+ if (policy.expiryBounds) {
192
+ const mask128 = (1n << 128n) - 1n;
193
+ const min = (policy.expiryBounds.min ?? 0n) & mask128;
194
+ const max = (policy.expiryBounds.max ?? viem_1.maxUint256) & mask128;
195
+ parts.push((0, viem_1.toHex)((min & mask128) | (max << 128n), { size: 32 }));
196
+ }
197
+ // TokenIn: [count: 1][chainId: 32][token: 20] each
198
+ if (policy.tokensIn?.length) {
199
+ if (policy.tokensIn.length > 255)
200
+ throw new Error('tokensIn array exceeds max length of 255');
201
+ parts.push((0, viem_1.toHex)(policy.tokensIn.length, { size: 1 }));
202
+ for (const { chainId, token } of policy.tokensIn) {
203
+ parts.push((0, viem_1.encodePacked)(['uint256', 'address'], [BigInt(chainId), token]));
204
+ }
205
+ }
206
+ // Recipient: [count: 1][chainId: 32][recipient: 20] each
207
+ if (policy.recipients?.length) {
208
+ if (policy.recipients.length > 255)
209
+ throw new Error('recipients array exceeds max length of 255');
210
+ parts.push((0, viem_1.toHex)(policy.recipients.length, { size: 1 }));
211
+ for (const { chainId, recipient } of policy.recipients) {
212
+ parts.push((0, viem_1.encodePacked)(['uint256', 'address'], [BigInt(chainId), recipient === 'any' ? types_1.ANY_ADDRESS : recipient]));
213
+ }
214
+ }
215
+ // FillExpiry: [count: 1][chainId: 32][max<<128|min packed into uint256] each
216
+ if (policy.fillExpiryBounds?.length) {
217
+ if (policy.fillExpiryBounds.length > 255)
218
+ throw new Error('fillExpiryBounds array exceeds max length of 255');
219
+ const mask128 = (1n << 128n) - 1n;
220
+ parts.push((0, viem_1.toHex)(policy.fillExpiryBounds.length, { size: 1 }));
221
+ for (const { chainId, min: fMin, max: fMax } of policy.fillExpiryBounds) {
222
+ const minVal = (fMin ?? 0n) & mask128;
223
+ const maxVal = (fMax ?? viem_1.maxUint256) & mask128;
224
+ const packed = minVal | (maxVal << 128n);
225
+ parts.push((0, viem_1.encodePacked)(['uint256', 'uint256'], [BigInt(chainId), packed]));
226
+ }
227
+ }
228
+ // TokenOut: [count: 1][chainId: 32][token: 20] each
229
+ if (policy.tokensOut?.length) {
230
+ if (policy.tokensOut.length > 255)
231
+ throw new Error('tokensOut array exceeds max length of 255');
232
+ parts.push((0, viem_1.toHex)(policy.tokensOut.length, { size: 1 }));
233
+ for (const { chainId, token } of policy.tokensOut) {
234
+ parts.push((0, viem_1.encodePacked)(['uint256', 'address'], [BigInt(chainId), token]));
235
+ }
236
+ }
237
+ // RecipientIsSponsor has no data payload — mode bit alone enables it
238
+ return (0, viem_1.concat)(parts);
239
+ }
@@ -0,0 +1,12 @@
1
+ export declare const FIELD_ARBITER = 0;
2
+ export declare const FIELD_EXPIRY = 1;
3
+ export declare const FIELD_TOKEN_IN = 2;
4
+ export declare const FIELD_RECIPIENT = 3;
5
+ export declare const FIELD_FILL_EXPIRY = 4;
6
+ export declare const FIELD_TOKEN_OUT = 5;
7
+ export declare const FIELD_ORIGIN_OPS = 6;
8
+ export declare const FIELD_DEST_OPS = 7;
9
+ export declare const FIELD_RECIPIENT_IS_SPONSOR = 9;
10
+ export declare const MODE_CHECK_STORAGE = 1;
11
+ export declare const ANY_ADDRESS: "0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF";
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../modules/validators/policies/claim/types.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,IAAI,CAAA;AAC9B,eAAO,MAAM,YAAY,IAAI,CAAA;AAC7B,eAAO,MAAM,cAAc,IAAI,CAAA;AAC/B,eAAO,MAAM,eAAe,IAAI,CAAA;AAChC,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAClC,eAAO,MAAM,eAAe,IAAI,CAAA;AAChC,eAAO,MAAM,gBAAgB,IAAI,CAAA;AACjC,eAAO,MAAM,cAAc,IAAI,CAAA;AAE/B,eAAO,MAAM,0BAA0B,IAAI,CAAA;AAG3C,eAAO,MAAM,kBAAkB,IAAI,CAAA;AAGnC,eAAO,MAAM,WAAW,EAAG,4CAAqD,CAAA"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ANY_ADDRESS = exports.MODE_CHECK_STORAGE = exports.FIELD_RECIPIENT_IS_SPONSOR = exports.FIELD_DEST_OPS = exports.FIELD_ORIGIN_OPS = exports.FIELD_TOKEN_OUT = exports.FIELD_FILL_EXPIRY = exports.FIELD_RECIPIENT = exports.FIELD_TOKEN_IN = exports.FIELD_EXPIRY = exports.FIELD_ARBITER = void 0;
4
+ // Field IDs matching BaseDataTypes.sol
5
+ exports.FIELD_ARBITER = 0;
6
+ exports.FIELD_EXPIRY = 1;
7
+ exports.FIELD_TOKEN_IN = 2;
8
+ exports.FIELD_RECIPIENT = 3;
9
+ exports.FIELD_FILL_EXPIRY = 4;
10
+ exports.FIELD_TOKEN_OUT = 5;
11
+ exports.FIELD_ORIGIN_OPS = 6;
12
+ exports.FIELD_DEST_OPS = 7;
13
+ // Field 8 is reserved in BaseDataTypes.sol
14
+ exports.FIELD_RECIPIENT_IS_SPONSOR = 9;
15
+ // Mode values
16
+ exports.MODE_CHECK_STORAGE = 1;
17
+ // Sentinel: allows any recipient address
18
+ exports.ANY_ADDRESS = '0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF';
@@ -1,5 +1,5 @@
1
1
  import { type Address, type Hex, type TypedDataDefinition } from 'viem';
2
- import type { ProviderConfig, RhinestoneAccountConfig, RhinestoneConfig, Session, SignerSet } from '../../types';
2
+ import type { Policy, ProviderConfig, RhinestoneAccountConfig, RhinestoneConfig, Session, SessionEnableData } from '../../types';
3
3
  import { type Module } from '../common';
4
4
  import { SMART_SESSION_EMISSARY_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS_DEV } from './core';
5
5
  interface SessionData {
@@ -164,9 +164,23 @@ declare const SMART_SESSION_MODE_ENABLE = "0x01";
164
164
  declare const SMART_SESSIONS_FALLBACK_TARGET_FLAG: Address;
165
165
  declare const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG: Hex;
166
166
  declare const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION: Hex;
167
- declare function packSignature(signers: SignerSet & {
167
+ declare const DUMMY_PRECLAIMOP_TARGET: Address;
168
+ declare const DUMMY_PRECLAIMOP_SELECTOR: Hex;
169
+ declare const SPENDING_LIMITS_POLICY_ADDRESS: Address;
170
+ declare const TIME_FRAME_POLICY_ADDRESS: Address;
171
+ declare const SUDO_POLICY_ADDRESS: Address;
172
+ declare const UNIVERSAL_ACTION_POLICY_ADDRESS: Address;
173
+ declare const USAGE_LIMIT_POLICY_ADDRESS: Address;
174
+ declare const VALUE_LIMIT_POLICY_ADDRESS: Address;
175
+ declare const INTENT_EXECUTION_POLICY_ADDRESS: Address;
176
+ interface ResolvedSessionSignerSet {
168
177
  type: 'experimental_session';
169
- }, validatorSignature: Hex): Hex;
178
+ session: Session;
179
+ enableData?: SessionEnableData;
180
+ verifyExecutions: boolean;
181
+ claimPolicyData?: Hex;
182
+ }
183
+ declare function packSignature(signers: ResolvedSessionSignerSet, validatorSignature: Hex): Hex;
170
184
  declare function getSessionDetails(account: Address, sessions: Session[], provider: ProviderConfig | undefined, useDevContracts?: boolean): Promise<SessionDetails>;
171
185
  declare function isSessionEnabled(account: Address, provider: ProviderConfig | undefined, session: Session, useDevContracts?: boolean): Promise<boolean>;
172
186
  declare function signEnableSession(config: RhinestoneAccountConfig, details: SessionDetails): Promise<Hex>;
@@ -177,9 +191,19 @@ declare function getEnableSessionCall(account: Address, session: Session, enable
177
191
  to: `0x${string}`;
178
192
  data: `0x${string}`;
179
193
  }>;
180
- declare function getSessionData(session: Session): SessionData;
194
+ declare function getSessionData(session: Session, useDevContracts?: boolean): SessionData;
181
195
  declare function getPermissionId(session: Session): `0x${string}`;
196
+ declare function getPolicyData(policy: Policy, useDevContracts?: boolean): PolicyData;
182
197
  declare function getSmartSessionValidator(config: RhinestoneConfig): Module | null;
183
- export { SMART_SESSION_EMISSARY_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS_DEV, SMART_SESSIONS_FALLBACK_TARGET_FLAG, SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG, SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION, packSignature, getSessionData, getEnableSessionCall, getPermissionId, getSmartSessionValidator, getSessionDetails, isSessionEnabled, signEnableSession, };
184
- export type { ChainSession, ChainDigest, SessionData, SmartSessionModeType, SessionDetails, };
198
+ /**
199
+ * Builds a mockSignature for SSX validation gas estimation.
200
+ * Format: emissaryAddress (20 bytes) + enable-mode sigData.
201
+ * Uses real session data (policies/actions from the user's session config) with dummy
202
+ * sigs and hashes — the mock emissary skips sig verification and only writes storage.
203
+ * The orchestrator slices off the first 20 bytes to identify the validator, then
204
+ * simulates verifyExecution with the mock emissary to estimate gas before the user signs.
205
+ */
206
+ declare function buildMockSignature(session: Session, useDevContracts?: boolean, chainCount?: number, targetChainId?: number): Hex;
207
+ export { SMART_SESSION_EMISSARY_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS_DEV, SMART_SESSIONS_FALLBACK_TARGET_FLAG, SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG, SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION, DUMMY_PRECLAIMOP_TARGET, DUMMY_PRECLAIMOP_SELECTOR, SPENDING_LIMITS_POLICY_ADDRESS, TIME_FRAME_POLICY_ADDRESS, SUDO_POLICY_ADDRESS, UNIVERSAL_ACTION_POLICY_ADDRESS, USAGE_LIMIT_POLICY_ADDRESS, VALUE_LIMIT_POLICY_ADDRESS, INTENT_EXECUTION_POLICY_ADDRESS, packSignature, getSessionData, getPolicyData, getEnableSessionCall, getPermissionId, getSmartSessionValidator, getSessionDetails, isSessionEnabled, signEnableSession, buildMockSignature, };
208
+ export type { ChainSession, ChainDigest, ResolvedSessionSignerSet, SessionData, SmartSessionModeType, SessionDetails, };
185
209
  //# sourceMappingURL=smart-sessions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"smart-sessions.d.ts","sourceRoot":"","sources":["../../../../modules/validators/smart-sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smart-sessions.d.ts","sourceRoot":"","sources":["../../../../modules/validators/smart-sessions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,OAAO,EAMZ,KAAK,GAAG,EAOR,KAAK,mBAAmB,EAKzB,MAAM,MAAM,CAAA;AAcb,OAAO,KAAK,EAEV,MAAM,EACN,cAAc,EACd,uBAAuB,EACvB,gBAAgB,EAChB,OAAO,EACP,iBAAiB,EAElB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAA4B,KAAK,MAAM,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAGL,8BAA8B,EAC9B,kCAAkC,EACnC,MAAM,QAAQ,CAAA;AAYf,UAAU,WAAW;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,wBAAwB,EAAE,GAAG,CAAA;IAC7B,IAAI,EAAE,GAAG,CAAA;IACT,eAAe,EAAE;QACf,qBAAqB,EAAE,SAAS,qBAAqB,EAAE,CAAA;QACvD,eAAe,EAAE,SAAS,aAAa,EAAE,CAAA;KAC1C,CAAA;IACD,OAAO,EAAE,SAAS,UAAU,EAAE,CAAA;IAC9B,aAAa,EAAE,SAAS,UAAU,EAAE,CAAA;CACrC;AAED,UAAU,aAAa;IACrB,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,GAAG,CAAA;CACd;AAED,UAAU,qBAAqB;IAC7B,kBAAkB,EAAE,GAAG,CAAA;IACvB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAChC;AAED,UAAU,UAAU;IAClB,oBAAoB,EAAE,GAAG,CAAA;IACzB,YAAY,EAAE,OAAO,CAAA;IACrB,cAAc,EAAE,SAAS,UAAU,EAAE,CAAA;CACtC;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,GAAG,CAAA;CACd;AAaD,KAAK,oBAAoB,GACrB,OAAO,sBAAsB,GAC7B,OAAO,yBAAyB,CAAA;AAEpC,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,GAAG,CAAA;CACnB;AAED,UAAU,iBAAiB;IACzB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,0BAA0B,EAAE,OAAO,CAAA;IACnC,sBAAsB,EAAE,OAAO,CAAA;IAC/B,cAAc,EAAE,SAAS,UAAU,EAAE,CAAA;IACrC,eAAe,EAAE,WAAW,CAAA;IAC5B,OAAO,EAAE,SAAS,UAAU,EAAE,CAAA;CAC/B;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,iBAAiB,CAAA;IAC9B,gBAAgB,EAAE,OAAO,CAAA;IACzB,wBAAwB,EAAE,GAAG,CAAA;IAC7B,IAAI,EAAE,GAAG,CAAA;IACT,YAAY,EAAE,OAAO,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,aAAa,CAAA;CACvB;AAED,UAAU,WAAW;IACnB,qBAAqB,EAAE,SAAS,cAAc,EAAE,CAAA;IAChD,eAAe,EAAE,SAAS,UAAU,EAAE,CAAA;CACvC;AAED,UAAU,cAAc;IACtB,kBAAkB,EAAE,GAAG,CAAA;IACvB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,iBAAiB,EAAE,WAAW,EAAE,CAAA;IAChC,IAAI,EAAE,mBAAmB,CAAC,OAAO,KAAK,EAAE,mBAAmB,CAAC,CAAA;CAC7D;AAED,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CD,CAAA;AAEV,QAAA,MAAM,sBAAsB,SAAS,CAAA;AACrC,QAAA,MAAM,yBAAyB,SAAS,CAAA;AAExC,QAAA,MAAM,mCAAmC,EAAE,OACG,CAAA;AAC9C,QAAA,MAAM,4CAA4C,EAAE,GAAkB,CAAA;AACtE,QAAA,MAAM,2EAA2E,EAAE,GACrE,CAAA;AAOd,QAAA,MAAM,uBAAuB,EAAE,OACe,CAAA;AAC9C,QAAA,MAAM,yBAAyB,EAAE,GAAkB,CAAA;AAEnD,QAAA,MAAM,8BAA8B,EAAE,OACQ,CAAA;AAC9C,QAAA,MAAM,yBAAyB,EAAE,OACa,CAAA;AAC9C,QAAA,MAAM,mBAAmB,EAAE,OACmB,CAAA;AAC9C,QAAA,MAAM,+BAA+B,EAAE,OACO,CAAA;AAC9C,QAAA,MAAM,0BAA0B,EAAE,OACY,CAAA;AAC9C,QAAA,MAAM,0BAA0B,EAAE,OACY,CAAA;AAC9C,QAAA,MAAM,+BAA+B,EAAE,OACO,CAAA;AAY9C,UAAU,wBAAwB;IAChC,IAAI,EAAE,sBAAsB,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,gBAAgB,EAAE,OAAO,CAAA;IACzB,eAAe,CAAC,EAAE,GAAG,CAAA;CACtB;AAED,iBAAS,aAAa,CACpB,OAAO,EAAE,wBAAwB,EACjC,kBAAkB,EAAE,GAAG,GACtB,GAAG,CA4JL;AAED,iBAAe,iBAAiB,CAC9B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,EAAE,cAAc,GAAG,SAAS,EACpC,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,cAAc,CAAC,CAiDzB;AAED,iBAAe,gBAAgB,CAC7B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,GAAG,SAAS,EACpC,OAAO,EAAE,OAAO,EAChB,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED,iBAAe,iBAAiB,CAC9B,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,GAAG,CAAC,CAyBd;AAwED,iBAAe,oBAAoB,CACjC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,sBAAsB,EAAE,GAAG,EAC3B,iBAAiB,EAAE;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,GAAG,CAAA;CACnB,EAAE,EACH,oBAAoB,EAAE,MAAM,EAC5B,eAAe,CAAC,EAAE,OAAO;;;GA8B1B;AAED,iBAAS,cAAc,CACrB,OAAO,EAAE,OAAO,EAChB,eAAe,CAAC,EAAE,OAAO,GACxB,WAAW,CA6Fb;AAED,iBAAS,eAAe,CAAC,OAAO,EAAE,OAAO,iBAyBxC;AAED,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,UAAU,CA0K5E;AAED,iBAAS,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAezE;AAQD;;;;;;;GAOG;AACH,iBAAS,kBAAkB,CACzB,OAAO,EAAE,OAAO,EAChB,eAAe,CAAC,EAAE,OAAO,EACzB,UAAU,GAAE,MAAU,EACtB,aAAa,CAAC,EAAE,MAAM,GACrB,GAAG,CAgCL;AASD,OAAO,EACL,8BAA8B,EAC9B,kCAAkC,EAClC,mCAAmC,EACnC,4CAA4C,EAC5C,2EAA2E,EAC3E,uBAAuB,EACvB,yBAAyB,EACzB,8BAA8B,EAC9B,yBAAyB,EACzB,mBAAmB,EACnB,+BAA+B,EAC/B,0BAA0B,EAC1B,0BAA0B,EAC1B,+BAA+B,EAC/B,aAAa,EACb,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,CAAA;AACD,YAAY,EACV,YAAY,EACZ,WAAW,EACX,wBAAwB,EACxB,WAAW,EACX,oBAAoB,EACpB,cAAc,GACf,CAAA"}
@@ -3,26 +3,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
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;
6
+ exports.INTENT_EXECUTION_POLICY_ADDRESS = exports.VALUE_LIMIT_POLICY_ADDRESS = exports.USAGE_LIMIT_POLICY_ADDRESS = exports.UNIVERSAL_ACTION_POLICY_ADDRESS = exports.SUDO_POLICY_ADDRESS = exports.TIME_FRAME_POLICY_ADDRESS = exports.SPENDING_LIMITS_POLICY_ADDRESS = exports.DUMMY_PRECLAIMOP_SELECTOR = exports.DUMMY_PRECLAIMOP_TARGET = 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
7
  exports.packSignature = packSignature;
8
8
  exports.getSessionData = getSessionData;
9
+ exports.getPolicyData = getPolicyData;
9
10
  exports.getEnableSessionCall = getEnableSessionCall;
10
11
  exports.getPermissionId = getPermissionId;
11
12
  exports.getSmartSessionValidator = getSmartSessionValidator;
12
13
  exports.getSessionDetails = getSessionDetails;
13
14
  exports.isSessionEnabled = isSessionEnabled;
14
15
  exports.signEnableSession = signEnableSession;
16
+ exports.buildMockSignature = buildMockSignature;
15
17
  const solady_1 = require("solady");
16
18
  const viem_1 = require("viem");
17
19
  const chains_1 = require("viem/chains");
20
+ const accounts_1 = require("../../accounts");
21
+ const startale_1 = require("../../accounts/startale");
18
22
  const utils_1 = require("../../accounts/utils");
19
23
  const compact_1 = require("../../execution/compact");
20
24
  const utils_2 = require("../../execution/utils");
25
+ const registry_1 = require("../../orchestrator/registry");
21
26
  const smart_session_emissary_1 = __importDefault(require("../abi/smart-session-emissary"));
22
27
  const common_1 = require("../common");
23
28
  const core_1 = require("./core");
24
29
  Object.defineProperty(exports, "SMART_SESSION_EMISSARY_ADDRESS", { enumerable: true, get: function () { return core_1.SMART_SESSION_EMISSARY_ADDRESS; } });
25
30
  Object.defineProperty(exports, "SMART_SESSION_EMISSARY_ADDRESS_DEV", { enumerable: true, get: function () { return core_1.SMART_SESSION_EMISSARY_ADDRESS_DEV; } });
31
+ const permit2_1 = require("./policies/claim/permit2");
26
32
  const types = {
27
33
  PolicyData: [
28
34
  { name: 'policy', type: 'address' },
@@ -75,12 +81,30 @@ const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG = '0x00000001';
75
81
  exports.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG = SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG;
76
82
  const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION = '0x00000002';
77
83
  exports.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION = SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION;
84
+ // Dummy preclaimop action injected into every session so that the filler can trigger
85
+ // verifyExecution (ENABLE mode) using an injected dummy preclaimop when there are no
86
+ // real preclaimops. Target 0x...0420 is the ecRecover precompile; calls to it fail
87
+ // silently because preclaimops are failure-tolerant. Selector 0x69123456 is
88
+ // intentionally uncommon.
89
+ const DUMMY_PRECLAIMOP_TARGET = '0x0000000000000000000000000000000000000420';
90
+ exports.DUMMY_PRECLAIMOP_TARGET = DUMMY_PRECLAIMOP_TARGET;
91
+ const DUMMY_PRECLAIMOP_SELECTOR = '0x69123456';
92
+ exports.DUMMY_PRECLAIMOP_SELECTOR = DUMMY_PRECLAIMOP_SELECTOR;
78
93
  const SPENDING_LIMITS_POLICY_ADDRESS = '0x00000088d48cf102a8cdb0137a9b173f957c6343';
94
+ exports.SPENDING_LIMITS_POLICY_ADDRESS = SPENDING_LIMITS_POLICY_ADDRESS;
79
95
  const TIME_FRAME_POLICY_ADDRESS = '0x8177451511de0577b911c254e9551d981c26dc72';
96
+ exports.TIME_FRAME_POLICY_ADDRESS = TIME_FRAME_POLICY_ADDRESS;
80
97
  const SUDO_POLICY_ADDRESS = '0x0000003111cd8e92337c100f22b7a9dbf8dee301';
98
+ exports.SUDO_POLICY_ADDRESS = SUDO_POLICY_ADDRESS;
81
99
  const UNIVERSAL_ACTION_POLICY_ADDRESS = '0x0000006dda6c463511c4e9b05cfc34c1247fcf1f';
100
+ exports.UNIVERSAL_ACTION_POLICY_ADDRESS = UNIVERSAL_ACTION_POLICY_ADDRESS;
82
101
  const USAGE_LIMIT_POLICY_ADDRESS = '0x1f34ef8311345a3a4a4566af321b313052f51493';
102
+ exports.USAGE_LIMIT_POLICY_ADDRESS = USAGE_LIMIT_POLICY_ADDRESS;
83
103
  const VALUE_LIMIT_POLICY_ADDRESS = '0x730da93267e7e513e932301b47f2ac7d062abc83';
104
+ exports.VALUE_LIMIT_POLICY_ADDRESS = VALUE_LIMIT_POLICY_ADDRESS;
105
+ const INTENT_EXECUTION_POLICY_ADDRESS = '0xe9eA54d063975cDee9e06b7636d5563d95a7A23C';
106
+ exports.INTENT_EXECUTION_POLICY_ADDRESS = INTENT_EXECUTION_POLICY_ADDRESS;
107
+ const INTENT_EXECUTION_POLICY_ADDRESS_DEV = '0xa09b47de6e510cbdc18b97e9239bedcb44fb4901';
84
108
  const ACTION_CONDITION_EQUAL = 0;
85
109
  const ACTION_CONDITION_GREATER_THAN = 1;
86
110
  const ACTION_CONDITION_LESS_THAN = 2;
@@ -222,7 +246,7 @@ function packSignature(signers, validatorSignature) {
222
246
  const SIGNATURE_IS_VALID_SIG_1271 = '0x00';
223
247
  const policyDataOffset = BigInt(64 + (0, viem_1.size)(validatorSignature));
224
248
  const mode = SIGNATURE_IS_VALID_SIG_1271;
225
- const policySpecificData = '0x';
249
+ const policySpecificData = signers.claimPolicyData ?? '0x';
226
250
  const signature = (0, viem_1.encodePacked)(['bytes1', 'bytes32', 'uint256', 'bytes', 'bytes'], [
227
251
  mode,
228
252
  permissionId,
@@ -236,7 +260,7 @@ function packSignature(signers, validatorSignature) {
236
260
  async function getSessionDetails(account, sessions, provider, useDevContracts) {
237
261
  const lockTag = '0x000000000000000000000000';
238
262
  const sessionNonces = await Promise.all(sessions.map((session) => getSessionNonce(account, session, lockTag, provider, useDevContracts)));
239
- const sessionDatas = sessions.map((session) => getSessionData(session));
263
+ const sessionDatas = sessions.map((session) => getSessionData(session, useDevContracts));
240
264
  const signedSessions = sessionDatas.map((session, index) => getSignedSession(account, lockTag, session, sessionNonces[index], useDevContracts));
241
265
  const chains = sessions.map((session) => session.chain);
242
266
  const hashesAndChainIds = signedSessions.map((session, index) => ({
@@ -292,6 +316,22 @@ async function isSessionEnabled(account, provider, session, useDevContracts) {
292
316
  return isEnabled;
293
317
  }
294
318
  async function signEnableSession(config, details) {
319
+ const account = (0, accounts_1.getAccountProvider)(config);
320
+ const validator = (0, core_1.getOwnerValidator)(config);
321
+ const isStartaleK1 = account.type === 'startale' &&
322
+ validator.address.toLowerCase() ===
323
+ startale_1.K1_DEFAULT_VALIDATOR_ADDRESS.toLowerCase();
324
+ if (isStartaleK1) {
325
+ const chainIds = details.hashesAndChainIds.map((h) => h.chainId);
326
+ const uniqueChainIds = [...new Set(chainIds.map((c) => c.toString()))];
327
+ if (uniqueChainIds.length > 1) {
328
+ throw new Error('Startale accounts with K1 validator do not support multi-chain session enable');
329
+ }
330
+ const chain = (0, registry_1.getChainById)(Number(chainIds[0]));
331
+ return (0, utils_2.signTypedData)(config, details.data, chain, undefined, {
332
+ skipErc6492: true,
333
+ });
334
+ }
295
335
  return (0, utils_2.signTypedData)(config, details.data, chains_1.mainnet, undefined, {
296
336
  skipErc6492: true,
297
337
  });
@@ -349,7 +389,7 @@ function getSignedSession(account, lockTag, session, nonce, useDevContracts) {
349
389
  };
350
390
  }
351
391
  async function getEnableSessionCall(account, session, enableSessionSignature, hashesAndChainIds, sessionToEnableIndex, useDevContracts) {
352
- const sessionData = getSessionData(session);
392
+ const sessionData = getSessionData(session, useDevContracts);
353
393
  const permissionId = getPermissionId(session);
354
394
  return {
355
395
  to: getSmartSessionEmissaryAddress(useDevContracts),
@@ -378,7 +418,7 @@ async function getEnableSessionCall(account, session, enableSessionSignature, ha
378
418
  }),
379
419
  };
380
420
  }
381
- function getSessionData(session) {
421
+ function getSessionData(session, useDevContracts) {
382
422
  const validator = (0, core_1.getValidator)(session.owners);
383
423
  const allowedContent = [
384
424
  {
@@ -405,11 +445,43 @@ function getSessionData(session) {
405
445
  },
406
446
  ],
407
447
  };
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)) ?? [
448
+ const userHasFallbackAction = session.actions?.some((action) => !('target' in action) && !('selector' in action));
449
+ const injectedActions = [
450
+ // Native token wrapping
451
+ {
452
+ target: (0, registry_1.getWrappedTokenAddress)(session.chain),
453
+ selector: (0, viem_1.toFunctionSelector)({
454
+ type: 'function',
455
+ name: 'deposit',
456
+ inputs: [],
457
+ outputs: [],
458
+ stateMutability: 'payable',
459
+ }),
460
+ },
461
+ // Only inject the intent-execution fallback if the user hasn't defined their own
462
+ // fallback action — otherwise both map to the same actionId and their policies merge,
463
+ // causing IntentExecutionPolicy to be required for all fallback calls
464
+ ...(!userHasFallbackAction
465
+ ? [{ policies: [{ type: 'intent-execution' }] }]
466
+ : []),
467
+ // Dummy action: allows the filler to call verifyExecution in ENABLE mode using
468
+ // an injected dummy preclaimop so any session can be enabled on-chain without
469
+ // a separate UserOp, regardless of whether it has claim or action policies.
470
+ {
471
+ target: DUMMY_PRECLAIMOP_TARGET,
472
+ selector: DUMMY_PRECLAIMOP_SELECTOR,
473
+ policies: [{ type: 'sudo' }],
474
+ },
475
+ ];
476
+ const actions = session.actions?.length
477
+ ? [...session.actions, ...injectedActions].map((action) => ({
478
+ actionTargetSelector: 'selector' in action
479
+ ? action.selector
480
+ : SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG,
481
+ actionTarget: 'target' in action
482
+ ? action.target
483
+ : SMART_SESSIONS_FALLBACK_TARGET_FLAG,
484
+ actionPolicies: action.policies?.map((policy) => getPolicyData(policy, useDevContracts)) ?? [
413
485
  {
414
486
  policy: SUDO_POLICY_ADDRESS,
415
487
  initData: '0x',
@@ -423,7 +495,11 @@ function getSessionData(session) {
423
495
  sessionValidatorInitData: validator.initData,
424
496
  erc7739Policies: erc7739Data,
425
497
  actions,
426
- claimPolicies: [],
498
+ // Note: Permit2ClaimPolicy has no dev deployment — same address in all environments
499
+ claimPolicies: session.claimPolicies?.map((p) => ({
500
+ policy: permit2_1.PERMIT2_CLAIM_POLICY_ADDRESS,
501
+ initData: (0, permit2_1.encodePermit2ClaimPolicyInitData)(p),
502
+ })) ?? [],
427
503
  };
428
504
  }
429
505
  function getPermissionId(session) {
@@ -447,13 +523,20 @@ function getPermissionId(session) {
447
523
  sessionData.salt,
448
524
  ]));
449
525
  }
450
- function getPolicyData(policy) {
526
+ function getPolicyData(policy, useDevContracts) {
451
527
  switch (policy.type) {
452
528
  case 'sudo':
453
529
  return {
454
530
  policy: SUDO_POLICY_ADDRESS,
455
531
  initData: '0x',
456
532
  };
533
+ case 'intent-execution':
534
+ return {
535
+ policy: useDevContracts
536
+ ? INTENT_EXECUTION_POLICY_ADDRESS_DEV
537
+ : INTENT_EXECUTION_POLICY_ADDRESS,
538
+ initData: '0x',
539
+ };
457
540
  case 'universal-action': {
458
541
  function getCondition(condition) {
459
542
  switch (condition) {
@@ -619,6 +702,46 @@ function getSmartSessionEmissaryAddress(useDevContracts) {
619
702
  ? core_1.SMART_SESSION_EMISSARY_ADDRESS_DEV
620
703
  : core_1.SMART_SESSION_EMISSARY_ADDRESS;
621
704
  }
705
+ /**
706
+ * Builds a mockSignature for SSX validation gas estimation.
707
+ * Format: emissaryAddress (20 bytes) + enable-mode sigData.
708
+ * Uses real session data (policies/actions from the user's session config) with dummy
709
+ * sigs and hashes — the mock emissary skips sig verification and only writes storage.
710
+ * The orchestrator slices off the first 20 bytes to identify the validator, then
711
+ * simulates verifyExecution with the mock emissary to estimate gas before the user signs.
712
+ */
713
+ function buildMockSignature(session, useDevContracts, chainCount = 1, targetChainId) {
714
+ const emissaryAddress = getSmartSessionEmissaryAddress(useDevContracts);
715
+ // Use targetChainId when provided (per-chain mockSignatures path) so the
716
+ // mock emissary's chainId check passes on the correct chain. Falls back to
717
+ // session.chain.id for the global mockSignature (single-chain path).
718
+ const primaryChainId = targetChainId ?? session.chain.id;
719
+ // Normalize chainCount to a finite positive integer. Guards against
720
+ // accidental NaN/undefined from caller (e.g. `sourceChains?.length` when
721
+ // sourceChains is undefined) which would otherwise make Array.from produce
722
+ // an empty array and silently drop the ChainId check.
723
+ const safeChainCount = Number.isFinite(chainCount) && chainCount > 0 ? Math.floor(chainCount) : 1;
724
+ // Build one entry per chain — first entry is the real chain ID (for the ChainId check),
725
+ // remaining entries use chainId 0 as placeholders. Hash mismatch is skipped by the
726
+ // mock emissary, so sessionDigest can be zeroHash throughout.
727
+ const hashesAndChainIds = Array.from({ length: safeChainCount }, (_, i) => ({
728
+ chainId: i === 0 ? BigInt(primaryChainId) : 0n,
729
+ sessionDigest: viem_1.zeroHash,
730
+ }));
731
+ const dummySigners = {
732
+ type: 'experimental_session',
733
+ session,
734
+ verifyExecutions: true,
735
+ enableData: {
736
+ userSignature: `0x${'00'.repeat(65)}`,
737
+ hashesAndChainIds,
738
+ sessionToEnableIndex: 0,
739
+ },
740
+ };
741
+ const dummyValidatorSignature = `0x${'00'.repeat(65)}`;
742
+ const sigData = packSignature(dummySigners, dummyValidatorSignature);
743
+ return (0, viem_1.concat)([emissaryAddress, sigData]);
744
+ }
622
745
  function createFixedArray(length, getValue) {
623
746
  return Array.from({ length }, (_, i) => getValue(i));
624
747
  }
@@ -1,10 +1,11 @@
1
1
  import type { Address } from 'viem';
2
+ import type { AuthProvider } from '../auth/provider';
2
3
  import type { IntentInput, IntentOpStatus, IntentResult, IntentRoute, Portfolio, SignedIntentOp, SplitIntentsInput, SplitIntentsResult } from './types';
3
4
  export declare class Orchestrator {
4
5
  private serverUrl;
5
- private apiKey?;
6
- private headers?;
7
- constructor(serverUrl: string, apiKey?: string, headers?: Record<string, string>);
6
+ private authProvider;
7
+ private extraHeaders?;
8
+ constructor(serverUrl: string, authProvider: AuthProvider, headers?: Record<string, string>);
8
9
  getPortfolio(userAddress: Address, filter?: {
9
10
  chainIds?: number[];
10
11
  tokens?: {
@@ -13,9 +14,13 @@ export declare class Orchestrator {
13
14
  }): Promise<Portfolio>;
14
15
  getIntentRoute(input: IntentInput): Promise<IntentRoute>;
15
16
  splitIntents(input: SplitIntentsInput): Promise<SplitIntentsResult>;
16
- submitIntent(signedIntentOpUnformatted: SignedIntentOp, dryRun: boolean): Promise<IntentResult>;
17
+ submitIntent(signedIntentOpUnformatted: SignedIntentOp, dryRun: boolean, policyContext?: {
18
+ intentInput: unknown;
19
+ isSponsored: boolean;
20
+ }): Promise<IntentResult>;
17
21
  getIntentOpStatus(intentId: bigint): Promise<IntentOpStatus>;
18
22
  private getHeaders;
23
+ private getSubmitHeaders;
19
24
  private fetch;
20
25
  private parseError;
21
26
  private parseErrorMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../orchestrator/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AA2BnC,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;IACvB,OAAO,CAAC,OAAO,CAAC,CAAwB;gBAGtC,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAO5B,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;IASxD,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;IAelB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IASlE,OAAO,CAAC,UAAU;YAWJ,KAAK;IA6BnB,OAAO,CAAC,UAAU;IA6GlB,OAAO,CAAC,iBAAiB;CAmG1B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../orchestrator/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AA2BpD,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,YAAY,CAAc;IAClC,OAAO,CAAC,YAAY,CAAC,CAAwB;gBAG3C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAO5B,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;IASxD,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwDnE,YAAY,CAChB,yBAAyB,EAAE,cAAc,EACzC,MAAM,EAAE,OAAO,EACf,aAAa,CAAC,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,GAC7D,OAAO,CAAC,YAAY,CAAC;IAqBlB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YASpD,UAAU;YAWV,gBAAgB;YAgBhB,KAAK;IA6BnB,OAAO,CAAC,UAAU;IA6GlB,OAAO,CAAC,iBAAiB;CAmG1B"}