@rhinestone/sdk 0.0.0-dev-20260330133013 → 0.0.0-dev-20260331174807
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.
- package/dist/src/accounts/json-rpc/providers.js +1 -1
- package/dist/src/actions/recovery.test.js +1 -1
- package/dist/src/execution/signing.test.d.ts +2 -0
- package/dist/src/execution/signing.test.d.ts.map +1 -0
- package/dist/src/execution/signing.test.js +333 -0
- package/dist/src/execution/utils.d.ts +1 -0
- package/dist/src/execution/utils.d.ts.map +1 -1
- package/dist/src/execution/utils.js +27 -5
- package/dist/src/modules/validators/index.d.ts +2 -2
- package/dist/src/modules/validators/index.d.ts.map +1 -1
- package/dist/src/modules/validators/index.js +2 -1
- package/dist/src/modules/validators/smart-sessions.d.ts +11 -3
- package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
- package/dist/src/modules/validators/smart-sessions.js +26 -15
- package/dist/src/modules/validators/smart-sessions.test.js +240 -16
- package/dist/src/orchestrator/consts.d.ts +1 -1
- package/dist/src/orchestrator/consts.js +1 -1
- package/dist/src/orchestrator/registry.d.ts.map +1 -1
- package/dist/src/orchestrator/registry.js +5 -1
- package/dist/src/types.d.ts +3 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/test/utils/utils.js +1 -1
- package/package.json +1 -1
|
@@ -11,7 +11,7 @@ function getAlchemyUrl(chainId, apiKey) {
|
|
|
11
11
|
}
|
|
12
12
|
return urlTemplate
|
|
13
13
|
.replace('{{chain_param}}', chainParam)
|
|
14
|
-
.replace('
|
|
14
|
+
.replace('${ALCHEMY_API_KEY}', apiKey);
|
|
15
15
|
}
|
|
16
16
|
function getCustomUrl(chainId, urls) {
|
|
17
17
|
return urls[chainId];
|
|
@@ -12,7 +12,7 @@ const accountAddress = '0x36C03e7D593F7B2C6b06fC18B5f4E9a4A29C99b0';
|
|
|
12
12
|
vitest_1.vi.mock('viem', async (importOriginal) => {
|
|
13
13
|
const actual = await importOriginal();
|
|
14
14
|
return {
|
|
15
|
-
// @ts-
|
|
15
|
+
// @ts-expect-error
|
|
16
16
|
...actual,
|
|
17
17
|
createPublicClient: vitest_1.vi.fn(),
|
|
18
18
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.test.d.ts","sourceRoot":"","sources":["../../../execution/signing.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const viem_1 = require("viem");
|
|
4
|
+
const chains_1 = require("viem/chains");
|
|
5
|
+
const vitest_1 = require("vitest");
|
|
6
|
+
const consts_1 = require("../../test/consts");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
const { MOCK_EMISSARY, MOCK_EIP1271, MOCK_ACCOUNT, MOCK_EXECUTOR, MOCK_VALIDATOR, mockGetEmissarySignature, mockGetEip1271Signature, mockIsSessionEnabled, MOCK_TYPED_DATA, } = vitest_1.vi.hoisted(() => {
|
|
9
|
+
const MOCK_ACCOUNT = '0x1111111111111111111111111111111111111111';
|
|
10
|
+
const MOCK_EXECUTOR = '0x2222222222222222222222222222222222222222';
|
|
11
|
+
const MOCK_VALIDATOR = '0x3333333333333333333333333333333333333333';
|
|
12
|
+
const MOCK_EMISSARY = `0x${'ee'.repeat(65)}`;
|
|
13
|
+
const MOCK_EIP1271 = `0x${'12'.repeat(65)}`;
|
|
14
|
+
const mockGetEmissarySignature = vitest_1.vi.fn().mockResolvedValue(MOCK_EMISSARY);
|
|
15
|
+
const mockGetEip1271Signature = vitest_1.vi.fn().mockResolvedValue(MOCK_EIP1271);
|
|
16
|
+
const mockIsSessionEnabled = vitest_1.vi.fn().mockResolvedValue(true);
|
|
17
|
+
const MOCK_TYPED_DATA = {
|
|
18
|
+
domain: {
|
|
19
|
+
name: 'Test',
|
|
20
|
+
version: '1',
|
|
21
|
+
chainId: 8453,
|
|
22
|
+
verifyingContract: MOCK_EXECUTOR,
|
|
23
|
+
},
|
|
24
|
+
types: {
|
|
25
|
+
Test: [{ name: 'value', type: 'uint256' }],
|
|
26
|
+
},
|
|
27
|
+
primaryType: 'Test',
|
|
28
|
+
message: { value: 1n },
|
|
29
|
+
};
|
|
30
|
+
return {
|
|
31
|
+
MOCK_EMISSARY: MOCK_EMISSARY,
|
|
32
|
+
MOCK_EIP1271: MOCK_EIP1271,
|
|
33
|
+
MOCK_ACCOUNT: MOCK_ACCOUNT,
|
|
34
|
+
MOCK_EXECUTOR: MOCK_EXECUTOR,
|
|
35
|
+
MOCK_VALIDATOR: MOCK_VALIDATOR,
|
|
36
|
+
mockGetEmissarySignature,
|
|
37
|
+
mockGetEip1271Signature,
|
|
38
|
+
mockIsSessionEnabled,
|
|
39
|
+
MOCK_TYPED_DATA,
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
vitest_1.vi.mock('../orchestrator', () => ({
|
|
43
|
+
getOrchestrator: vitest_1.vi.fn(),
|
|
44
|
+
}));
|
|
45
|
+
vitest_1.vi.mock('../accounts', () => ({
|
|
46
|
+
getAddress: vitest_1.vi.fn().mockReturnValue(MOCK_ACCOUNT),
|
|
47
|
+
getEmissarySignature: mockGetEmissarySignature,
|
|
48
|
+
getEip1271Signature: mockGetEip1271Signature,
|
|
49
|
+
getSmartAccount: vitest_1.vi.fn(),
|
|
50
|
+
getEip712Domain: vitest_1.vi.fn(),
|
|
51
|
+
getAccountProvider: vitest_1.vi.fn(),
|
|
52
|
+
getInitCode: vitest_1.vi.fn(),
|
|
53
|
+
getGuardianSmartAccount: vitest_1.vi.fn(),
|
|
54
|
+
getTypedDataPackedSignature: vitest_1.vi.fn(),
|
|
55
|
+
toErc6492Signature: vitest_1.vi.fn(),
|
|
56
|
+
is7702: vitest_1.vi.fn().mockReturnValue(false),
|
|
57
|
+
getEip7702InitCall: vitest_1.vi.fn(),
|
|
58
|
+
EoaAccountMustHaveAccountError: class extends Error {
|
|
59
|
+
},
|
|
60
|
+
EoaSigningMethodNotConfiguredError: class extends Error {
|
|
61
|
+
},
|
|
62
|
+
FactoryArgsNotAvailableError: class extends Error {
|
|
63
|
+
},
|
|
64
|
+
}));
|
|
65
|
+
vitest_1.vi.mock('../accounts/signing/common', () => ({
|
|
66
|
+
convertOwnerSetToSignerSet: vitest_1.vi.fn(),
|
|
67
|
+
}));
|
|
68
|
+
vitest_1.vi.mock('../accounts/startale', () => ({
|
|
69
|
+
K1_DEFAULT_VALIDATOR_ADDRESS: '0x0000000000000000000000000000000000000000',
|
|
70
|
+
}));
|
|
71
|
+
vitest_1.vi.mock('../accounts/utils', () => ({
|
|
72
|
+
createTransport: vitest_1.vi.fn(),
|
|
73
|
+
getBundlerClient: vitest_1.vi.fn(),
|
|
74
|
+
}));
|
|
75
|
+
vitest_1.vi.mock('../modules', () => ({
|
|
76
|
+
getIntentExecutor: vitest_1.vi.fn().mockReturnValue({
|
|
77
|
+
address: MOCK_EXECUTOR,
|
|
78
|
+
type: 7,
|
|
79
|
+
initData: '0x',
|
|
80
|
+
deInitData: '0x',
|
|
81
|
+
additionalContext: '0x',
|
|
82
|
+
}),
|
|
83
|
+
}));
|
|
84
|
+
vitest_1.vi.mock('../modules/validators', () => ({
|
|
85
|
+
isSessionEnabled: mockIsSessionEnabled,
|
|
86
|
+
getOwnerValidator: vitest_1.vi.fn().mockReturnValue({
|
|
87
|
+
address: MOCK_VALIDATOR,
|
|
88
|
+
type: 1,
|
|
89
|
+
initData: '0x',
|
|
90
|
+
deInitData: '0x',
|
|
91
|
+
additionalContext: '0x',
|
|
92
|
+
}),
|
|
93
|
+
buildMockSignature: vitest_1.vi.fn(),
|
|
94
|
+
getPermissionId: vitest_1.vi.fn().mockReturnValue('0x' + 'cc'.repeat(32)),
|
|
95
|
+
getSmartSessionValidator: vitest_1.vi.fn().mockReturnValue({
|
|
96
|
+
address: MOCK_VALIDATOR,
|
|
97
|
+
type: 1,
|
|
98
|
+
initData: '0x',
|
|
99
|
+
deInitData: '0x',
|
|
100
|
+
additionalContext: '0x',
|
|
101
|
+
}),
|
|
102
|
+
}));
|
|
103
|
+
vitest_1.vi.mock('../modules/validators/core', () => ({
|
|
104
|
+
supportsEip712: vitest_1.vi.fn().mockReturnValue(false),
|
|
105
|
+
getMultiFactorValidator: vitest_1.vi.fn(),
|
|
106
|
+
getSocialRecoveryValidator: vitest_1.vi.fn(),
|
|
107
|
+
getWebAuthnValidator: vitest_1.vi.fn(),
|
|
108
|
+
}));
|
|
109
|
+
vitest_1.vi.mock('../orchestrator/registry', () => ({
|
|
110
|
+
getChainById: vitest_1.vi.fn().mockReturnValue(chains_1.base),
|
|
111
|
+
getTokenAddress: vitest_1.vi.fn(),
|
|
112
|
+
resolveTokenAddress: vitest_1.vi.fn(),
|
|
113
|
+
}));
|
|
114
|
+
vitest_1.vi.mock('./singleChainOps', () => ({
|
|
115
|
+
getTypedData: vitest_1.vi.fn().mockReturnValue(MOCK_TYPED_DATA),
|
|
116
|
+
}));
|
|
117
|
+
vitest_1.vi.mock('./compact', () => ({
|
|
118
|
+
getCompactTypedData: vitest_1.vi.fn().mockReturnValue(MOCK_TYPED_DATA),
|
|
119
|
+
}));
|
|
120
|
+
vitest_1.vi.mock('./error', () => ({
|
|
121
|
+
Eip7702InitSignatureRequiredError: class extends Error {
|
|
122
|
+
},
|
|
123
|
+
SignerNotSupportedError: class extends Error {
|
|
124
|
+
},
|
|
125
|
+
}));
|
|
126
|
+
vitest_1.vi.mock('./permit2', () => ({
|
|
127
|
+
getTypedData: vitest_1.vi.fn().mockReturnValue(MOCK_TYPED_DATA),
|
|
128
|
+
}));
|
|
129
|
+
// --- Helpers ---
|
|
130
|
+
const makeElement = (settlementLayer) => ({
|
|
131
|
+
mandate: {
|
|
132
|
+
destinationChainId: chains_1.base.id,
|
|
133
|
+
destinationOps: {
|
|
134
|
+
vt: ('0x' + '00'.repeat(32)),
|
|
135
|
+
ops: [],
|
|
136
|
+
},
|
|
137
|
+
preClaimOps: {
|
|
138
|
+
vt: ('0x' + '00'.repeat(32)),
|
|
139
|
+
ops: [],
|
|
140
|
+
},
|
|
141
|
+
qualifier: {
|
|
142
|
+
settlementContext: {
|
|
143
|
+
settlementLayer,
|
|
144
|
+
fundingMethod: 'NO_FUNDING',
|
|
145
|
+
using7579: true,
|
|
146
|
+
gasRefund: {
|
|
147
|
+
token: viem_1.zeroAddress,
|
|
148
|
+
exchangeRate: 0n,
|
|
149
|
+
overhead: 0n,
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
});
|
|
155
|
+
const makeIntentOp = (settlementLayer, targetExecutionNonce = '200') => {
|
|
156
|
+
const layers = Array.isArray(settlementLayer)
|
|
157
|
+
? settlementLayer
|
|
158
|
+
: [settlementLayer];
|
|
159
|
+
return {
|
|
160
|
+
sponsor: MOCK_ACCOUNT,
|
|
161
|
+
nonce: '100',
|
|
162
|
+
targetExecutionNonce,
|
|
163
|
+
expires: '9999999999',
|
|
164
|
+
elements: layers.map(makeElement),
|
|
165
|
+
serverSignature: '0x',
|
|
166
|
+
signedMetadata: { fees: {} },
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
// verifyExecutions auto-derived as true when session.actions is non-empty
|
|
170
|
+
const sessionWithActions = {
|
|
171
|
+
chain: chains_1.base,
|
|
172
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA] },
|
|
173
|
+
actions: [{ policies: [{ type: 'usage-limit', limit: 1n }] }],
|
|
174
|
+
};
|
|
175
|
+
// verifyExecutions auto-derived as false when session.actions is absent
|
|
176
|
+
const sessionNoActions = {
|
|
177
|
+
chain: chains_1.base,
|
|
178
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA] },
|
|
179
|
+
};
|
|
180
|
+
const config = {
|
|
181
|
+
apiKey: 'test',
|
|
182
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA] },
|
|
183
|
+
};
|
|
184
|
+
const makeSessionSigners = (session) => ({
|
|
185
|
+
type: 'experimental_session',
|
|
186
|
+
session,
|
|
187
|
+
});
|
|
188
|
+
const ownerSigners = {
|
|
189
|
+
type: 'owner',
|
|
190
|
+
kind: 'ecdsa',
|
|
191
|
+
accounts: [consts_1.accountA],
|
|
192
|
+
};
|
|
193
|
+
// --- Tests ---
|
|
194
|
+
(0, vitest_1.beforeEach)(() => {
|
|
195
|
+
vitest_1.vi.clearAllMocks();
|
|
196
|
+
mockGetEmissarySignature.mockResolvedValue(MOCK_EMISSARY);
|
|
197
|
+
mockGetEip1271Signature.mockResolvedValue(MOCK_EIP1271);
|
|
198
|
+
mockIsSessionEnabled.mockResolvedValue(true);
|
|
199
|
+
});
|
|
200
|
+
(0, vitest_1.describe)('getTargetExecutionSignature', () => {
|
|
201
|
+
(0, vitest_1.test)('undefined signers returns undefined', async () => {
|
|
202
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
203
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, undefined);
|
|
204
|
+
(0, vitest_1.expect)(result).toBeUndefined();
|
|
205
|
+
});
|
|
206
|
+
(0, vitest_1.test)('non-session signers returns undefined', async () => {
|
|
207
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
208
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, ownerSigners);
|
|
209
|
+
(0, vitest_1.expect)(result).toBeUndefined();
|
|
210
|
+
});
|
|
211
|
+
(0, vitest_1.test)('SAME_CHAIN + verifyExecutions: true returns emissary sig', async () => {
|
|
212
|
+
const intentOp = makeIntentOp('SAME_CHAIN');
|
|
213
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
214
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
215
|
+
(0, vitest_1.expect)(result).toBe(MOCK_EMISSARY);
|
|
216
|
+
});
|
|
217
|
+
(0, vitest_1.test)('INTENT_EXECUTOR + verifyExecutions: false (no actions) returns undefined', async () => {
|
|
218
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
219
|
+
const signers = makeSessionSigners(sessionNoActions);
|
|
220
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
221
|
+
(0, vitest_1.expect)(result).toBeUndefined();
|
|
222
|
+
});
|
|
223
|
+
(0, vitest_1.test)('explicit verifyExecutions: false on signers overrides session with actions', async () => {
|
|
224
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
225
|
+
const signers = {
|
|
226
|
+
type: 'experimental_session',
|
|
227
|
+
session: sessionWithActions,
|
|
228
|
+
verifyExecutions: false,
|
|
229
|
+
};
|
|
230
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
231
|
+
(0, vitest_1.expect)(result).toBeUndefined();
|
|
232
|
+
});
|
|
233
|
+
(0, vitest_1.test)('explicit verifyExecutions: true on signers overrides session without actions', async () => {
|
|
234
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
235
|
+
const signers = {
|
|
236
|
+
type: 'experimental_session',
|
|
237
|
+
session: sessionNoActions,
|
|
238
|
+
verifyExecutions: true,
|
|
239
|
+
};
|
|
240
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
241
|
+
(0, vitest_1.expect)(result).toBe(MOCK_EMISSARY);
|
|
242
|
+
});
|
|
243
|
+
(0, vitest_1.test)('session not yet enabled still resolves verifyExecutions from actions', async () => {
|
|
244
|
+
mockIsSessionEnabled.mockResolvedValueOnce(false);
|
|
245
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
246
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
247
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
248
|
+
(0, vitest_1.expect)(result).toBe(MOCK_EMISSARY);
|
|
249
|
+
});
|
|
250
|
+
(0, vitest_1.test)('mixed INTENT_EXECUTOR + SAME_CHAIN elements returns emissary sig', async () => {
|
|
251
|
+
const intentOp = makeIntentOp(['INTENT_EXECUTOR', 'SAME_CHAIN']);
|
|
252
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
253
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
254
|
+
(0, vitest_1.expect)(result).toBe(MOCK_EMISSARY);
|
|
255
|
+
});
|
|
256
|
+
(0, vitest_1.test)('INTENT_EXECUTOR + verifyExecutions: true returns emissary sig', async () => {
|
|
257
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
258
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
259
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
260
|
+
(0, vitest_1.expect)(result).toBe(MOCK_EMISSARY);
|
|
261
|
+
(0, vitest_1.expect)(mockGetEmissarySignature).toHaveBeenCalledTimes(1);
|
|
262
|
+
(0, vitest_1.expect)(mockGetEip1271Signature).not.toHaveBeenCalled();
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
(0, vitest_1.describe)('signIntent with owner signers', () => {
|
|
266
|
+
(0, vitest_1.test)('gives EIP-1271 destinationSignature, not emissary', async () => {
|
|
267
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
268
|
+
const { destinationSignature, originSignatures } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, ownerSigners);
|
|
269
|
+
(0, vitest_1.expect)(destinationSignature).toBe(MOCK_EIP1271);
|
|
270
|
+
(0, vitest_1.expect)(mockGetEip1271Signature).toHaveBeenCalled();
|
|
271
|
+
(0, vitest_1.expect)(mockGetEmissarySignature).not.toHaveBeenCalled();
|
|
272
|
+
(0, vitest_1.expect)(originSignatures).toHaveLength(1);
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
(0, vitest_1.describe)('signIntent destinationSignature', () => {
|
|
276
|
+
(0, vitest_1.test)('verifyExecutions: true + INTENT_EXECUTOR — emissary destinationSignature, both sigs generated', async () => {
|
|
277
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
278
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
279
|
+
const { destinationSignature, originSignatures } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, signers);
|
|
280
|
+
// destinationSignature picks preClaimSig (emissary format) from the { preClaimSig, notarizedClaimSig } pair
|
|
281
|
+
(0, vitest_1.expect)(destinationSignature).toBe(MOCK_EMISSARY);
|
|
282
|
+
// Both emissary and EIP-1271 are produced internally (preClaimSig + notarizedClaimSig)
|
|
283
|
+
(0, vitest_1.expect)(mockGetEmissarySignature).toHaveBeenCalled();
|
|
284
|
+
(0, vitest_1.expect)(mockGetEip1271Signature).toHaveBeenCalled();
|
|
285
|
+
(0, vitest_1.expect)(originSignatures).toHaveLength(1);
|
|
286
|
+
});
|
|
287
|
+
(0, vitest_1.test)('verifyExecutions: false + INTENT_EXECUTOR — EIP-1271 destinationSignature only', async () => {
|
|
288
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
289
|
+
const signers = makeSessionSigners(sessionNoActions);
|
|
290
|
+
const { destinationSignature, originSignatures } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, signers);
|
|
291
|
+
(0, vitest_1.expect)(destinationSignature).toBe(MOCK_EIP1271);
|
|
292
|
+
(0, vitest_1.expect)(mockGetEmissarySignature).not.toHaveBeenCalled();
|
|
293
|
+
(0, vitest_1.expect)(originSignatures).toHaveLength(1);
|
|
294
|
+
});
|
|
295
|
+
(0, vitest_1.test)('verifyExecutions: true + SAME_CHAIN — emissary destinationSignature', async () => {
|
|
296
|
+
const intentOp = makeIntentOp('SAME_CHAIN');
|
|
297
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
298
|
+
const { destinationSignature } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, signers);
|
|
299
|
+
(0, vitest_1.expect)(destinationSignature).toBe(MOCK_EMISSARY);
|
|
300
|
+
});
|
|
301
|
+
(0, vitest_1.test)('multi-element op produces one originSignature per element', async () => {
|
|
302
|
+
const intentOp = makeIntentOp(['INTENT_EXECUTOR', 'INTENT_EXECUTOR']);
|
|
303
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
304
|
+
const { originSignatures } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, signers);
|
|
305
|
+
(0, vitest_1.expect)(originSignatures).toHaveLength(2);
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
(0, vitest_1.describe)('signIntent + getTargetExecutionSignature routing', () => {
|
|
309
|
+
(0, vitest_1.test)('INTENT_EXECUTOR + verifyExecutions: true — EMISSARY for both', async () => {
|
|
310
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
311
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
312
|
+
const { destinationSignature } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, signers);
|
|
313
|
+
const targetExecutionSignature = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
314
|
+
(0, vitest_1.expect)(destinationSignature).toBe(MOCK_EMISSARY);
|
|
315
|
+
(0, vitest_1.expect)(targetExecutionSignature).toBe(MOCK_EMISSARY);
|
|
316
|
+
});
|
|
317
|
+
(0, vitest_1.test)('INTENT_EXECUTOR + verifyExecutions: false — EIP-1271 destination, undefined target', async () => {
|
|
318
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
319
|
+
const signers = makeSessionSigners(sessionNoActions);
|
|
320
|
+
const { destinationSignature } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, signers);
|
|
321
|
+
const targetExecutionSignature = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
322
|
+
(0, vitest_1.expect)(destinationSignature).toBe(MOCK_EIP1271);
|
|
323
|
+
(0, vitest_1.expect)(targetExecutionSignature).toBeUndefined();
|
|
324
|
+
});
|
|
325
|
+
(0, vitest_1.test)('SAME_CHAIN + verifyExecutions: true — EMISSARY for both destination and target', async () => {
|
|
326
|
+
const intentOp = makeIntentOp('SAME_CHAIN');
|
|
327
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
328
|
+
const { destinationSignature } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, signers);
|
|
329
|
+
const targetExecutionSignature = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
330
|
+
(0, vitest_1.expect)(destinationSignature).toBe(MOCK_EMISSARY);
|
|
331
|
+
(0, vitest_1.expect)(targetExecutionSignature).toBe(MOCK_EMISSARY);
|
|
332
|
+
});
|
|
333
|
+
});
|
|
@@ -8,6 +8,7 @@ type InternalSignerSet = Exclude<SignerSet, SessionSignerSet> | ResolvedSessionS
|
|
|
8
8
|
declare function resolveSessionForChain(signers: SessionSignerSet, chainId: number): {
|
|
9
9
|
session: Session;
|
|
10
10
|
enableData?: SessionEnableData;
|
|
11
|
+
verifyExecutions?: boolean;
|
|
11
12
|
};
|
|
12
13
|
interface UserOperationResult {
|
|
13
14
|
type: 'userop';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../execution/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,KAAK,EAMV,KAAK,uBAAuB,EAC5B,KAAK,GAAG,EAOR,KAAK,YAAY,EAEjB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,eAAe,EAErB,MAAM,MAAM,CAAA;AACb,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAA;AAyCjC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AACpF,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAA;AAMxB,OAAO,EAEL,KAAK,cAAc,EAGnB,KAAK,eAAe,EACpB,KAAK,eAAe,EAIrB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAEV,IAAI,EACJ,aAAa,EACb,SAAS,EAET,uBAAuB,EACvB,gBAAgB,EAChB,OAAO,EACP,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EAET,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACX,wBAAwB,EACzB,MAAM,UAAU,CAAA;AASjB,KAAK,iBAAiB,GAClB,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,GACpC,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../execution/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,11 +49,13 @@ async function resolveSignersForChain(config, signers, chainId) {
|
|
|
49
49
|
const resolved = resolveSessionForChain(signers, chainId);
|
|
50
50
|
const enabled = await (0, validators_1.isSessionEnabled)((0, accounts_1.getAddress)(config), config.provider, resolved.session, config.useDevContracts);
|
|
51
51
|
const enableData = enabled ? undefined : resolved.enableData;
|
|
52
|
+
const hasExplicitActions = !!resolved.session.actions?.length;
|
|
53
|
+
const verifyExecutions = resolved.verifyExecutions ?? signers.verifyExecutions ?? hasExplicitActions;
|
|
52
54
|
return {
|
|
53
55
|
type: 'experimental_session',
|
|
54
56
|
session: resolved.session,
|
|
55
57
|
enableData,
|
|
56
|
-
verifyExecutions
|
|
58
|
+
verifyExecutions,
|
|
57
59
|
};
|
|
58
60
|
}
|
|
59
61
|
function resolveSessionForChain(signers, chainId) {
|
|
@@ -134,7 +136,16 @@ async function getTargetExecutionSignature(config, intentOp, targetChain, signer
|
|
|
134
136
|
if (signers?.type !== 'experimental_session') {
|
|
135
137
|
return undefined;
|
|
136
138
|
}
|
|
139
|
+
const settlementLayers = intentOp.elements.map((e) => e.mandate.qualifier.settlementContext.settlementLayer);
|
|
140
|
+
const hasIntentExecutorOps = settlementLayers.some((l) => l === 'INTENT_EXECUTOR' || l === 'SAME_CHAIN');
|
|
141
|
+
if (!hasIntentExecutorOps) {
|
|
142
|
+
return undefined;
|
|
143
|
+
}
|
|
137
144
|
const resolvedSigners = await resolveSignersForChain(config, signers, targetChain.id);
|
|
145
|
+
if (!isResolvedSessionSignerSet(resolvedSigners) ||
|
|
146
|
+
!resolvedSigners.verifyExecutions) {
|
|
147
|
+
return undefined;
|
|
148
|
+
}
|
|
138
149
|
const destination = getTargetExecutionMessage(config, intentOp);
|
|
139
150
|
const validator = getValidator(config, signers);
|
|
140
151
|
if (!validator) {
|
|
@@ -564,18 +575,23 @@ async function signIntentTypedData(config, signers, validator, isRoot, parameter
|
|
|
564
575
|
const hash = (0, viem_1.hashTypedData)(parameters);
|
|
565
576
|
if (isResolvedSessionSignerSet(signers) && signers.verifyExecutions) {
|
|
566
577
|
if (targetExecution) {
|
|
567
|
-
|
|
578
|
+
const targetSigners = {
|
|
568
579
|
type: 'experimental_session',
|
|
569
580
|
session: signers.session,
|
|
570
581
|
verifyExecutions: true,
|
|
571
|
-
|
|
582
|
+
enableData: signers.enableData,
|
|
583
|
+
};
|
|
584
|
+
// signWithSession (called inside getEmissarySignature) already calls packSignature
|
|
585
|
+
// internally, so no transform is needed here
|
|
586
|
+
return await (0, accounts_1.getEmissarySignature)(config, targetSigners, chain, hash);
|
|
572
587
|
}
|
|
573
|
-
const
|
|
588
|
+
const sessionSignersForEip1271 = {
|
|
574
589
|
type: 'experimental_session',
|
|
575
590
|
session: signers.session,
|
|
576
591
|
verifyExecutions: false,
|
|
577
592
|
enableData: signers.enableData,
|
|
578
|
-
}
|
|
593
|
+
};
|
|
594
|
+
const eip1271Signature = await (0, accounts_1.getEip1271Signature)(config, sessionSignersForEip1271, chain, {
|
|
579
595
|
address: validator.address,
|
|
580
596
|
isRoot,
|
|
581
597
|
}, hash);
|
|
@@ -590,6 +606,12 @@ async function signIntentTypedData(config, signers, validator, isRoot, parameter
|
|
|
590
606
|
notarizedClaimSig: eip1271Signature,
|
|
591
607
|
};
|
|
592
608
|
}
|
|
609
|
+
if (isResolvedSessionSignerSet(signers)) {
|
|
610
|
+
return await (0, accounts_1.getEip1271Signature)(config, signers, chain, {
|
|
611
|
+
address: validator.address,
|
|
612
|
+
isRoot,
|
|
613
|
+
}, hash);
|
|
614
|
+
}
|
|
593
615
|
return await (0, accounts_1.getEip1271Signature)(config, signers, chain, {
|
|
594
616
|
address: validator.address,
|
|
595
617
|
isRoot,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { getMockSignature, getOwnerValidator, MULTI_FACTOR_VALIDATOR_ADDRESS, OWNABLE_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS } from './core';
|
|
2
|
-
import { buildMockSignature, getEnableSessionCall, getPermissionId, getSmartSessionValidator, isSessionEnabled } from './smart-sessions';
|
|
3
|
-
export { OWNABLE_VALIDATOR_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS, MULTI_FACTOR_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, getOwnerValidator, getSmartSessionValidator, getEnableSessionCall, getPermissionId, getMockSignature, buildMockSignature, isSessionEnabled, };
|
|
2
|
+
import { buildMockSignature, getEnableSessionCall, getPermissionId, getSmartSessionValidator, isSessionEnabled, packSignature } from './smart-sessions';
|
|
3
|
+
export { OWNABLE_VALIDATOR_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS, MULTI_FACTOR_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, getOwnerValidator, getSmartSessionValidator, getEnableSessionCall, getPermissionId, getMockSignature, buildMockSignature, isSessionEnabled, packSignature, };
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../modules/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAC9B,0BAA0B,EAC3B,MAAM,QAAQ,CAAA;AACf,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,wBAAwB,EACxB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../modules/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAC9B,0BAA0B,EAC3B,MAAM,QAAQ,CAAA;AACf,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,aAAa,EACd,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,GACd,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isSessionEnabled = exports.buildMockSignature = exports.getMockSignature = exports.getPermissionId = exports.getEnableSessionCall = exports.getSmartSessionValidator = exports.getOwnerValidator = exports.SMART_SESSION_EMISSARY_ADDRESS = exports.MULTI_FACTOR_VALIDATOR_ADDRESS = exports.WEBAUTHN_VALIDATOR_ADDRESS = exports.OWNABLE_VALIDATOR_ADDRESS = void 0;
|
|
3
|
+
exports.packSignature = exports.isSessionEnabled = exports.buildMockSignature = exports.getMockSignature = exports.getPermissionId = exports.getEnableSessionCall = exports.getSmartSessionValidator = exports.getOwnerValidator = exports.SMART_SESSION_EMISSARY_ADDRESS = exports.MULTI_FACTOR_VALIDATOR_ADDRESS = exports.WEBAUTHN_VALIDATOR_ADDRESS = exports.OWNABLE_VALIDATOR_ADDRESS = void 0;
|
|
4
4
|
const core_1 = require("./core");
|
|
5
5
|
Object.defineProperty(exports, "getMockSignature", { enumerable: true, get: function () { return core_1.getMockSignature; } });
|
|
6
6
|
Object.defineProperty(exports, "getOwnerValidator", { enumerable: true, get: function () { return core_1.getOwnerValidator; } });
|
|
@@ -14,3 +14,4 @@ Object.defineProperty(exports, "getEnableSessionCall", { enumerable: true, get:
|
|
|
14
14
|
Object.defineProperty(exports, "getPermissionId", { enumerable: true, get: function () { return smart_sessions_1.getPermissionId; } });
|
|
15
15
|
Object.defineProperty(exports, "getSmartSessionValidator", { enumerable: true, get: function () { return smart_sessions_1.getSmartSessionValidator; } });
|
|
16
16
|
Object.defineProperty(exports, "isSessionEnabled", { enumerable: true, get: function () { return smart_sessions_1.isSessionEnabled; } });
|
|
17
|
+
Object.defineProperty(exports, "packSignature", { enumerable: true, get: function () { return smart_sessions_1.packSignature; } });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Address, type Hex, type TypedDataDefinition } from 'viem';
|
|
2
|
-
import type { ProviderConfig, RhinestoneAccountConfig, RhinestoneConfig, Session, SessionEnableData } 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,6 +164,13 @@ 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 const SPENDING_LIMITS_POLICY_ADDRESS: Address;
|
|
168
|
+
declare const TIME_FRAME_POLICY_ADDRESS: Address;
|
|
169
|
+
declare const SUDO_POLICY_ADDRESS: Address;
|
|
170
|
+
declare const UNIVERSAL_ACTION_POLICY_ADDRESS: Address;
|
|
171
|
+
declare const USAGE_LIMIT_POLICY_ADDRESS: Address;
|
|
172
|
+
declare const VALUE_LIMIT_POLICY_ADDRESS: Address;
|
|
173
|
+
declare const INTENT_EXECUTION_POLICY_ADDRESS: Address;
|
|
167
174
|
interface ResolvedSessionSignerSet {
|
|
168
175
|
type: 'experimental_session';
|
|
169
176
|
session: Session;
|
|
@@ -181,8 +188,9 @@ declare function getEnableSessionCall(account: Address, session: Session, enable
|
|
|
181
188
|
to: `0x${string}`;
|
|
182
189
|
data: `0x${string}`;
|
|
183
190
|
}>;
|
|
184
|
-
declare function getSessionData(session: Session): SessionData;
|
|
191
|
+
declare function getSessionData(session: Session, useDevContracts?: boolean): SessionData;
|
|
185
192
|
declare function getPermissionId(session: Session): `0x${string}`;
|
|
193
|
+
declare function getPolicyData(policy: Policy, useDevContracts?: boolean): PolicyData;
|
|
186
194
|
declare function getSmartSessionValidator(config: RhinestoneConfig): Module | null;
|
|
187
195
|
/**
|
|
188
196
|
* Builds a mockSignature for SSX validation gas estimation.
|
|
@@ -193,6 +201,6 @@ declare function getSmartSessionValidator(config: RhinestoneConfig): Module | nu
|
|
|
193
201
|
* simulates verifyExecution with the mock emissary to estimate gas before the user signs.
|
|
194
202
|
*/
|
|
195
203
|
declare function buildMockSignature(session: Session, useDevContracts?: boolean, chainCount?: number): Hex;
|
|
196
|
-
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, buildMockSignature, };
|
|
204
|
+
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, 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, };
|
|
197
205
|
export type { ChainSession, ChainDigest, ResolvedSessionSignerSet, SessionData, SmartSessionModeType, SessionDetails, };
|
|
198
206
|
//# 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":"AACA,OAAO,EACL,KAAK,OAAO,EAMZ,KAAK,GAAG,EAOR,KAAK,mBAAmB,EAKzB,MAAM,MAAM,CAAA;AAcb,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"smart-sessions.d.ts","sourceRoot":"","sources":["../../../../modules/validators/smart-sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,10 @@ 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.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;
|
|
@@ -80,12 +81,20 @@ exports.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG = SMART_SESSIONS_FALLBACK_T
|
|
|
80
81
|
const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION = '0x00000002';
|
|
81
82
|
exports.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION = SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION;
|
|
82
83
|
const SPENDING_LIMITS_POLICY_ADDRESS = '0x00000088d48cf102a8cdb0137a9b173f957c6343';
|
|
84
|
+
exports.SPENDING_LIMITS_POLICY_ADDRESS = SPENDING_LIMITS_POLICY_ADDRESS;
|
|
83
85
|
const TIME_FRAME_POLICY_ADDRESS = '0x8177451511de0577b911c254e9551d981c26dc72';
|
|
86
|
+
exports.TIME_FRAME_POLICY_ADDRESS = TIME_FRAME_POLICY_ADDRESS;
|
|
84
87
|
const SUDO_POLICY_ADDRESS = '0x0000003111cd8e92337c100f22b7a9dbf8dee301';
|
|
88
|
+
exports.SUDO_POLICY_ADDRESS = SUDO_POLICY_ADDRESS;
|
|
85
89
|
const UNIVERSAL_ACTION_POLICY_ADDRESS = '0x0000006dda6c463511c4e9b05cfc34c1247fcf1f';
|
|
90
|
+
exports.UNIVERSAL_ACTION_POLICY_ADDRESS = UNIVERSAL_ACTION_POLICY_ADDRESS;
|
|
86
91
|
const USAGE_LIMIT_POLICY_ADDRESS = '0x1f34ef8311345a3a4a4566af321b313052f51493';
|
|
92
|
+
exports.USAGE_LIMIT_POLICY_ADDRESS = USAGE_LIMIT_POLICY_ADDRESS;
|
|
87
93
|
const VALUE_LIMIT_POLICY_ADDRESS = '0x730da93267e7e513e932301b47f2ac7d062abc83';
|
|
88
|
-
|
|
94
|
+
exports.VALUE_LIMIT_POLICY_ADDRESS = VALUE_LIMIT_POLICY_ADDRESS;
|
|
95
|
+
const INTENT_EXECUTION_POLICY_ADDRESS = '0xe9eA54d063975cDee9e06b7636d5563d95a7A23C';
|
|
96
|
+
exports.INTENT_EXECUTION_POLICY_ADDRESS = INTENT_EXECUTION_POLICY_ADDRESS;
|
|
97
|
+
const INTENT_EXECUTION_POLICY_ADDRESS_DEV = '0xa09b47de6e510cbdc18b97e9239bedcb44fb4901';
|
|
89
98
|
const ACTION_CONDITION_EQUAL = 0;
|
|
90
99
|
const ACTION_CONDITION_GREATER_THAN = 1;
|
|
91
100
|
const ACTION_CONDITION_LESS_THAN = 2;
|
|
@@ -241,7 +250,7 @@ function packSignature(signers, validatorSignature) {
|
|
|
241
250
|
async function getSessionDetails(account, sessions, provider, useDevContracts) {
|
|
242
251
|
const lockTag = '0x000000000000000000000000';
|
|
243
252
|
const sessionNonces = await Promise.all(sessions.map((session) => getSessionNonce(account, session, lockTag, provider, useDevContracts)));
|
|
244
|
-
const sessionDatas = sessions.map((session) => getSessionData(session));
|
|
253
|
+
const sessionDatas = sessions.map((session) => getSessionData(session, useDevContracts));
|
|
245
254
|
const signedSessions = sessionDatas.map((session, index) => getSignedSession(account, lockTag, session, sessionNonces[index], useDevContracts));
|
|
246
255
|
const chains = sessions.map((session) => session.chain);
|
|
247
256
|
const hashesAndChainIds = signedSessions.map((session, index) => ({
|
|
@@ -370,7 +379,7 @@ function getSignedSession(account, lockTag, session, nonce, useDevContracts) {
|
|
|
370
379
|
};
|
|
371
380
|
}
|
|
372
381
|
async function getEnableSessionCall(account, session, enableSessionSignature, hashesAndChainIds, sessionToEnableIndex, useDevContracts) {
|
|
373
|
-
const sessionData = getSessionData(session);
|
|
382
|
+
const sessionData = getSessionData(session, useDevContracts);
|
|
374
383
|
const permissionId = getPermissionId(session);
|
|
375
384
|
return {
|
|
376
385
|
to: getSmartSessionEmissaryAddress(useDevContracts),
|
|
@@ -399,7 +408,7 @@ async function getEnableSessionCall(account, session, enableSessionSignature, ha
|
|
|
399
408
|
}),
|
|
400
409
|
};
|
|
401
410
|
}
|
|
402
|
-
function getSessionData(session) {
|
|
411
|
+
function getSessionData(session, useDevContracts) {
|
|
403
412
|
const validator = (0, core_1.getValidator)(session.owners);
|
|
404
413
|
const allowedContent = [
|
|
405
414
|
{
|
|
@@ -426,6 +435,7 @@ function getSessionData(session) {
|
|
|
426
435
|
},
|
|
427
436
|
],
|
|
428
437
|
};
|
|
438
|
+
const userHasFallbackAction = session.actions?.some((action) => !('target' in action) && !('selector' in action));
|
|
429
439
|
const injectedActions = [
|
|
430
440
|
// Native token wrapping
|
|
431
441
|
{
|
|
@@ -438,13 +448,12 @@ function getSessionData(session) {
|
|
|
438
448
|
stateMutability: 'payable',
|
|
439
449
|
}),
|
|
440
450
|
},
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
],
|
|
447
|
-
},
|
|
451
|
+
// Only inject the intent-execution fallback if the user hasn't defined their own
|
|
452
|
+
// fallback action — otherwise both map to the same actionId and their policies merge,
|
|
453
|
+
// causing IntentExecutionPolicy to be required for all fallback calls
|
|
454
|
+
...(!userHasFallbackAction
|
|
455
|
+
? [{ policies: [{ type: 'intent-execution' }] }]
|
|
456
|
+
: []),
|
|
448
457
|
];
|
|
449
458
|
const actions = session.actions
|
|
450
459
|
? [...session.actions, ...injectedActions].map((action) => ({
|
|
@@ -454,7 +463,7 @@ function getSessionData(session) {
|
|
|
454
463
|
actionTarget: 'target' in action
|
|
455
464
|
? action.target
|
|
456
465
|
: SMART_SESSIONS_FALLBACK_TARGET_FLAG,
|
|
457
|
-
actionPolicies: action.policies?.map((policy) => getPolicyData(policy)) ?? [
|
|
466
|
+
actionPolicies: action.policies?.map((policy) => getPolicyData(policy, useDevContracts)) ?? [
|
|
458
467
|
{
|
|
459
468
|
policy: SUDO_POLICY_ADDRESS,
|
|
460
469
|
initData: '0x',
|
|
@@ -492,7 +501,7 @@ function getPermissionId(session) {
|
|
|
492
501
|
sessionData.salt,
|
|
493
502
|
]));
|
|
494
503
|
}
|
|
495
|
-
function getPolicyData(policy) {
|
|
504
|
+
function getPolicyData(policy, useDevContracts) {
|
|
496
505
|
switch (policy.type) {
|
|
497
506
|
case 'sudo':
|
|
498
507
|
return {
|
|
@@ -501,7 +510,9 @@ function getPolicyData(policy) {
|
|
|
501
510
|
};
|
|
502
511
|
case 'intent-execution':
|
|
503
512
|
return {
|
|
504
|
-
policy:
|
|
513
|
+
policy: useDevContracts
|
|
514
|
+
? INTENT_EXECUTION_POLICY_ADDRESS_DEV
|
|
515
|
+
: INTENT_EXECUTION_POLICY_ADDRESS,
|
|
505
516
|
initData: '0x',
|
|
506
517
|
};
|
|
507
518
|
case 'universal-action': {
|
|
@@ -5,29 +5,249 @@ const chains_1 = require("viem/chains");
|
|
|
5
5
|
const vitest_1 = require("vitest");
|
|
6
6
|
const consts_1 = require("../../../test/consts");
|
|
7
7
|
const smart_sessions_1 = require("./smart-sessions");
|
|
8
|
-
//
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// Shared fixtures
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
9
11
|
const baseSession = {
|
|
10
12
|
chain: chains_1.base,
|
|
11
|
-
owners: {
|
|
12
|
-
type: 'ecdsa',
|
|
13
|
-
accounts: [consts_1.accountA],
|
|
14
|
-
},
|
|
13
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA] },
|
|
15
14
|
};
|
|
16
|
-
// Session with an explicit action + sudo policy
|
|
17
15
|
const sessionWithAction = {
|
|
18
16
|
chain: chains_1.base,
|
|
19
|
-
owners: {
|
|
20
|
-
type: 'ecdsa',
|
|
21
|
-
accounts: [consts_1.accountA],
|
|
22
|
-
},
|
|
17
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA] },
|
|
23
18
|
actions: [
|
|
24
19
|
{
|
|
25
20
|
target: '0x1111111111111111111111111111111111111111',
|
|
26
|
-
selector: '0xa9059cbb',
|
|
21
|
+
selector: '0xa9059cbb',
|
|
27
22
|
policies: [{ type: 'sudo' }],
|
|
28
23
|
},
|
|
29
24
|
],
|
|
30
25
|
};
|
|
26
|
+
const dummySig = `0x${'00'.repeat(65)}`;
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// A. Policy encoding
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
(0, vitest_1.describe)('getPolicyData', () => {
|
|
31
|
+
(0, vitest_1.test)('sudo → SUDO_POLICY_ADDRESS, empty initData', () => {
|
|
32
|
+
const result = (0, smart_sessions_1.getPolicyData)({ type: 'sudo' });
|
|
33
|
+
(0, vitest_1.expect)(result.policy).toBe(smart_sessions_1.SUDO_POLICY_ADDRESS);
|
|
34
|
+
(0, vitest_1.expect)(result.initData).toBe('0x');
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.test)('intent-execution → INTENT_EXECUTION_POLICY_ADDRESS, empty initData', () => {
|
|
37
|
+
const result = (0, smart_sessions_1.getPolicyData)({ type: 'intent-execution' });
|
|
38
|
+
(0, vitest_1.expect)(result.policy).toBe(smart_sessions_1.INTENT_EXECUTION_POLICY_ADDRESS);
|
|
39
|
+
(0, vitest_1.expect)(result.initData).toBe('0x');
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.test)('spending-limits encodes token addresses and amounts', () => {
|
|
42
|
+
const token = '0xaabbccdd00000000000000000000000000000001';
|
|
43
|
+
const result = (0, smart_sessions_1.getPolicyData)({
|
|
44
|
+
type: 'spending-limits',
|
|
45
|
+
limits: [{ token, amount: 1000n }],
|
|
46
|
+
});
|
|
47
|
+
(0, vitest_1.expect)(result.policy).toBe(smart_sessions_1.SPENDING_LIMITS_POLICY_ADDRESS);
|
|
48
|
+
const expected = (0, viem_1.encodeAbiParameters)([{ type: 'address[]' }, { type: 'uint256[]' }], [[token], [1000n]]);
|
|
49
|
+
(0, vitest_1.expect)(result.initData).toBe(expected);
|
|
50
|
+
});
|
|
51
|
+
(0, vitest_1.test)('time-frame encodes validUntil/validAfter in seconds (ms → s)', () => {
|
|
52
|
+
const validUntil = 1_800_000_000_000;
|
|
53
|
+
const validAfter = 1_700_000_000_000;
|
|
54
|
+
const result = (0, smart_sessions_1.getPolicyData)({ type: 'time-frame', validUntil, validAfter });
|
|
55
|
+
(0, vitest_1.expect)(result.policy).toBe(smart_sessions_1.TIME_FRAME_POLICY_ADDRESS);
|
|
56
|
+
const expected = (0, viem_1.encodePacked)(['uint48', 'uint48'], [Math.floor(validUntil / 1000), Math.floor(validAfter / 1000)]);
|
|
57
|
+
(0, vitest_1.expect)(result.initData).toBe(expected);
|
|
58
|
+
});
|
|
59
|
+
(0, vitest_1.test)('usage-limit encodes limit as uint128', () => {
|
|
60
|
+
const result = (0, smart_sessions_1.getPolicyData)({ type: 'usage-limit', limit: 5n });
|
|
61
|
+
(0, vitest_1.expect)(result.policy).toBe(smart_sessions_1.USAGE_LIMIT_POLICY_ADDRESS);
|
|
62
|
+
(0, vitest_1.expect)(result.initData).toBe((0, viem_1.encodePacked)(['uint128'], [5n]));
|
|
63
|
+
});
|
|
64
|
+
(0, vitest_1.test)('value-limit encodes limit as uint256', () => {
|
|
65
|
+
const limit = (0, viem_1.parseEther)('1');
|
|
66
|
+
const result = (0, smart_sessions_1.getPolicyData)({ type: 'value-limit', limit });
|
|
67
|
+
(0, vitest_1.expect)(result.policy).toBe(smart_sessions_1.VALUE_LIMIT_POLICY_ADDRESS);
|
|
68
|
+
(0, vitest_1.expect)(result.initData).toBe((0, viem_1.encodeAbiParameters)([{ type: 'uint256' }], [limit]));
|
|
69
|
+
});
|
|
70
|
+
(0, vitest_1.test)('universal-action → UNIVERSAL_ACTION_POLICY_ADDRESS, non-empty initData', () => {
|
|
71
|
+
const result = (0, smart_sessions_1.getPolicyData)({
|
|
72
|
+
type: 'universal-action',
|
|
73
|
+
valueLimitPerUse: 0n,
|
|
74
|
+
rules: [
|
|
75
|
+
{
|
|
76
|
+
condition: 'equal',
|
|
77
|
+
calldataOffset: 4n,
|
|
78
|
+
referenceValue: 100n,
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
});
|
|
82
|
+
(0, vitest_1.expect)(result.policy).toBe(smart_sessions_1.UNIVERSAL_ACTION_POLICY_ADDRESS);
|
|
83
|
+
(0, vitest_1.expect)(result.initData.length).toBeGreaterThan(2);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
// B. getSessionData
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
(0, vitest_1.describe)('getSessionData', () => {
|
|
90
|
+
(0, vitest_1.test)('no actions → single sudoAction fallback', () => {
|
|
91
|
+
const data = (0, smart_sessions_1.getSessionData)(baseSession);
|
|
92
|
+
(0, vitest_1.expect)(data.actions).toHaveLength(1);
|
|
93
|
+
(0, vitest_1.expect)(data.actions[0].actionTarget).toBe(smart_sessions_1.SMART_SESSIONS_FALLBACK_TARGET_FLAG);
|
|
94
|
+
(0, vitest_1.expect)(data.actions[0].actionTargetSelector).toBe(smart_sessions_1.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG);
|
|
95
|
+
});
|
|
96
|
+
(0, vitest_1.test)('explicit actions → user action + 2 injected (WETH deposit + intent-execution fallback)', () => {
|
|
97
|
+
const data = (0, smart_sessions_1.getSessionData)(sessionWithAction);
|
|
98
|
+
(0, vitest_1.expect)(data.actions).toHaveLength(3);
|
|
99
|
+
(0, vitest_1.expect)(data.actions[0].actionTarget).toBe('0x1111111111111111111111111111111111111111');
|
|
100
|
+
// injected WETH deposit — target is the wrapped token (non-zero address)
|
|
101
|
+
(0, vitest_1.expect)(data.actions[1].actionTarget).not.toBe('0x0000000000000000000000000000000000000000');
|
|
102
|
+
// injected intent-execution fallback
|
|
103
|
+
(0, vitest_1.expect)(data.actions[2].actionTarget).toBe(smart_sessions_1.SMART_SESSIONS_FALLBACK_TARGET_FLAG);
|
|
104
|
+
});
|
|
105
|
+
(0, vitest_1.test)('multiple policies on one action', () => {
|
|
106
|
+
const session = {
|
|
107
|
+
chain: chains_1.base,
|
|
108
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA] },
|
|
109
|
+
actions: [
|
|
110
|
+
{
|
|
111
|
+
target: '0x2222222222222222222222222222222222222222',
|
|
112
|
+
selector: '0x12345678',
|
|
113
|
+
policies: [{ type: 'sudo' }, { type: 'usage-limit', limit: 3n }],
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
};
|
|
117
|
+
const data = (0, smart_sessions_1.getSessionData)(session);
|
|
118
|
+
(0, vitest_1.expect)(data.actions[0].actionPolicies).toHaveLength(2);
|
|
119
|
+
(0, vitest_1.expect)(data.actions[0].actionPolicies[0].policy).toBe(smart_sessions_1.SUDO_POLICY_ADDRESS);
|
|
120
|
+
(0, vitest_1.expect)(data.actions[0].actionPolicies[1].policy).toBe(smart_sessions_1.USAGE_LIMIT_POLICY_ADDRESS);
|
|
121
|
+
});
|
|
122
|
+
(0, vitest_1.test)('salt is always zeroHash', () => {
|
|
123
|
+
(0, vitest_1.expect)((0, smart_sessions_1.getSessionData)(baseSession).salt).toBe(viem_1.zeroHash);
|
|
124
|
+
(0, vitest_1.expect)((0, smart_sessions_1.getSessionData)(sessionWithAction).salt).toBe(viem_1.zeroHash);
|
|
125
|
+
});
|
|
126
|
+
(0, vitest_1.test)('erc7739Policies has sudo erc1271 policy', () => {
|
|
127
|
+
const data = (0, smart_sessions_1.getSessionData)(baseSession);
|
|
128
|
+
(0, vitest_1.expect)(data.erc7739Policies.erc1271Policies[0].policy).toBe(smart_sessions_1.SUDO_POLICY_ADDRESS);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
// C. getPermissionId
|
|
133
|
+
// ---------------------------------------------------------------------------
|
|
134
|
+
(0, vitest_1.describe)('getPermissionId', () => {
|
|
135
|
+
(0, vitest_1.test)('deterministic — same session returns same id', () => {
|
|
136
|
+
(0, vitest_1.expect)((0, smart_sessions_1.getPermissionId)(baseSession)).toBe((0, smart_sessions_1.getPermissionId)(baseSession));
|
|
137
|
+
});
|
|
138
|
+
(0, vitest_1.test)('different owners → different permissionId', () => {
|
|
139
|
+
const sessionB = {
|
|
140
|
+
chain: chains_1.base,
|
|
141
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountB] },
|
|
142
|
+
};
|
|
143
|
+
(0, vitest_1.expect)((0, smart_sessions_1.getPermissionId)(baseSession)).not.toBe((0, smart_sessions_1.getPermissionId)(sessionB));
|
|
144
|
+
});
|
|
145
|
+
(0, vitest_1.test)('actions do not affect permissionId (only validator identity does)', () => {
|
|
146
|
+
// permissionId is derived from sessionValidator + sessionValidatorInitData + salt,
|
|
147
|
+
// NOT from actions — so same owner with different actions yields the same id
|
|
148
|
+
(0, vitest_1.expect)((0, smart_sessions_1.getPermissionId)(baseSession)).toBe((0, smart_sessions_1.getPermissionId)(sessionWithAction));
|
|
149
|
+
});
|
|
150
|
+
(0, vitest_1.test)('returns 32-byte hex string', () => {
|
|
151
|
+
const id = (0, smart_sessions_1.getPermissionId)(baseSession);
|
|
152
|
+
(0, vitest_1.expect)(id).toMatch(/^0x[0-9a-f]{64}$/);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
// ---------------------------------------------------------------------------
|
|
156
|
+
// D. packSignature
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
158
|
+
(0, vitest_1.describe)('packSignature', () => {
|
|
159
|
+
(0, vitest_1.test)('verifyExecutions: false → MODE_USE (0x00) prefix', () => {
|
|
160
|
+
const signers = {
|
|
161
|
+
type: 'experimental_session',
|
|
162
|
+
session: baseSession,
|
|
163
|
+
verifyExecutions: false,
|
|
164
|
+
};
|
|
165
|
+
const result = (0, smart_sessions_1.packSignature)(signers, dummySig);
|
|
166
|
+
(0, vitest_1.expect)((0, viem_1.slice)(result, 0, 1)).toBe('0x00');
|
|
167
|
+
});
|
|
168
|
+
(0, vitest_1.test)('verifyExecutions: false → bytes 1-32 are the permissionId', () => {
|
|
169
|
+
const signers = {
|
|
170
|
+
type: 'experimental_session',
|
|
171
|
+
session: baseSession,
|
|
172
|
+
verifyExecutions: false,
|
|
173
|
+
};
|
|
174
|
+
const result = (0, smart_sessions_1.packSignature)(signers, dummySig);
|
|
175
|
+
const permissionId = (0, smart_sessions_1.getPermissionId)(baseSession);
|
|
176
|
+
(0, vitest_1.expect)((0, viem_1.slice)(result, 1, 33)).toBe(permissionId);
|
|
177
|
+
});
|
|
178
|
+
(0, vitest_1.test)('verifyExecutions: false → total length > 66 bytes', () => {
|
|
179
|
+
const signers = {
|
|
180
|
+
type: 'experimental_session',
|
|
181
|
+
session: baseSession,
|
|
182
|
+
verifyExecutions: false,
|
|
183
|
+
};
|
|
184
|
+
const result = (0, smart_sessions_1.packSignature)(signers, dummySig);
|
|
185
|
+
const byteLen = (result.length - 2) / 2;
|
|
186
|
+
(0, vitest_1.expect)(byteLen).toBeGreaterThan(66);
|
|
187
|
+
});
|
|
188
|
+
(0, vitest_1.test)('verifyExecutions: true + enableData → MODE_ENABLE (0x01) prefix', () => {
|
|
189
|
+
const signers = {
|
|
190
|
+
type: 'experimental_session',
|
|
191
|
+
session: baseSession,
|
|
192
|
+
verifyExecutions: true,
|
|
193
|
+
enableData: {
|
|
194
|
+
userSignature: dummySig,
|
|
195
|
+
hashesAndChainIds: [
|
|
196
|
+
{ chainId: BigInt(chains_1.base.id), sessionDigest: viem_1.zeroHash },
|
|
197
|
+
],
|
|
198
|
+
sessionToEnableIndex: 0,
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
const result = (0, smart_sessions_1.packSignature)(signers, dummySig);
|
|
202
|
+
(0, vitest_1.expect)((0, viem_1.slice)(result, 0, 1)).toBe('0x01');
|
|
203
|
+
});
|
|
204
|
+
(0, vitest_1.test)('verifyExecutions: true + enableData → longer output (has compressed payload)', () => {
|
|
205
|
+
const signers = {
|
|
206
|
+
type: 'experimental_session',
|
|
207
|
+
session: baseSession,
|
|
208
|
+
verifyExecutions: true,
|
|
209
|
+
enableData: {
|
|
210
|
+
userSignature: dummySig,
|
|
211
|
+
hashesAndChainIds: [
|
|
212
|
+
{ chainId: BigInt(chains_1.base.id), sessionDigest: viem_1.zeroHash },
|
|
213
|
+
],
|
|
214
|
+
sessionToEnableIndex: 0,
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
const result = (0, smart_sessions_1.packSignature)(signers, dummySig);
|
|
218
|
+
const byteLen = (result.length - 2) / 2;
|
|
219
|
+
(0, vitest_1.expect)(byteLen).toBeGreaterThan(33);
|
|
220
|
+
});
|
|
221
|
+
(0, vitest_1.test)('verifyExecutions: true, no enableData → MODE_USE (0x00) prefix', () => {
|
|
222
|
+
const signers = {
|
|
223
|
+
type: 'experimental_session',
|
|
224
|
+
session: baseSession,
|
|
225
|
+
verifyExecutions: true,
|
|
226
|
+
};
|
|
227
|
+
const result = (0, smart_sessions_1.packSignature)(signers, dummySig);
|
|
228
|
+
(0, vitest_1.expect)((0, viem_1.slice)(result, 0, 1)).toBe('0x00');
|
|
229
|
+
});
|
|
230
|
+
(0, vitest_1.test)('different owners produce different packed bytes', () => {
|
|
231
|
+
const sessionB = {
|
|
232
|
+
chain: chains_1.base,
|
|
233
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountB] },
|
|
234
|
+
};
|
|
235
|
+
const signersA = {
|
|
236
|
+
type: 'experimental_session',
|
|
237
|
+
session: baseSession,
|
|
238
|
+
verifyExecutions: false,
|
|
239
|
+
};
|
|
240
|
+
const signersB = {
|
|
241
|
+
type: 'experimental_session',
|
|
242
|
+
session: sessionB,
|
|
243
|
+
verifyExecutions: false,
|
|
244
|
+
};
|
|
245
|
+
(0, vitest_1.expect)((0, smart_sessions_1.packSignature)(signersA, dummySig)).not.toBe((0, smart_sessions_1.packSignature)(signersB, dummySig));
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
// ---------------------------------------------------------------------------
|
|
249
|
+
// E. buildMockSignature (existing tests preserved + extras)
|
|
250
|
+
// ---------------------------------------------------------------------------
|
|
31
251
|
(0, vitest_1.describe)('buildMockSignature', () => {
|
|
32
252
|
(0, vitest_1.test)('first 20 bytes are the emissary address', () => {
|
|
33
253
|
const sig = (0, smart_sessions_1.buildMockSignature)(baseSession);
|
|
@@ -36,26 +256,30 @@ const sessionWithAction = {
|
|
|
36
256
|
});
|
|
37
257
|
(0, vitest_1.test)('byte 20 is SMART_SESSION_MODE_ENABLE (0x01)', () => {
|
|
38
258
|
const sig = (0, smart_sessions_1.buildMockSignature)(baseSession);
|
|
39
|
-
// byte 21 in the sig = index 20 = the mode byte from packSignature
|
|
40
259
|
const modeByte = (0, viem_1.slice)(sig, 20, 21);
|
|
41
260
|
(0, vitest_1.expect)(modeByte).toBe('0x01');
|
|
42
261
|
});
|
|
43
262
|
(0, vitest_1.test)('total length is larger than just emissary + mode byte (has compressed payload)', () => {
|
|
44
263
|
const sig = (0, smart_sessions_1.buildMockSignature)(baseSession);
|
|
45
|
-
|
|
46
|
-
const byteLen = (sig.length - 2) / 2; // strip '0x', convert hex chars to bytes
|
|
264
|
+
const byteLen = (sig.length - 2) / 2;
|
|
47
265
|
(0, vitest_1.expect)(byteLen).toBeGreaterThan(21);
|
|
48
266
|
});
|
|
49
267
|
(0, vitest_1.test)('sessions with different actions produce different sigData', () => {
|
|
50
268
|
const sigBase = (0, smart_sessions_1.buildMockSignature)(baseSession);
|
|
51
269
|
const sigWithAction = (0, smart_sessions_1.buildMockSignature)(sessionWithAction);
|
|
52
|
-
// The session data (policies, targets) should differ → different compressed payloads
|
|
53
270
|
(0, vitest_1.expect)(sigBase).not.toBe(sigWithAction);
|
|
54
271
|
});
|
|
55
272
|
(0, vitest_1.test)('useDevContracts=true produces different emissary prefix', () => {
|
|
56
273
|
const sigProd = (0, smart_sessions_1.buildMockSignature)(baseSession, false);
|
|
57
274
|
const sigDev = (0, smart_sessions_1.buildMockSignature)(baseSession, true);
|
|
58
|
-
// First 20 bytes differ because prod vs dev emissary addresses differ
|
|
59
275
|
(0, vitest_1.expect)((0, viem_1.slice)(sigProd, 0, 20)).not.toBe((0, viem_1.slice)(sigDev, 0, 20));
|
|
60
276
|
});
|
|
277
|
+
(0, vitest_1.test)('chainCount=2 produces valid output (LibZip may compress smaller than chainCount=1)', () => {
|
|
278
|
+
const sig = (0, smart_sessions_1.buildMockSignature)(baseSession, false, 2);
|
|
279
|
+
// Must be at least emissaryAddress (20) + mode byte (1) + some payload
|
|
280
|
+
const byteLen = (sig.length - 2) / 2;
|
|
281
|
+
(0, vitest_1.expect)(byteLen).toBeGreaterThan(21);
|
|
282
|
+
// Must start with the emissary address
|
|
283
|
+
(0, vitest_1.expect)((0, viem_1.isAddressEqual)((0, viem_1.slice)(sig, 0, 20), smart_sessions_1.SMART_SESSION_EMISSARY_ADDRESS)).toBe(true);
|
|
284
|
+
});
|
|
61
285
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
declare const PROD_ORCHESTRATOR_URL = "https://v1.orchestrator.rhinestone.dev";
|
|
2
2
|
declare const RHINESTONE_SPOKE_POOL_ADDRESS = "0x000000000060f6e853447881951574cdd0663530";
|
|
3
|
-
declare const SDK_VERSION = "0.0.0-dev-
|
|
3
|
+
declare const SDK_VERSION = "0.0.0-dev-20260331174807";
|
|
4
4
|
export { PROD_ORCHESTRATOR_URL, RHINESTONE_SPOKE_POOL_ADDRESS, SDK_VERSION };
|
|
5
5
|
//# sourceMappingURL=consts.d.ts.map
|
|
@@ -5,5 +5,5 @@ const PROD_ORCHESTRATOR_URL = 'https://v1.orchestrator.rhinestone.dev';
|
|
|
5
5
|
exports.PROD_ORCHESTRATOR_URL = PROD_ORCHESTRATOR_URL;
|
|
6
6
|
const RHINESTONE_SPOKE_POOL_ADDRESS = '0x000000000060f6e853447881951574cdd0663530';
|
|
7
7
|
exports.RHINESTONE_SPOKE_POOL_ADDRESS = RHINESTONE_SPOKE_POOL_ADDRESS;
|
|
8
|
-
const SDK_VERSION = '0.0.0-dev-
|
|
8
|
+
const SDK_VERSION = '0.0.0-dev-20260331174807';
|
|
9
9
|
exports.SDK_VERSION = SDK_VERSION;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../orchestrator/registry.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAa,MAAM,MAAM,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,iBAAS,oBAAoB,IAAI,MAAM,EAAE,CAExC;AAMD,iBAAS,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAY7C;AAED,iBAAS,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../orchestrator/registry.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAa,MAAM,MAAM,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,iBAAS,oBAAoB,IAAI,MAAM,EAAE,CAExC;AAMD,iBAAS,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAY7C;AAED,iBAAS,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAarD;AAED,iBAAS,cAAc,CACrB,YAAY,EAAE,OAAO,EACrB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAWpB;AAED,iBAAS,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAY3E;AAED,iBAAS,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAY3E;AAED,iBAAS,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAM5C;AAED,iBAAS,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAG3C;AAED,iBAAS,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAS3E;AAED,iBAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAO1D;AAED,iBAAS,2BAA2B,CAAC,UAAU,CAAC,EAAE,OAAO;;EAaxD;AAED,iBAAS,mBAAmB,CAC1B,KAAK,EAAE,WAAW,GAAG,OAAO,EAC5B,OAAO,EAAE,MAAM,GACd,OAAO,CAKT;AAED,iBAAS,8BAA8B,IAAI;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,WAAW,EAAE,CAAA;CACtB,EAAE,CAMF;AAED,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,EACT,uBAAuB,EACvB,2BAA2B,EAC3B,mBAAmB,EACnB,8BAA8B,GAC/B,CAAA"}
|
|
@@ -38,7 +38,11 @@ function getWrappedTokenAddress(chain) {
|
|
|
38
38
|
if (!chainEntry) {
|
|
39
39
|
throw new error_1.UnsupportedChainError(chain.id);
|
|
40
40
|
}
|
|
41
|
-
const token = chainEntry.wrappedNativeToken
|
|
41
|
+
const token = chainEntry.wrappedNativeToken ??
|
|
42
|
+
chainEntry.tokens.find((t) => t.symbol === 'WETH');
|
|
43
|
+
if (!token) {
|
|
44
|
+
throw new error_1.UnsupportedTokenError('WETH', chain.id);
|
|
45
|
+
}
|
|
42
46
|
return token.address;
|
|
43
47
|
}
|
|
44
48
|
function getTokenSymbol(tokenAddress, chainId) {
|
package/dist/src/types.d.ts
CHANGED
|
@@ -257,15 +257,18 @@ interface SessionEnableData {
|
|
|
257
257
|
interface ChainSessionConfig {
|
|
258
258
|
session: Session;
|
|
259
259
|
enableData?: SessionEnableData;
|
|
260
|
+
verifyExecutions?: boolean;
|
|
260
261
|
}
|
|
261
262
|
interface SingleSessionSignerSet {
|
|
262
263
|
type: 'experimental_session';
|
|
263
264
|
session: Session;
|
|
264
265
|
enableData?: SessionEnableData;
|
|
266
|
+
verifyExecutions?: boolean;
|
|
265
267
|
}
|
|
266
268
|
interface PerChainSessionSignerSet {
|
|
267
269
|
type: 'experimental_session';
|
|
268
270
|
sessions: Record<number, ChainSessionConfig>;
|
|
271
|
+
verifyExecutions?: boolean;
|
|
269
272
|
}
|
|
270
273
|
type SessionSignerSet = SingleSessionSignerSet | PerChainSessionSignerSet;
|
|
271
274
|
interface GuardiansSignerSet {
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../types.ts"],"names":[],"mappings":"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"}
|
package/dist/test/utils/utils.js
CHANGED
|
@@ -5,7 +5,7 @@ exports.assertNotNull = assertNotNull;
|
|
|
5
5
|
const chains_1 = require("viem/chains");
|
|
6
6
|
const vitest_1 = require("vitest");
|
|
7
7
|
function getForkUrl(chain) {
|
|
8
|
-
// @ts-
|
|
8
|
+
// @ts-expect-error
|
|
9
9
|
const alchemyApiKey = import.meta.env.VITE_ALCHEMY_API_KEY;
|
|
10
10
|
if (!alchemyApiKey) {
|
|
11
11
|
throw new Error('VITE_ALCHEMY_API_KEY is not set');
|