@rhinestone/sdk 1.4.1 → 1.4.2
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/index.d.ts +1 -0
- package/dist/src/accounts/index.d.ts.map +1 -1
- package/dist/src/accounts/index.js +8 -2
- 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 +465 -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 +76 -7
- package/dist/src/execution/utils.test.js +183 -0
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- 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 +4 -1
- package/dist/src/modules/validators/policies/claim/permit2.d.ts +55 -0
- package/dist/src/modules/validators/policies/claim/permit2.d.ts.map +1 -0
- package/dist/src/modules/validators/policies/claim/permit2.js +239 -0
- package/dist/src/modules/validators/policies/claim/permit2.test.d.ts +2 -0
- package/dist/src/modules/validators/policies/claim/permit2.test.d.ts.map +1 -0
- package/dist/src/modules/validators/policies/claim/permit2.test.js +519 -0
- package/dist/src/modules/validators/policies/claim/types.d.ts +12 -0
- package/dist/src/modules/validators/policies/claim/types.d.ts.map +1 -0
- package/dist/src/modules/validators/policies/claim/types.js +18 -0
- package/dist/src/modules/validators/smart-sessions.d.ts +14 -3
- package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
- package/dist/src/modules/validators/smart-sessions.js +51 -16
- package/dist/src/modules/validators/smart-sessions.test.js +266 -16
- package/dist/src/orchestrator/client.d.ts.map +1 -1
- package/dist/src/orchestrator/client.js +1 -0
- package/dist/src/orchestrator/consts.d.ts +3 -2
- package/dist/src/orchestrator/consts.d.ts.map +1 -1
- package/dist/src/orchestrator/consts.js +4 -2
- package/dist/src/orchestrator/index.d.ts +2 -2
- package/dist/src/orchestrator/index.d.ts.map +1 -1
- package/dist/src/orchestrator/registry.d.ts.map +1 -1
- package/dist/src/orchestrator/registry.js +5 -1
- package/dist/src/orchestrator/types.d.ts +1 -0
- package/dist/src/orchestrator/types.d.ts.map +1 -1
- package/dist/src/types.d.ts +38 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/test/utils/utils.js +1 -1
- package/package.json +2 -2
|
@@ -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.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;
|
|
@@ -27,6 +28,7 @@ const common_1 = require("../common");
|
|
|
27
28
|
const core_1 = require("./core");
|
|
28
29
|
Object.defineProperty(exports, "SMART_SESSION_EMISSARY_ADDRESS", { enumerable: true, get: function () { return core_1.SMART_SESSION_EMISSARY_ADDRESS; } });
|
|
29
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");
|
|
30
32
|
const types = {
|
|
31
33
|
PolicyData: [
|
|
32
34
|
{ name: 'policy', type: 'address' },
|
|
@@ -79,13 +81,32 @@ const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG = '0x00000001';
|
|
|
79
81
|
exports.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG = SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG;
|
|
80
82
|
const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION = '0x00000002';
|
|
81
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...0001 is the ecRecover precompile; calls to it fail
|
|
87
|
+
// silently because preclaimops are failure-tolerant. Selector 0x69123456 is
|
|
88
|
+
// intentionally uncommon. Note: this address is the same as
|
|
89
|
+
// SMART_SESSIONS_FALLBACK_TARGET_FLAG — that is harmless because they operate in
|
|
90
|
+
// different contexts (action matching vs. literal execution target).
|
|
91
|
+
const DUMMY_PRECLAIMOP_TARGET = '0x0000000000000000000000000000000000000001';
|
|
92
|
+
exports.DUMMY_PRECLAIMOP_TARGET = DUMMY_PRECLAIMOP_TARGET;
|
|
93
|
+
const DUMMY_PRECLAIMOP_SELECTOR = '0x69123456';
|
|
94
|
+
exports.DUMMY_PRECLAIMOP_SELECTOR = DUMMY_PRECLAIMOP_SELECTOR;
|
|
82
95
|
const SPENDING_LIMITS_POLICY_ADDRESS = '0x00000088d48cf102a8cdb0137a9b173f957c6343';
|
|
96
|
+
exports.SPENDING_LIMITS_POLICY_ADDRESS = SPENDING_LIMITS_POLICY_ADDRESS;
|
|
83
97
|
const TIME_FRAME_POLICY_ADDRESS = '0x8177451511de0577b911c254e9551d981c26dc72';
|
|
98
|
+
exports.TIME_FRAME_POLICY_ADDRESS = TIME_FRAME_POLICY_ADDRESS;
|
|
84
99
|
const SUDO_POLICY_ADDRESS = '0x0000003111cd8e92337c100f22b7a9dbf8dee301';
|
|
100
|
+
exports.SUDO_POLICY_ADDRESS = SUDO_POLICY_ADDRESS;
|
|
85
101
|
const UNIVERSAL_ACTION_POLICY_ADDRESS = '0x0000006dda6c463511c4e9b05cfc34c1247fcf1f';
|
|
102
|
+
exports.UNIVERSAL_ACTION_POLICY_ADDRESS = UNIVERSAL_ACTION_POLICY_ADDRESS;
|
|
86
103
|
const USAGE_LIMIT_POLICY_ADDRESS = '0x1f34ef8311345a3a4a4566af321b313052f51493';
|
|
104
|
+
exports.USAGE_LIMIT_POLICY_ADDRESS = USAGE_LIMIT_POLICY_ADDRESS;
|
|
87
105
|
const VALUE_LIMIT_POLICY_ADDRESS = '0x730da93267e7e513e932301b47f2ac7d062abc83';
|
|
88
|
-
|
|
106
|
+
exports.VALUE_LIMIT_POLICY_ADDRESS = VALUE_LIMIT_POLICY_ADDRESS;
|
|
107
|
+
const INTENT_EXECUTION_POLICY_ADDRESS = '0xe9eA54d063975cDee9e06b7636d5563d95a7A23C';
|
|
108
|
+
exports.INTENT_EXECUTION_POLICY_ADDRESS = INTENT_EXECUTION_POLICY_ADDRESS;
|
|
109
|
+
const INTENT_EXECUTION_POLICY_ADDRESS_DEV = '0xa09b47de6e510cbdc18b97e9239bedcb44fb4901';
|
|
89
110
|
const ACTION_CONDITION_EQUAL = 0;
|
|
90
111
|
const ACTION_CONDITION_GREATER_THAN = 1;
|
|
91
112
|
const ACTION_CONDITION_LESS_THAN = 2;
|
|
@@ -227,7 +248,7 @@ function packSignature(signers, validatorSignature) {
|
|
|
227
248
|
const SIGNATURE_IS_VALID_SIG_1271 = '0x00';
|
|
228
249
|
const policyDataOffset = BigInt(64 + (0, viem_1.size)(validatorSignature));
|
|
229
250
|
const mode = SIGNATURE_IS_VALID_SIG_1271;
|
|
230
|
-
const policySpecificData = '0x';
|
|
251
|
+
const policySpecificData = signers.claimPolicyData ?? '0x';
|
|
231
252
|
const signature = (0, viem_1.encodePacked)(['bytes1', 'bytes32', 'uint256', 'bytes', 'bytes'], [
|
|
232
253
|
mode,
|
|
233
254
|
permissionId,
|
|
@@ -241,7 +262,7 @@ function packSignature(signers, validatorSignature) {
|
|
|
241
262
|
async function getSessionDetails(account, sessions, provider, useDevContracts) {
|
|
242
263
|
const lockTag = '0x000000000000000000000000';
|
|
243
264
|
const sessionNonces = await Promise.all(sessions.map((session) => getSessionNonce(account, session, lockTag, provider, useDevContracts)));
|
|
244
|
-
const sessionDatas = sessions.map((session) => getSessionData(session));
|
|
265
|
+
const sessionDatas = sessions.map((session) => getSessionData(session, useDevContracts));
|
|
245
266
|
const signedSessions = sessionDatas.map((session, index) => getSignedSession(account, lockTag, session, sessionNonces[index], useDevContracts));
|
|
246
267
|
const chains = sessions.map((session) => session.chain);
|
|
247
268
|
const hashesAndChainIds = signedSessions.map((session, index) => ({
|
|
@@ -370,7 +391,7 @@ function getSignedSession(account, lockTag, session, nonce, useDevContracts) {
|
|
|
370
391
|
};
|
|
371
392
|
}
|
|
372
393
|
async function getEnableSessionCall(account, session, enableSessionSignature, hashesAndChainIds, sessionToEnableIndex, useDevContracts) {
|
|
373
|
-
const sessionData = getSessionData(session);
|
|
394
|
+
const sessionData = getSessionData(session, useDevContracts);
|
|
374
395
|
const permissionId = getPermissionId(session);
|
|
375
396
|
return {
|
|
376
397
|
to: getSmartSessionEmissaryAddress(useDevContracts),
|
|
@@ -399,7 +420,7 @@ async function getEnableSessionCall(account, session, enableSessionSignature, ha
|
|
|
399
420
|
}),
|
|
400
421
|
};
|
|
401
422
|
}
|
|
402
|
-
function getSessionData(session) {
|
|
423
|
+
function getSessionData(session, useDevContracts) {
|
|
403
424
|
const validator = (0, core_1.getValidator)(session.owners);
|
|
404
425
|
const allowedContent = [
|
|
405
426
|
{
|
|
@@ -426,6 +447,7 @@ function getSessionData(session) {
|
|
|
426
447
|
},
|
|
427
448
|
],
|
|
428
449
|
};
|
|
450
|
+
const userHasFallbackAction = session.actions?.some((action) => !('target' in action) && !('selector' in action));
|
|
429
451
|
const injectedActions = [
|
|
430
452
|
// Native token wrapping
|
|
431
453
|
{
|
|
@@ -438,15 +460,22 @@ function getSessionData(session) {
|
|
|
438
460
|
stateMutability: 'payable',
|
|
439
461
|
}),
|
|
440
462
|
},
|
|
463
|
+
// Only inject the intent-execution fallback if the user hasn't defined their own
|
|
464
|
+
// fallback action — otherwise both map to the same actionId and their policies merge,
|
|
465
|
+
// causing IntentExecutionPolicy to be required for all fallback calls
|
|
466
|
+
...(!userHasFallbackAction
|
|
467
|
+
? [{ policies: [{ type: 'intent-execution' }] }]
|
|
468
|
+
: []),
|
|
469
|
+
// Dummy action: allows the filler to call verifyExecution in ENABLE mode using
|
|
470
|
+
// an injected dummy preclaimop so any session can be enabled on-chain without
|
|
471
|
+
// a separate UserOp, regardless of whether it has claim or action policies.
|
|
441
472
|
{
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
},
|
|
446
|
-
],
|
|
473
|
+
target: DUMMY_PRECLAIMOP_TARGET,
|
|
474
|
+
selector: DUMMY_PRECLAIMOP_SELECTOR,
|
|
475
|
+
policies: [{ type: 'sudo' }],
|
|
447
476
|
},
|
|
448
477
|
];
|
|
449
|
-
const actions = session.actions
|
|
478
|
+
const actions = session.actions?.length
|
|
450
479
|
? [...session.actions, ...injectedActions].map((action) => ({
|
|
451
480
|
actionTargetSelector: 'selector' in action
|
|
452
481
|
? action.selector
|
|
@@ -454,7 +483,7 @@ function getSessionData(session) {
|
|
|
454
483
|
actionTarget: 'target' in action
|
|
455
484
|
? action.target
|
|
456
485
|
: SMART_SESSIONS_FALLBACK_TARGET_FLAG,
|
|
457
|
-
actionPolicies: action.policies?.map((policy) => getPolicyData(policy)) ?? [
|
|
486
|
+
actionPolicies: action.policies?.map((policy) => getPolicyData(policy, useDevContracts)) ?? [
|
|
458
487
|
{
|
|
459
488
|
policy: SUDO_POLICY_ADDRESS,
|
|
460
489
|
initData: '0x',
|
|
@@ -468,7 +497,11 @@ function getSessionData(session) {
|
|
|
468
497
|
sessionValidatorInitData: validator.initData,
|
|
469
498
|
erc7739Policies: erc7739Data,
|
|
470
499
|
actions,
|
|
471
|
-
|
|
500
|
+
// Note: Permit2ClaimPolicy has no dev deployment — same address in all environments
|
|
501
|
+
claimPolicies: session.claimPolicies?.map((p) => ({
|
|
502
|
+
policy: permit2_1.PERMIT2_CLAIM_POLICY_ADDRESS,
|
|
503
|
+
initData: (0, permit2_1.encodePermit2ClaimPolicyInitData)(p),
|
|
504
|
+
})) ?? [],
|
|
472
505
|
};
|
|
473
506
|
}
|
|
474
507
|
function getPermissionId(session) {
|
|
@@ -492,7 +525,7 @@ function getPermissionId(session) {
|
|
|
492
525
|
sessionData.salt,
|
|
493
526
|
]));
|
|
494
527
|
}
|
|
495
|
-
function getPolicyData(policy) {
|
|
528
|
+
function getPolicyData(policy, useDevContracts) {
|
|
496
529
|
switch (policy.type) {
|
|
497
530
|
case 'sudo':
|
|
498
531
|
return {
|
|
@@ -501,7 +534,9 @@ function getPolicyData(policy) {
|
|
|
501
534
|
};
|
|
502
535
|
case 'intent-execution':
|
|
503
536
|
return {
|
|
504
|
-
policy:
|
|
537
|
+
policy: useDevContracts
|
|
538
|
+
? INTENT_EXECUTION_POLICY_ADDRESS_DEV
|
|
539
|
+
: INTENT_EXECUTION_POLICY_ADDRESS,
|
|
505
540
|
initData: '0x',
|
|
506
541
|
};
|
|
507
542
|
case 'universal-action': {
|
|
@@ -5,29 +5,275 @@ 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 + 3 injected (WETH deposit + intent-execution fallback + dummy preclaimop)', () => {
|
|
97
|
+
const data = (0, smart_sessions_1.getSessionData)(sessionWithAction);
|
|
98
|
+
(0, vitest_1.expect)(data.actions).toHaveLength(4);
|
|
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
|
+
// injected dummy preclaimop action
|
|
105
|
+
(0, vitest_1.expect)(data.actions[3].actionTarget).toBe(smart_sessions_1.DUMMY_PRECLAIMOP_TARGET);
|
|
106
|
+
(0, vitest_1.expect)(data.actions[3].actionTargetSelector).toBe(smart_sessions_1.DUMMY_PRECLAIMOP_SELECTOR);
|
|
107
|
+
});
|
|
108
|
+
(0, vitest_1.test)('dummy preclaimop action uses sudo policy', () => {
|
|
109
|
+
const data = (0, smart_sessions_1.getSessionData)(sessionWithAction);
|
|
110
|
+
const dummyAction = data.actions.find((a) => a.actionTargetSelector === smart_sessions_1.DUMMY_PRECLAIMOP_SELECTOR);
|
|
111
|
+
(0, vitest_1.expect)(dummyAction).toBeDefined();
|
|
112
|
+
(0, vitest_1.expect)(dummyAction.actionPolicies).toHaveLength(1);
|
|
113
|
+
(0, vitest_1.expect)(dummyAction.actionPolicies[0].policy).toBe(smart_sessions_1.SUDO_POLICY_ADDRESS);
|
|
114
|
+
(0, vitest_1.expect)(dummyAction.actionPolicies[0].initData).toBe('0x');
|
|
115
|
+
});
|
|
116
|
+
(0, vitest_1.test)('no explicit actions → sudoAction fallback only (dummy injected via injectedActions path is not used)', () => {
|
|
117
|
+
// Sessions without explicit actions use the [sudoAction] fallback directly,
|
|
118
|
+
// which covers all (target, selector) pairs — no dummy action needed.
|
|
119
|
+
const data = (0, smart_sessions_1.getSessionData)(baseSession);
|
|
120
|
+
(0, vitest_1.expect)(data.actions).toHaveLength(1);
|
|
121
|
+
(0, vitest_1.expect)(data.actions[0].actionTarget).toBe(smart_sessions_1.SMART_SESSIONS_FALLBACK_TARGET_FLAG);
|
|
122
|
+
});
|
|
123
|
+
(0, vitest_1.test)('empty actions array → same sudoAction fallback as no actions', () => {
|
|
124
|
+
// actions: [] is truthy but has no elements — must be treated the same as
|
|
125
|
+
// actions: undefined so injectedActions are not appended.
|
|
126
|
+
const sessionWithEmptyActions = { ...baseSession, actions: [] };
|
|
127
|
+
const data = (0, smart_sessions_1.getSessionData)(sessionWithEmptyActions);
|
|
128
|
+
(0, vitest_1.expect)(data.actions).toHaveLength(1);
|
|
129
|
+
(0, vitest_1.expect)(data.actions[0].actionTarget).toBe(smart_sessions_1.SMART_SESSIONS_FALLBACK_TARGET_FLAG);
|
|
130
|
+
});
|
|
131
|
+
(0, vitest_1.test)('multiple policies on one action', () => {
|
|
132
|
+
const session = {
|
|
133
|
+
chain: chains_1.base,
|
|
134
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA] },
|
|
135
|
+
actions: [
|
|
136
|
+
{
|
|
137
|
+
target: '0x2222222222222222222222222222222222222222',
|
|
138
|
+
selector: '0x12345678',
|
|
139
|
+
policies: [{ type: 'sudo' }, { type: 'usage-limit', limit: 3n }],
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
};
|
|
143
|
+
const data = (0, smart_sessions_1.getSessionData)(session);
|
|
144
|
+
(0, vitest_1.expect)(data.actions[0].actionPolicies).toHaveLength(2);
|
|
145
|
+
(0, vitest_1.expect)(data.actions[0].actionPolicies[0].policy).toBe(smart_sessions_1.SUDO_POLICY_ADDRESS);
|
|
146
|
+
(0, vitest_1.expect)(data.actions[0].actionPolicies[1].policy).toBe(smart_sessions_1.USAGE_LIMIT_POLICY_ADDRESS);
|
|
147
|
+
});
|
|
148
|
+
(0, vitest_1.test)('salt is always zeroHash', () => {
|
|
149
|
+
(0, vitest_1.expect)((0, smart_sessions_1.getSessionData)(baseSession).salt).toBe(viem_1.zeroHash);
|
|
150
|
+
(0, vitest_1.expect)((0, smart_sessions_1.getSessionData)(sessionWithAction).salt).toBe(viem_1.zeroHash);
|
|
151
|
+
});
|
|
152
|
+
(0, vitest_1.test)('erc7739Policies has sudo erc1271 policy', () => {
|
|
153
|
+
const data = (0, smart_sessions_1.getSessionData)(baseSession);
|
|
154
|
+
(0, vitest_1.expect)(data.erc7739Policies.erc1271Policies[0].policy).toBe(smart_sessions_1.SUDO_POLICY_ADDRESS);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
158
|
+
// C. getPermissionId
|
|
159
|
+
// ---------------------------------------------------------------------------
|
|
160
|
+
(0, vitest_1.describe)('getPermissionId', () => {
|
|
161
|
+
(0, vitest_1.test)('deterministic — same session returns same id', () => {
|
|
162
|
+
(0, vitest_1.expect)((0, smart_sessions_1.getPermissionId)(baseSession)).toBe((0, smart_sessions_1.getPermissionId)(baseSession));
|
|
163
|
+
});
|
|
164
|
+
(0, vitest_1.test)('different owners → different permissionId', () => {
|
|
165
|
+
const sessionB = {
|
|
166
|
+
chain: chains_1.base,
|
|
167
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountB] },
|
|
168
|
+
};
|
|
169
|
+
(0, vitest_1.expect)((0, smart_sessions_1.getPermissionId)(baseSession)).not.toBe((0, smart_sessions_1.getPermissionId)(sessionB));
|
|
170
|
+
});
|
|
171
|
+
(0, vitest_1.test)('actions do not affect permissionId (only validator identity does)', () => {
|
|
172
|
+
// permissionId is derived from sessionValidator + sessionValidatorInitData + salt,
|
|
173
|
+
// NOT from actions — so same owner with different actions yields the same id
|
|
174
|
+
(0, vitest_1.expect)((0, smart_sessions_1.getPermissionId)(baseSession)).toBe((0, smart_sessions_1.getPermissionId)(sessionWithAction));
|
|
175
|
+
});
|
|
176
|
+
(0, vitest_1.test)('returns 32-byte hex string', () => {
|
|
177
|
+
const id = (0, smart_sessions_1.getPermissionId)(baseSession);
|
|
178
|
+
(0, vitest_1.expect)(id).toMatch(/^0x[0-9a-f]{64}$/);
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
// ---------------------------------------------------------------------------
|
|
182
|
+
// D. packSignature
|
|
183
|
+
// ---------------------------------------------------------------------------
|
|
184
|
+
(0, vitest_1.describe)('packSignature', () => {
|
|
185
|
+
(0, vitest_1.test)('verifyExecutions: false → MODE_USE (0x00) prefix', () => {
|
|
186
|
+
const signers = {
|
|
187
|
+
type: 'experimental_session',
|
|
188
|
+
session: baseSession,
|
|
189
|
+
verifyExecutions: false,
|
|
190
|
+
};
|
|
191
|
+
const result = (0, smart_sessions_1.packSignature)(signers, dummySig);
|
|
192
|
+
(0, vitest_1.expect)((0, viem_1.slice)(result, 0, 1)).toBe('0x00');
|
|
193
|
+
});
|
|
194
|
+
(0, vitest_1.test)('verifyExecutions: false → bytes 1-32 are the permissionId', () => {
|
|
195
|
+
const signers = {
|
|
196
|
+
type: 'experimental_session',
|
|
197
|
+
session: baseSession,
|
|
198
|
+
verifyExecutions: false,
|
|
199
|
+
};
|
|
200
|
+
const result = (0, smart_sessions_1.packSignature)(signers, dummySig);
|
|
201
|
+
const permissionId = (0, smart_sessions_1.getPermissionId)(baseSession);
|
|
202
|
+
(0, vitest_1.expect)((0, viem_1.slice)(result, 1, 33)).toBe(permissionId);
|
|
203
|
+
});
|
|
204
|
+
(0, vitest_1.test)('verifyExecutions: false → total length > 66 bytes', () => {
|
|
205
|
+
const signers = {
|
|
206
|
+
type: 'experimental_session',
|
|
207
|
+
session: baseSession,
|
|
208
|
+
verifyExecutions: false,
|
|
209
|
+
};
|
|
210
|
+
const result = (0, smart_sessions_1.packSignature)(signers, dummySig);
|
|
211
|
+
const byteLen = (result.length - 2) / 2;
|
|
212
|
+
(0, vitest_1.expect)(byteLen).toBeGreaterThan(66);
|
|
213
|
+
});
|
|
214
|
+
(0, vitest_1.test)('verifyExecutions: true + enableData → MODE_ENABLE (0x01) prefix', () => {
|
|
215
|
+
const signers = {
|
|
216
|
+
type: 'experimental_session',
|
|
217
|
+
session: baseSession,
|
|
218
|
+
verifyExecutions: true,
|
|
219
|
+
enableData: {
|
|
220
|
+
userSignature: dummySig,
|
|
221
|
+
hashesAndChainIds: [
|
|
222
|
+
{ chainId: BigInt(chains_1.base.id), sessionDigest: viem_1.zeroHash },
|
|
223
|
+
],
|
|
224
|
+
sessionToEnableIndex: 0,
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
const result = (0, smart_sessions_1.packSignature)(signers, dummySig);
|
|
228
|
+
(0, vitest_1.expect)((0, viem_1.slice)(result, 0, 1)).toBe('0x01');
|
|
229
|
+
});
|
|
230
|
+
(0, vitest_1.test)('verifyExecutions: true + enableData → longer output (has compressed payload)', () => {
|
|
231
|
+
const signers = {
|
|
232
|
+
type: 'experimental_session',
|
|
233
|
+
session: baseSession,
|
|
234
|
+
verifyExecutions: true,
|
|
235
|
+
enableData: {
|
|
236
|
+
userSignature: dummySig,
|
|
237
|
+
hashesAndChainIds: [
|
|
238
|
+
{ chainId: BigInt(chains_1.base.id), sessionDigest: viem_1.zeroHash },
|
|
239
|
+
],
|
|
240
|
+
sessionToEnableIndex: 0,
|
|
241
|
+
},
|
|
242
|
+
};
|
|
243
|
+
const result = (0, smart_sessions_1.packSignature)(signers, dummySig);
|
|
244
|
+
const byteLen = (result.length - 2) / 2;
|
|
245
|
+
(0, vitest_1.expect)(byteLen).toBeGreaterThan(33);
|
|
246
|
+
});
|
|
247
|
+
(0, vitest_1.test)('verifyExecutions: true, no enableData → MODE_USE (0x00) prefix', () => {
|
|
248
|
+
const signers = {
|
|
249
|
+
type: 'experimental_session',
|
|
250
|
+
session: baseSession,
|
|
251
|
+
verifyExecutions: true,
|
|
252
|
+
};
|
|
253
|
+
const result = (0, smart_sessions_1.packSignature)(signers, dummySig);
|
|
254
|
+
(0, vitest_1.expect)((0, viem_1.slice)(result, 0, 1)).toBe('0x00');
|
|
255
|
+
});
|
|
256
|
+
(0, vitest_1.test)('different owners produce different packed bytes', () => {
|
|
257
|
+
const sessionB = {
|
|
258
|
+
chain: chains_1.base,
|
|
259
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountB] },
|
|
260
|
+
};
|
|
261
|
+
const signersA = {
|
|
262
|
+
type: 'experimental_session',
|
|
263
|
+
session: baseSession,
|
|
264
|
+
verifyExecutions: false,
|
|
265
|
+
};
|
|
266
|
+
const signersB = {
|
|
267
|
+
type: 'experimental_session',
|
|
268
|
+
session: sessionB,
|
|
269
|
+
verifyExecutions: false,
|
|
270
|
+
};
|
|
271
|
+
(0, vitest_1.expect)((0, smart_sessions_1.packSignature)(signersA, dummySig)).not.toBe((0, smart_sessions_1.packSignature)(signersB, dummySig));
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
// ---------------------------------------------------------------------------
|
|
275
|
+
// E. buildMockSignature (existing tests preserved + extras)
|
|
276
|
+
// ---------------------------------------------------------------------------
|
|
31
277
|
(0, vitest_1.describe)('buildMockSignature', () => {
|
|
32
278
|
(0, vitest_1.test)('first 20 bytes are the emissary address', () => {
|
|
33
279
|
const sig = (0, smart_sessions_1.buildMockSignature)(baseSession);
|
|
@@ -36,26 +282,30 @@ const sessionWithAction = {
|
|
|
36
282
|
});
|
|
37
283
|
(0, vitest_1.test)('byte 20 is SMART_SESSION_MODE_ENABLE (0x01)', () => {
|
|
38
284
|
const sig = (0, smart_sessions_1.buildMockSignature)(baseSession);
|
|
39
|
-
// byte 21 in the sig = index 20 = the mode byte from packSignature
|
|
40
285
|
const modeByte = (0, viem_1.slice)(sig, 20, 21);
|
|
41
286
|
(0, vitest_1.expect)(modeByte).toBe('0x01');
|
|
42
287
|
});
|
|
43
288
|
(0, vitest_1.test)('total length is larger than just emissary + mode byte (has compressed payload)', () => {
|
|
44
289
|
const sig = (0, smart_sessions_1.buildMockSignature)(baseSession);
|
|
45
|
-
|
|
46
|
-
const byteLen = (sig.length - 2) / 2; // strip '0x', convert hex chars to bytes
|
|
290
|
+
const byteLen = (sig.length - 2) / 2;
|
|
47
291
|
(0, vitest_1.expect)(byteLen).toBeGreaterThan(21);
|
|
48
292
|
});
|
|
49
293
|
(0, vitest_1.test)('sessions with different actions produce different sigData', () => {
|
|
50
294
|
const sigBase = (0, smart_sessions_1.buildMockSignature)(baseSession);
|
|
51
295
|
const sigWithAction = (0, smart_sessions_1.buildMockSignature)(sessionWithAction);
|
|
52
|
-
// The session data (policies, targets) should differ → different compressed payloads
|
|
53
296
|
(0, vitest_1.expect)(sigBase).not.toBe(sigWithAction);
|
|
54
297
|
});
|
|
55
298
|
(0, vitest_1.test)('useDevContracts=true produces different emissary prefix', () => {
|
|
56
299
|
const sigProd = (0, smart_sessions_1.buildMockSignature)(baseSession, false);
|
|
57
300
|
const sigDev = (0, smart_sessions_1.buildMockSignature)(baseSession, true);
|
|
58
|
-
// First 20 bytes differ because prod vs dev emissary addresses differ
|
|
59
301
|
(0, vitest_1.expect)((0, viem_1.slice)(sigProd, 0, 20)).not.toBe((0, viem_1.slice)(sigDev, 0, 20));
|
|
60
302
|
});
|
|
303
|
+
(0, vitest_1.test)('chainCount=2 produces valid output (LibZip may compress smaller than chainCount=1)', () => {
|
|
304
|
+
const sig = (0, smart_sessions_1.buildMockSignature)(baseSession, false, 2);
|
|
305
|
+
// Must be at least emissaryAddress (20) + mode byte (1) + some payload
|
|
306
|
+
const byteLen = (sig.length - 2) / 2;
|
|
307
|
+
(0, vitest_1.expect)(byteLen).toBeGreaterThan(21);
|
|
308
|
+
// Must start with the emissary address
|
|
309
|
+
(0, vitest_1.expect)((0, viem_1.isAddressEqual)((0, viem_1.slice)(sig, 0, 20), smart_sessions_1.SMART_SESSION_EMISSARY_ADDRESS)).toBe(true);
|
|
310
|
+
});
|
|
61
311
|
});
|
|
@@ -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;
|
|
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;YAYJ,KAAK;IA4BnB,OAAO,CAAC,UAAU;IA6GlB,OAAO,CAAC,iBAAiB;CAmG1B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
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 = "1.4.
|
|
4
|
-
|
|
3
|
+
declare const SDK_VERSION = "1.4.2";
|
|
4
|
+
declare const API_VERSION = "2026-01.alps";
|
|
5
|
+
export { PROD_ORCHESTRATOR_URL, RHINESTONE_SPOKE_POOL_ADDRESS, SDK_VERSION, API_VERSION, };
|
|
5
6
|
//# sourceMappingURL=consts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../orchestrator/consts.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,qBAAqB,2CAA2C,CAAA;AACtE,QAAA,MAAM,6BAA6B,+CACW,CAAA;AAE9C,QAAA,MAAM,WAAW,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../orchestrator/consts.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,qBAAqB,2CAA2C,CAAA;AACtE,QAAA,MAAM,6BAA6B,+CACW,CAAA;AAE9C,QAAA,MAAM,WAAW,UAAU,CAAA;AAC3B,QAAA,MAAM,WAAW,iBAAiB,CAAA;AAElC,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,WAAW,EACX,WAAW,GACZ,CAAA"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SDK_VERSION = exports.RHINESTONE_SPOKE_POOL_ADDRESS = exports.PROD_ORCHESTRATOR_URL = void 0;
|
|
3
|
+
exports.API_VERSION = exports.SDK_VERSION = exports.RHINESTONE_SPOKE_POOL_ADDRESS = exports.PROD_ORCHESTRATOR_URL = void 0;
|
|
4
4
|
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 = '1.4.
|
|
8
|
+
const SDK_VERSION = '1.4.2';
|
|
9
9
|
exports.SDK_VERSION = SDK_VERSION;
|
|
10
|
+
const API_VERSION = '2026-01.alps';
|
|
11
|
+
exports.API_VERSION = API_VERSION;
|
|
@@ -2,9 +2,9 @@ import { Orchestrator } from './client';
|
|
|
2
2
|
import { RHINESTONE_SPOKE_POOL_ADDRESS } from './consts';
|
|
3
3
|
import { AuthenticationRequiredError, BadRequestError, BodyParserError, ConflictError, ForbiddenError, InsufficientBalanceError, InsufficientLiquidityError, IntentNotFoundError, InternalServerError, InvalidApiKeyError, InvalidIntentSignatureError, isAuthError, isOrchestratorError, isRateLimited, isRetryable, isValidationError, NoPathFoundError, OnlyOneTargetTokenAmountCanBeUnsetError, OrchestratorError, RateLimitedError, ResourceNotFoundError, SchemaValidationError, ServiceUnavailableError, SimulationFailedError, TokenNotSupportedError, UnauthorizedError, UnprocessableEntityError, UnsupportedChainError, UnsupportedChainIdError, UnsupportedTokenError } from './error';
|
|
4
4
|
import { getAllSupportedChainsAndTokens, getSupportedTokens, getTokenAddress, getTokenDecimals, getTokenSymbol, getWethAddress, isTokenAddressSupported } from './registry';
|
|
5
|
-
import type { ApprovalRequired, AuxiliaryFunds, IntentInput, IntentOp, IntentOpStatus, IntentResult, IntentRoute, Portfolio, SettlementLayer, SignedIntentOp, SplitIntentsInput, SplitIntentsResult, SupportedChain, TokenConfig, TokenRequirements, WrapRequired } from './types';
|
|
5
|
+
import type { ApprovalRequired, AuxiliaryFunds, Execution, IntentInput, IntentOp, IntentOpStatus, IntentResult, IntentRoute, Portfolio, SettlementLayer, SignedIntentOp, SplitIntentsInput, SplitIntentsResult, SupportedChain, TokenConfig, TokenRequirements, WrapRequired } from './types';
|
|
6
6
|
import { INTENT_STATUS_CLAIMED, INTENT_STATUS_COMPLETED, INTENT_STATUS_EXPIRED, INTENT_STATUS_FAILED, INTENT_STATUS_FILLED, INTENT_STATUS_PENDING, INTENT_STATUS_PRECONFIRMED } from './types';
|
|
7
7
|
declare function getOrchestrator(apiKey?: string, orchestratorUrl?: string, headers?: Record<string, string>): Orchestrator;
|
|
8
|
-
export type { AuxiliaryFunds, IntentInput, IntentOp, IntentOpStatus, IntentResult, IntentRoute, SettlementLayer, SignedIntentOp, SplitIntentsInput, SplitIntentsResult, SupportedChain, TokenConfig, Portfolio, TokenRequirements, WrapRequired, ApprovalRequired, };
|
|
8
|
+
export type { AuxiliaryFunds, Execution, IntentInput, IntentOp, IntentOpStatus, IntentResult, IntentRoute, SettlementLayer, SignedIntentOp, SplitIntentsInput, SplitIntentsResult, SupportedChain, TokenConfig, Portfolio, TokenRequirements, WrapRequired, ApprovalRequired, };
|
|
9
9
|
export { INTENT_STATUS_PENDING, INTENT_STATUS_EXPIRED, INTENT_STATUS_COMPLETED, INTENT_STATUS_FILLED, INTENT_STATUS_FAILED, INTENT_STATUS_PRECONFIRMED, INTENT_STATUS_CLAIMED, RHINESTONE_SPOKE_POOL_ADDRESS, Orchestrator, AuthenticationRequiredError, BadRequestError, BodyParserError, ConflictError, ForbiddenError, InsufficientBalanceError, InsufficientLiquidityError, InvalidApiKeyError, InvalidIntentSignatureError, NoPathFoundError, OnlyOneTargetTokenAmountCanBeUnsetError, OrchestratorError, IntentNotFoundError, InternalServerError, ResourceNotFoundError, RateLimitedError, SchemaValidationError, ServiceUnavailableError, SimulationFailedError, UnprocessableEntityError, UnauthorizedError, TokenNotSupportedError, UnsupportedChainError, UnsupportedChainIdError, UnsupportedTokenError, getOrchestrator, getWethAddress, getTokenSymbol, getTokenAddress, getTokenDecimals, getSupportedTokens, getAllSupportedChainsAndTokens, isOrchestratorError, isRetryable, isAuthError, isValidationError, isRateLimited, isTokenAddressSupported, };
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../orchestrator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAyB,6BAA6B,EAAE,MAAM,UAAU,CAAA;AAC/E,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,2BAA2B,EAC3B,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,uCAAuC,EACvC,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,uBAAuB,EACxB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,WAAW,EACX,SAAS,EACT,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,YAAY,EACb,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,SAAS,CAAA;AAEhB,iBAAS,eAAe,CACtB,MAAM,CAAC,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,YAAY,CAMd;AAED,YAAY,EACV,cAAc,EACd,WAAW,EACX,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,GACjB,CAAA;AACD,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,EAC7B,YAAY,EACZ,2BAA2B,EAC3B,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,2BAA2B,EAC3B,gBAAgB,EAChB,uCAAuC,EACvC,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,8BAA8B,EAC9B,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,uBAAuB,GACxB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../orchestrator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAyB,6BAA6B,EAAE,MAAM,UAAU,CAAA;AAC/E,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,2BAA2B,EAC3B,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,uCAAuC,EACvC,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,uBAAuB,EACxB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,WAAW,EACX,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,WAAW,EACX,SAAS,EACT,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,YAAY,EACb,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,SAAS,CAAA;AAEhB,iBAAS,eAAe,CACtB,MAAM,CAAC,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,YAAY,CAMd;AAED,YAAY,EACV,cAAc,EACd,SAAS,EACT,WAAW,EACX,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,GACjB,CAAA;AACD,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,EAC7B,YAAY,EACZ,2BAA2B,EAC3B,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,2BAA2B,EAC3B,gBAAgB,EAChB,uCAAuC,EACvC,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,8BAA8B,EAC9B,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,uBAAuB,GACxB,CAAA"}
|
|
@@ -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) {
|