@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
|
@@ -32,12 +32,13 @@ const utils_1 = require("../accounts/utils");
|
|
|
32
32
|
const modules_1 = require("../modules");
|
|
33
33
|
const validators_1 = require("../modules/validators");
|
|
34
34
|
const core_1 = require("../modules/validators/core");
|
|
35
|
+
const permit2_1 = require("../modules/validators/policies/claim/permit2");
|
|
35
36
|
const orchestrator_1 = require("../orchestrator");
|
|
36
37
|
const registry_1 = require("../orchestrator/registry");
|
|
37
38
|
const types_1 = require("../orchestrator/types");
|
|
38
39
|
const compact_1 = require("./compact");
|
|
39
40
|
const error_1 = require("./error");
|
|
40
|
-
const
|
|
41
|
+
const permit2_2 = require("./permit2");
|
|
41
42
|
const singleChainOps_1 = require("./singleChainOps");
|
|
42
43
|
function isResolvedSessionSignerSet(signers) {
|
|
43
44
|
return (signers?.type === 'experimental_session' && 'verifyExecutions' in signers);
|
|
@@ -49,11 +50,13 @@ async function resolveSignersForChain(config, signers, chainId) {
|
|
|
49
50
|
const resolved = resolveSessionForChain(signers, chainId);
|
|
50
51
|
const enabled = await (0, validators_1.isSessionEnabled)((0, accounts_1.getAddress)(config), config.provider, resolved.session, config.useDevContracts);
|
|
51
52
|
const enableData = enabled ? undefined : resolved.enableData;
|
|
53
|
+
const hasExplicitActions = !!resolved.session.actions?.length;
|
|
54
|
+
const verifyExecutions = resolved.verifyExecutions ?? signers.verifyExecutions ?? hasExplicitActions;
|
|
52
55
|
return {
|
|
53
56
|
type: 'experimental_session',
|
|
54
57
|
session: resolved.session,
|
|
55
58
|
enableData,
|
|
56
|
-
verifyExecutions
|
|
59
|
+
verifyExecutions,
|
|
57
60
|
};
|
|
58
61
|
}
|
|
59
62
|
function resolveSessionForChain(signers, chainId) {
|
|
@@ -134,7 +137,16 @@ async function getTargetExecutionSignature(config, intentOp, targetChain, signer
|
|
|
134
137
|
if (signers?.type !== 'experimental_session') {
|
|
135
138
|
return undefined;
|
|
136
139
|
}
|
|
140
|
+
const settlementLayers = intentOp.elements.map((e) => e.mandate.qualifier.settlementContext.settlementLayer);
|
|
141
|
+
const hasIntentExecutorOps = settlementLayers.some((l) => l === 'INTENT_EXECUTOR' || l === 'SAME_CHAIN');
|
|
142
|
+
if (!hasIntentExecutorOps) {
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
137
145
|
const resolvedSigners = await resolveSignersForChain(config, signers, targetChain.id);
|
|
146
|
+
if (!isResolvedSessionSignerSet(resolvedSigners) ||
|
|
147
|
+
!resolvedSigners.verifyExecutions) {
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
138
150
|
const destination = getTargetExecutionMessage(config, intentOp);
|
|
139
151
|
const validator = getValidator(config, signers);
|
|
140
152
|
if (!validator) {
|
|
@@ -405,6 +417,32 @@ async function prepareTransactionAsIntent(config, sourceChains, targetChain, cal
|
|
|
405
417
|
const signatureMode = signers?.type === 'experimental_session'
|
|
406
418
|
? types_1.SIG_MODE_EMISSARY_EXECUTION_ERC1271
|
|
407
419
|
: types_1.SIG_MODE_ERC1271_EMISSARY;
|
|
420
|
+
// For session signers that need enabling, pass a dummy preclaimop per source chain
|
|
421
|
+
// so the orchestrator bakes it into the bundle before computing its HMAC. The filler
|
|
422
|
+
// executes the op via verifyExecution in ENABLE mode, enabling the session on-chain
|
|
423
|
+
// without a separate UserOp. Must be sent in the routing request — not injected
|
|
424
|
+
// post-facto — because the orchestrator HMAC covers preClaimOps.
|
|
425
|
+
const preClaimExecutions = {};
|
|
426
|
+
if (signers?.type === 'experimental_session' && sourceChains) {
|
|
427
|
+
const resolvedPerChain = await Promise.all(sourceChains.map(async (chain) => ({
|
|
428
|
+
chainId: chain.id,
|
|
429
|
+
resolved: await resolveSignersForChain(config, signers, chain.id),
|
|
430
|
+
})));
|
|
431
|
+
for (const { chainId, resolved } of resolvedPerChain) {
|
|
432
|
+
if (!isResolvedSessionSignerSet(resolved))
|
|
433
|
+
continue;
|
|
434
|
+
const { enableData, verifyExecutions } = resolved;
|
|
435
|
+
if (!verifyExecutions || !enableData)
|
|
436
|
+
continue;
|
|
437
|
+
preClaimExecutions[chainId] = [
|
|
438
|
+
{
|
|
439
|
+
to: validators_1.DUMMY_PRECLAIMOP_TARGET,
|
|
440
|
+
value: 0n,
|
|
441
|
+
data: validators_1.DUMMY_PRECLAIMOP_SELECTOR,
|
|
442
|
+
},
|
|
443
|
+
];
|
|
444
|
+
}
|
|
445
|
+
}
|
|
408
446
|
const metaIntent = {
|
|
409
447
|
destinationChainId: targetChain.id,
|
|
410
448
|
tokenRequests: tokenRequests.map((tokenRequest) => ({
|
|
@@ -436,6 +474,7 @@ async function prepareTransactionAsIntent(config, sourceChains, targetChain, cal
|
|
|
436
474
|
signatureMode,
|
|
437
475
|
auxiliaryFunds,
|
|
438
476
|
},
|
|
477
|
+
...(Object.keys(preClaimExecutions).length > 0 && { preClaimExecutions }),
|
|
439
478
|
};
|
|
440
479
|
const orchestrator = (0, orchestrator_1.getOrchestrator)(config.apiKey, config.endpointUrl, config.headers);
|
|
441
480
|
const intentRoute = await orchestrator.getIntentRoute(metaIntent);
|
|
@@ -523,7 +562,7 @@ function getIntentMessages(config, intentOp) {
|
|
|
523
562
|
origin.push(typedData);
|
|
524
563
|
}
|
|
525
564
|
else if (withPermit2) {
|
|
526
|
-
const typedData = (0,
|
|
565
|
+
const typedData = (0, permit2_2.getTypedData)(element, BigInt(intentOp.nonce), BigInt(intentOp.expires));
|
|
527
566
|
origin.push(typedData);
|
|
528
567
|
}
|
|
529
568
|
else {
|
|
@@ -549,6 +588,22 @@ function getTargetExecutionMessage(config, intentOp) {
|
|
|
549
588
|
};
|
|
550
589
|
return typedData;
|
|
551
590
|
}
|
|
591
|
+
/** Computes claim policy calldata when parameters are Permit2 typed data with claim policies. */
|
|
592
|
+
function resolveClaimPolicyData(signers, parameters) {
|
|
593
|
+
if (parameters.primaryType !== 'PermitBatchWitnessTransferFrom' ||
|
|
594
|
+
!signers.session.claimPolicies?.length) {
|
|
595
|
+
return undefined;
|
|
596
|
+
}
|
|
597
|
+
const msg = parameters.message;
|
|
598
|
+
if (!msg.permitted ||
|
|
599
|
+
!msg.mandate ||
|
|
600
|
+
typeof msg.spender !== 'string' ||
|
|
601
|
+
typeof msg.nonce !== 'bigint' ||
|
|
602
|
+
typeof msg.deadline !== 'bigint') {
|
|
603
|
+
return undefined;
|
|
604
|
+
}
|
|
605
|
+
return (0, permit2_1.buildPermit2ClaimPolicyCalldata)(signers.session.claimPolicies[0], parameters.message);
|
|
606
|
+
}
|
|
552
607
|
async function signIntentTypedData(config, signers, validator, isRoot, parameters, chain, targetExecution) {
|
|
553
608
|
if ((0, core_1.supportsEip712)(validator)) {
|
|
554
609
|
const isK1Validator = validator.address.toLowerCase() ===
|
|
@@ -564,18 +619,25 @@ async function signIntentTypedData(config, signers, validator, isRoot, parameter
|
|
|
564
619
|
const hash = (0, viem_1.hashTypedData)(parameters);
|
|
565
620
|
if (isResolvedSessionSignerSet(signers) && signers.verifyExecutions) {
|
|
566
621
|
if (targetExecution) {
|
|
567
|
-
|
|
622
|
+
const targetSigners = {
|
|
568
623
|
type: 'experimental_session',
|
|
569
624
|
session: signers.session,
|
|
570
625
|
verifyExecutions: true,
|
|
571
|
-
|
|
626
|
+
enableData: signers.enableData,
|
|
627
|
+
};
|
|
628
|
+
// signWithSession (called inside getEmissarySignature) already calls packSignature
|
|
629
|
+
// internally, so no transform is needed here
|
|
630
|
+
return await (0, accounts_1.getEmissarySignature)(config, targetSigners, chain, hash);
|
|
572
631
|
}
|
|
573
|
-
const
|
|
632
|
+
const claimPolicyData = resolveClaimPolicyData(signers, parameters);
|
|
633
|
+
const sessionSignersForEip1271 = {
|
|
574
634
|
type: 'experimental_session',
|
|
575
635
|
session: signers.session,
|
|
576
636
|
verifyExecutions: false,
|
|
577
637
|
enableData: signers.enableData,
|
|
578
|
-
|
|
638
|
+
claimPolicyData,
|
|
639
|
+
};
|
|
640
|
+
const eip1271Signature = await (0, accounts_1.getEip1271Signature)(config, sessionSignersForEip1271, chain, {
|
|
579
641
|
address: validator.address,
|
|
580
642
|
isRoot,
|
|
581
643
|
}, hash);
|
|
@@ -590,6 +652,13 @@ async function signIntentTypedData(config, signers, validator, isRoot, parameter
|
|
|
590
652
|
notarizedClaimSig: eip1271Signature,
|
|
591
653
|
};
|
|
592
654
|
}
|
|
655
|
+
if (isResolvedSessionSignerSet(signers)) {
|
|
656
|
+
const claimPolicyData = resolveClaimPolicyData(signers, parameters);
|
|
657
|
+
return await (0, accounts_1.getEip1271Signature)(config, claimPolicyData !== undefined ? { ...signers, claimPolicyData } : signers, chain, {
|
|
658
|
+
address: validator.address,
|
|
659
|
+
isRoot,
|
|
660
|
+
}, hash);
|
|
661
|
+
}
|
|
593
662
|
return await (0, accounts_1.getEip1271Signature)(config, signers, chain, {
|
|
594
663
|
address: validator.address,
|
|
595
664
|
isRoot,
|
|
@@ -1,9 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
const viem_1 = require("viem");
|
|
4
37
|
const chains_1 = require("viem/chains");
|
|
5
38
|
const vitest_1 = require("vitest");
|
|
6
39
|
const consts_1 = require("../../test/consts");
|
|
40
|
+
const validators = __importStar(require("../modules/validators"));
|
|
41
|
+
const validators_1 = require("../modules/validators");
|
|
7
42
|
const utils_1 = require("./utils");
|
|
8
43
|
const mockGetIntentRoute = vitest_1.vi.fn();
|
|
9
44
|
vitest_1.vi.mock('../orchestrator', () => ({
|
|
@@ -203,3 +238,151 @@ const makeSession = (chainId) => ({
|
|
|
203
238
|
(0, vitest_1.expect)(() => (0, utils_1.resolveSessionForChain)(signers, chains_1.optimism.id)).toThrow(`No session configured for chain ${chains_1.optimism.id}`);
|
|
204
239
|
});
|
|
205
240
|
});
|
|
241
|
+
// ---------------------------------------------------------------------------
|
|
242
|
+
// preClaimExecutions in routing request
|
|
243
|
+
// ---------------------------------------------------------------------------
|
|
244
|
+
const makeEnableData = () => ({
|
|
245
|
+
userSignature: `0x${'00'.repeat(65)}`,
|
|
246
|
+
hashesAndChainIds: [
|
|
247
|
+
{
|
|
248
|
+
chainId: BigInt(chains_1.base.id),
|
|
249
|
+
sessionDigest: `0x${'00'.repeat(32)}`,
|
|
250
|
+
},
|
|
251
|
+
],
|
|
252
|
+
sessionToEnableIndex: 0,
|
|
253
|
+
});
|
|
254
|
+
(0, vitest_1.describe)('prepareTransactionAsIntent — preClaimExecutions', () => {
|
|
255
|
+
let isSessionEnabledSpy;
|
|
256
|
+
(0, vitest_1.beforeEach)(() => {
|
|
257
|
+
mockGetIntentRoute.mockReset();
|
|
258
|
+
mockGetIntentRoute.mockResolvedValue({ intentOp: {}, intentCost: {} });
|
|
259
|
+
isSessionEnabledSpy = vitest_1.vi
|
|
260
|
+
.spyOn(validators, 'isSessionEnabled')
|
|
261
|
+
.mockResolvedValue(false);
|
|
262
|
+
});
|
|
263
|
+
(0, vitest_1.test)('includes dummy preclaimop in preClaimExecutions when session needs enabling', async () => {
|
|
264
|
+
const signers = {
|
|
265
|
+
type: 'experimental_session',
|
|
266
|
+
session: {
|
|
267
|
+
chain: chains_1.base,
|
|
268
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA], threshold: 1 },
|
|
269
|
+
actions: [
|
|
270
|
+
{
|
|
271
|
+
target: '0x1111111111111111111111111111111111111111',
|
|
272
|
+
selector: '0xdeadbeef',
|
|
273
|
+
},
|
|
274
|
+
],
|
|
275
|
+
},
|
|
276
|
+
enableData: makeEnableData(),
|
|
277
|
+
};
|
|
278
|
+
await (0, utils_1.prepareTransactionAsIntent)({
|
|
279
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA], threshold: 1 },
|
|
280
|
+
apiKey: 'test',
|
|
281
|
+
}, [chains_1.base], chains_1.base, [], undefined, [{ address: viem_1.zeroAddress, amount: 1n }], undefined, false, undefined, undefined, undefined, undefined, undefined, undefined, undefined, signers);
|
|
282
|
+
const intentInput = mockGetIntentRoute.mock.calls[0][0];
|
|
283
|
+
(0, vitest_1.expect)(intentInput.preClaimExecutions).toBeDefined();
|
|
284
|
+
(0, vitest_1.expect)(intentInput.preClaimExecutions[chains_1.base.id]).toHaveLength(1);
|
|
285
|
+
(0, vitest_1.expect)(intentInput.preClaimExecutions[chains_1.base.id][0].to).toBe(validators_1.DUMMY_PRECLAIMOP_TARGET);
|
|
286
|
+
(0, vitest_1.expect)(intentInput.preClaimExecutions[chains_1.base.id][0].data).toBe(validators_1.DUMMY_PRECLAIMOP_SELECTOR);
|
|
287
|
+
});
|
|
288
|
+
(0, vitest_1.test)('omits preClaimExecutions when session is already enabled', async () => {
|
|
289
|
+
isSessionEnabledSpy.mockResolvedValue(true);
|
|
290
|
+
const signers = {
|
|
291
|
+
type: 'experimental_session',
|
|
292
|
+
session: {
|
|
293
|
+
chain: chains_1.base,
|
|
294
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA], threshold: 1 },
|
|
295
|
+
actions: [
|
|
296
|
+
{
|
|
297
|
+
target: '0x1111111111111111111111111111111111111111',
|
|
298
|
+
selector: '0xdeadbeef',
|
|
299
|
+
},
|
|
300
|
+
],
|
|
301
|
+
},
|
|
302
|
+
enableData: makeEnableData(),
|
|
303
|
+
};
|
|
304
|
+
await (0, utils_1.prepareTransactionAsIntent)({
|
|
305
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA], threshold: 1 },
|
|
306
|
+
apiKey: 'test',
|
|
307
|
+
}, [chains_1.base], chains_1.base, [], undefined, [{ address: viem_1.zeroAddress, amount: 1n }], undefined, false, undefined, undefined, undefined, undefined, undefined, undefined, undefined, signers);
|
|
308
|
+
const intentInput = mockGetIntentRoute.mock.calls[0][0];
|
|
309
|
+
(0, vitest_1.expect)(intentInput.preClaimExecutions).toBeUndefined();
|
|
310
|
+
});
|
|
311
|
+
(0, vitest_1.test)('omits preClaimExecutions when session has no enableData', async () => {
|
|
312
|
+
const signers = {
|
|
313
|
+
type: 'experimental_session',
|
|
314
|
+
session: {
|
|
315
|
+
chain: chains_1.base,
|
|
316
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA], threshold: 1 },
|
|
317
|
+
actions: [
|
|
318
|
+
{
|
|
319
|
+
target: '0x1111111111111111111111111111111111111111',
|
|
320
|
+
selector: '0xdeadbeef',
|
|
321
|
+
},
|
|
322
|
+
],
|
|
323
|
+
},
|
|
324
|
+
// no enableData
|
|
325
|
+
};
|
|
326
|
+
await (0, utils_1.prepareTransactionAsIntent)({
|
|
327
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA], threshold: 1 },
|
|
328
|
+
apiKey: 'test',
|
|
329
|
+
}, [chains_1.base], chains_1.base, [], undefined, [{ address: viem_1.zeroAddress, amount: 1n }], undefined, false, undefined, undefined, undefined, undefined, undefined, undefined, undefined, signers);
|
|
330
|
+
const intentInput = mockGetIntentRoute.mock.calls[0][0];
|
|
331
|
+
(0, vitest_1.expect)(intentInput.preClaimExecutions).toBeUndefined();
|
|
332
|
+
});
|
|
333
|
+
(0, vitest_1.test)('omits preClaimExecutions when session has no explicit actions (verifyExecutions=false)', async () => {
|
|
334
|
+
const signers = {
|
|
335
|
+
type: 'experimental_session',
|
|
336
|
+
session: {
|
|
337
|
+
chain: chains_1.base,
|
|
338
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA], threshold: 1 },
|
|
339
|
+
// no actions → verifyExecutions defaults to false
|
|
340
|
+
},
|
|
341
|
+
enableData: makeEnableData(),
|
|
342
|
+
};
|
|
343
|
+
await (0, utils_1.prepareTransactionAsIntent)({
|
|
344
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA], threshold: 1 },
|
|
345
|
+
apiKey: 'test',
|
|
346
|
+
}, [chains_1.base], chains_1.base, [], undefined, [{ address: viem_1.zeroAddress, amount: 1n }], undefined, false, undefined, undefined, undefined, undefined, undefined, undefined, undefined, signers);
|
|
347
|
+
const intentInput = mockGetIntentRoute.mock.calls[0][0];
|
|
348
|
+
(0, vitest_1.expect)(intentInput.preClaimExecutions).toBeUndefined();
|
|
349
|
+
});
|
|
350
|
+
(0, vitest_1.test)('injects only for not-yet-enabled chains when multiple source chains', async () => {
|
|
351
|
+
// base: not enabled → gets dummy preclaimop
|
|
352
|
+
// arbitrum: already enabled → skipped
|
|
353
|
+
isSessionEnabledSpy
|
|
354
|
+
.mockResolvedValueOnce(false) // base
|
|
355
|
+
.mockResolvedValueOnce(true); // arbitrum
|
|
356
|
+
const makeSessionWithActions = (chainId) => ({
|
|
357
|
+
...makeSession(chainId),
|
|
358
|
+
actions: [
|
|
359
|
+
{
|
|
360
|
+
target: '0x1111111111111111111111111111111111111111',
|
|
361
|
+
selector: '0xdeadbeef',
|
|
362
|
+
},
|
|
363
|
+
],
|
|
364
|
+
});
|
|
365
|
+
const signers = {
|
|
366
|
+
type: 'experimental_session',
|
|
367
|
+
sessions: {
|
|
368
|
+
[chains_1.base.id]: {
|
|
369
|
+
session: makeSessionWithActions(chains_1.base.id),
|
|
370
|
+
enableData: makeEnableData(),
|
|
371
|
+
},
|
|
372
|
+
[chains_1.arbitrum.id]: {
|
|
373
|
+
session: makeSessionWithActions(chains_1.arbitrum.id),
|
|
374
|
+
enableData: makeEnableData(),
|
|
375
|
+
},
|
|
376
|
+
},
|
|
377
|
+
};
|
|
378
|
+
await (0, utils_1.prepareTransactionAsIntent)({
|
|
379
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA], threshold: 1 },
|
|
380
|
+
apiKey: 'test',
|
|
381
|
+
}, [chains_1.base, chains_1.arbitrum], chains_1.base, [], undefined, [{ address: viem_1.zeroAddress, amount: 1n }], undefined, false, undefined, undefined, undefined, undefined, undefined, undefined, undefined, signers);
|
|
382
|
+
const intentInput = mockGetIntentRoute.mock.calls[0][0];
|
|
383
|
+
(0, vitest_1.expect)(intentInput.preClaimExecutions).toBeDefined();
|
|
384
|
+
(0, vitest_1.expect)(intentInput.preClaimExecutions[chains_1.base.id]).toHaveLength(1);
|
|
385
|
+
(0, vitest_1.expect)(intentInput.preClaimExecutions[chains_1.base.id][0].to).toBe(validators_1.DUMMY_PRECLAIMOP_TARGET);
|
|
386
|
+
(0, vitest_1.expect)(intentInput.preClaimExecutions[chains_1.arbitrum.id]).toBeUndefined();
|
|
387
|
+
});
|
|
388
|
+
});
|
package/dist/src/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { type IntentRoute, type PreparedTransactionData, type PreparedUserOperat
|
|
|
8
8
|
import { MULTI_FACTOR_VALIDATOR_ADDRESS, OWNABLE_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS } from './modules';
|
|
9
9
|
import { type SessionDetails } from './modules/validators/smart-sessions';
|
|
10
10
|
import { type ApprovalRequired, type AuxiliaryFunds, getAllSupportedChainsAndTokens, getSupportedTokens, getTokenAddress, getTokenDecimals, type IntentInput, type IntentOp, type IntentOpStatus, type Portfolio, type SettlementLayer, type SignedIntentOp, type SplitIntentsInput, type SplitIntentsResult, type TokenRequirements, type WrapRequired } from './orchestrator';
|
|
11
|
-
import type { AccountProviderConfig, AccountType, BundlerConfig, Call, CallInput, ChainSessionConfig, MultiFactorValidatorConfig, OwnableValidatorConfig, OwnerSet, PaymasterConfig, Policy, ProviderConfig, Recovery, RhinestoneAccountConfig, RhinestoneConfig, RhinestoneSDKConfig, Session, SignerSet, TokenRequest, TokenSymbol, Transaction, UniversalActionPolicyParamCondition, UserOperationTransaction, WebauthnValidatorConfig } from './types';
|
|
11
|
+
import type { AccountProviderConfig, AccountType, BundlerConfig, Call, CallInput, ChainSessionConfig, MultiFactorValidatorConfig, OwnableValidatorConfig, OwnerSet, PaymasterConfig, Permit2ClaimPolicy, Policy, ProviderConfig, Recovery, RhinestoneAccountConfig, RhinestoneConfig, RhinestoneSDKConfig, Session, SignerSet, TokenRequest, TokenSymbol, Transaction, UniversalActionPolicyParamCondition, UserOperationTransaction, WebauthnValidatorConfig } from './types';
|
|
12
12
|
interface RhinestoneAccount {
|
|
13
13
|
config: RhinestoneAccountConfig;
|
|
14
14
|
deploy: (chain: Chain, params?: {
|
|
@@ -75,5 +75,5 @@ declare class RhinestoneSDK {
|
|
|
75
75
|
splitIntents(input: SplitIntentsInput): Promise<SplitIntentsResult>;
|
|
76
76
|
}
|
|
77
77
|
export { RhinestoneSDK, createRhinestoneAccount, deployAccountsForOwners, walletClientToAccount, wrapParaAccount, OWNABLE_VALIDATOR_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS, MULTI_FACTOR_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, getSupportedTokens, getTokenAddress, getTokenDecimals, getAllSupportedChainsAndTokens, checkERC20AllowanceDirect, getPermit2Address, signPermit2Batch, signPermit2Sequential, };
|
|
78
|
-
export type { RhinestoneAccount, AccountType, RhinestoneAccountConfig, AccountProviderConfig, ProviderConfig, BundlerConfig, PaymasterConfig, Transaction, TokenSymbol, CallInput, Call, TokenRequest, OwnerSet, OwnableValidatorConfig, WebauthnValidatorConfig, MultiFactorValidatorConfig, SignerSet, ChainSessionConfig, Session, Recovery, Policy, UniversalActionPolicyParamCondition, PreparedTransactionData, SignedTransactionData, TransactionResult, PreparedUserOperationData, SignedUserOperationData, UserOperationResult, AuxiliaryFunds, IntentInput, IntentOp, IntentOpStatus, IntentRoute, SettlementLayer, SignedIntentOp, SplitIntentsInput, SplitIntentsResult, Portfolio, TokenRequirements, WrapRequired, ApprovalRequired, MultiChainPermit2Config, MultiChainPermit2Result, BatchPermit2Result, };
|
|
78
|
+
export type { RhinestoneAccount, AccountType, RhinestoneAccountConfig, AccountProviderConfig, ProviderConfig, BundlerConfig, PaymasterConfig, Transaction, TokenSymbol, CallInput, Call, TokenRequest, OwnerSet, OwnableValidatorConfig, WebauthnValidatorConfig, MultiFactorValidatorConfig, SignerSet, ChainSessionConfig, Session, Recovery, Policy, Permit2ClaimPolicy, UniversalActionPolicyParamCondition, PreparedTransactionData, SignedTransactionData, TransactionResult, PreparedUserOperationData, SignedUserOperationData, UserOperationResult, AuxiliaryFunds, IntentInput, IntentOp, IntentOpStatus, IntentRoute, SettlementLayer, SignedIntentOp, SplitIntentsInput, SplitIntentsResult, Portfolio, TokenRequirements, WrapRequired, ApprovalRequired, MultiChainPermit2Config, MultiChainPermit2Result, BatchPermit2Result, };
|
|
79
79
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,KAAK,EACL,uBAAuB,EACvB,GAAG,EACH,eAAe,EACf,uBAAuB,EACvB,SAAS,EACT,mBAAmB,EACpB,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAapE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAEzB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,KAAK,kBAAkB,EACvB,yBAAyB,EAEzB,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAG9B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAQ7B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAKL,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAE9B,0BAA0B,EAC3B,MAAM,WAAW,CAAA;AAClB,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,8BAA8B,EAC9B,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EACV,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,IAAI,EACJ,SAAS,EACT,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,MAAM,EACN,cAAc,EACd,QAAQ,EACR,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,OAAO,EACP,SAAS,EACT,YAAY,EACZ,WAAW,EACX,WAAW,EACX,mCAAmC,EACnC,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAEhB,UAAU,iBAAiB;IACzB,MAAM,EAAE,uBAAuB,CAAA;IAC/B,MAAM,EAAE,CACN,KAAK,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAChD,OAAO,CAAC,OAAO,CAAC,CAAA;IACrB,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9C,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACzC,WAAW,IAAI;QACb,OAAO,EAAE,OAAO,CAAA;QAChB,WAAW,EAAE,GAAG,CAAA;KACjB,CAAA;IACD,mBAAmB,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;IACvC,kBAAkB,EAAE,CAClB,WAAW,EAAE,WAAW,KACrB,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACrC,sBAAsB,EAAE,CAAC,mBAAmB,EAAE,uBAAuB,KAAK;QACxE,MAAM,EAAE,mBAAmB,EAAE,CAAA;QAC7B,WAAW,EAAE,mBAAmB,CAAA;KACjC,CAAA;IACD,eAAe,EAAE,CACf,mBAAmB,EAAE,uBAAuB,KACzC,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACnC,kBAAkB,EAAE,CAClB,mBAAmB,EAAE,uBAAuB,KACzC,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACrC,WAAW,EAAE,CACX,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,SAAS,GAAG,SAAS,KAC3B,OAAO,CAAC,GAAG,CAAC,CAAA;IACjB,aAAa,EAAE,CACb,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,EAEtE,UAAU,EAAE,uBAAuB,CAAC,SAAS,EAAE,WAAW,CAAC,EAC3D,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,SAAS,GAAG,SAAS,KAC3B,OAAO,CAAC,GAAG,CAAC,CAAA;IACjB,iBAAiB,EAAE,CACjB,iBAAiB,EAAE,qBAAqB,EACxC,cAAc,CAAC,EAAE,uBAAuB,EACxC,MAAM,CAAC,EAAE,OAAO,KACb,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC/B,eAAe,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACzE,oBAAoB,EAAE,CACpB,WAAW,EAAE,wBAAwB,KAClC,OAAO,CAAC,yBAAyB,CAAC,CAAA;IACvC,iBAAiB,EAAE,CACjB,qBAAqB,EAAE,yBAAyB,KAC7C,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACrC,mBAAmB,EAAE,CACnB,mBAAmB,EAAE,uBAAuB,KACzC,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACjC,iBAAiB,EAAE,CACjB,WAAW,EAAE,wBAAwB,KAClC,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACjC,gBAAgB,CACd,MAAM,EAAE,iBAAiB,EACzB,uBAAuB,CAAC,EAAE,OAAO,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC7B,gBAAgB,CACd,MAAM,EAAE,mBAAmB,EAC3B,uBAAuB,CAAC,EAAE,OAAO,GAChC,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAChC,UAAU,EAAE,MAAM,OAAO,CAAA;IACzB,YAAY,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;IAC1D,8BAA8B,EAAE,CAC9B,QAAQ,EAAE,OAAO,EAAE,KAChB,OAAO,CAAC,cAAc,CAAC,CAAA;IAC5B,6BAA6B,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACrE,8BAA8B,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACzE,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;QACnC,QAAQ,EAAE,OAAO,EAAE,CAAA;QACnB,SAAS,EAAE,MAAM,CAAA;KAClB,GAAG,IAAI,CAAC,CAAA;IACT,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IACnD,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IAClD,mBAAmB,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAC9E;AAED;;;;;GAKG;AACH,iBAAe,uBAAuB,CACpC,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CA2V5B;AAED,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,WAAW,CAAC,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,OAAO,CAAC,CAAe;IAC/B,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,OAAO,CAAC,CAAwB;gBAE5B,OAAO,EAAE,mBAAmB;IAUxC,aAAa,CAAC,MAAM,EAAE,uBAAuB;IAc7C,eAAe,CAAC,QAAQ,EAAE,MAAM;;;IAShC,YAAY,CAAC,KAAK,EAAE,iBAAiB;CAQtC;AAED,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EAEf,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAE9B,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,8BAA8B,EAE9B,yBAAyB,EACzB,iBAAiB,EAEjB,gBAAgB,EAChB,qBAAqB,GACtB,CAAA;AACD,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,uBAAuB,EACvB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,WAAW,EACX,SAAS,EACT,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,SAAS,EACT,kBAAkB,EAClB,OAAO,EACP,QAAQ,EACR,MAAM,EACN,kBAAkB,EAClB,mCAAmC,EACnC,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,QAAQ,EACR,cAAc,EACd,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAEhB,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,GACnB,CAAA"}
|
|
@@ -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, DUMMY_PRECLAIMOP_SELECTOR, DUMMY_PRECLAIMOP_TARGET, getEnableSessionCall, getPermissionId, getSmartSessionValidator, isSessionEnabled, packSignature } from './smart-sessions';
|
|
3
|
+
export { OWNABLE_VALIDATOR_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS, MULTI_FACTOR_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, DUMMY_PRECLAIMOP_TARGET, DUMMY_PRECLAIMOP_SELECTOR, 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,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,aAAa,EACd,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,uBAAuB,EACvB,yBAAyB,EACzB,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.DUMMY_PRECLAIMOP_SELECTOR = exports.DUMMY_PRECLAIMOP_TARGET = 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; } });
|
|
@@ -10,7 +10,10 @@ Object.defineProperty(exports, "SMART_SESSION_EMISSARY_ADDRESS", { enumerable: t
|
|
|
10
10
|
Object.defineProperty(exports, "WEBAUTHN_VALIDATOR_ADDRESS", { enumerable: true, get: function () { return core_1.WEBAUTHN_VALIDATOR_ADDRESS; } });
|
|
11
11
|
const smart_sessions_1 = require("./smart-sessions");
|
|
12
12
|
Object.defineProperty(exports, "buildMockSignature", { enumerable: true, get: function () { return smart_sessions_1.buildMockSignature; } });
|
|
13
|
+
Object.defineProperty(exports, "DUMMY_PRECLAIMOP_SELECTOR", { enumerable: true, get: function () { return smart_sessions_1.DUMMY_PRECLAIMOP_SELECTOR; } });
|
|
14
|
+
Object.defineProperty(exports, "DUMMY_PRECLAIMOP_TARGET", { enumerable: true, get: function () { return smart_sessions_1.DUMMY_PRECLAIMOP_TARGET; } });
|
|
13
15
|
Object.defineProperty(exports, "getEnableSessionCall", { enumerable: true, get: function () { return smart_sessions_1.getEnableSessionCall; } });
|
|
14
16
|
Object.defineProperty(exports, "getPermissionId", { enumerable: true, get: function () { return smart_sessions_1.getPermissionId; } });
|
|
15
17
|
Object.defineProperty(exports, "getSmartSessionValidator", { enumerable: true, get: function () { return smart_sessions_1.getSmartSessionValidator; } });
|
|
16
18
|
Object.defineProperty(exports, "isSessionEnabled", { enumerable: true, get: function () { return smart_sessions_1.isSessionEnabled; } });
|
|
19
|
+
Object.defineProperty(exports, "packSignature", { enumerable: true, get: function () { return smart_sessions_1.packSignature; } });
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type Address, type Hex } from 'viem';
|
|
2
|
+
import type { Permit2ClaimPolicy } from '../../../../types';
|
|
3
|
+
/** Typed representation of the Permit2 message fields used for calldata building */
|
|
4
|
+
export interface Permit2ClaimMessage {
|
|
5
|
+
permitted: readonly {
|
|
6
|
+
token: Address;
|
|
7
|
+
amount: bigint;
|
|
8
|
+
}[];
|
|
9
|
+
spender: Address;
|
|
10
|
+
nonce: bigint;
|
|
11
|
+
deadline: bigint;
|
|
12
|
+
mandate: {
|
|
13
|
+
target: {
|
|
14
|
+
recipient: Address;
|
|
15
|
+
tokenOut: readonly {
|
|
16
|
+
token: Address;
|
|
17
|
+
amount: bigint;
|
|
18
|
+
}[];
|
|
19
|
+
targetChain: bigint;
|
|
20
|
+
fillExpiry: bigint;
|
|
21
|
+
};
|
|
22
|
+
minGas: bigint;
|
|
23
|
+
originOps: {
|
|
24
|
+
vt: Hex;
|
|
25
|
+
ops: readonly {
|
|
26
|
+
to: Address;
|
|
27
|
+
value: bigint;
|
|
28
|
+
data: Hex;
|
|
29
|
+
}[];
|
|
30
|
+
};
|
|
31
|
+
destOps: {
|
|
32
|
+
vt: Hex;
|
|
33
|
+
ops: readonly {
|
|
34
|
+
to: Address;
|
|
35
|
+
value: bigint;
|
|
36
|
+
data: Hex;
|
|
37
|
+
}[];
|
|
38
|
+
};
|
|
39
|
+
q: Hex;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Builds the policySpecificData calldata for a Permit2ClaimPolicy EIP-1271 check.
|
|
44
|
+
*
|
|
45
|
+
* Format (derived from Permit2ClaimPolicy.sol calldata layout):
|
|
46
|
+
* Header: [spender:20][nonce:32][deadline:32]
|
|
47
|
+
* TokenIn: expanded [count:1][token:32][amount:32]... OR pre-computed hash [32]
|
|
48
|
+
* Mandate: if any target check enabled — expanded target + minGas:16 + ops hashes + q
|
|
49
|
+
* else — pre-computed mandateHash [32]
|
|
50
|
+
*
|
|
51
|
+
*/
|
|
52
|
+
export declare function buildPermit2ClaimPolicyCalldata(policy: Permit2ClaimPolicy, message: Permit2ClaimMessage): Hex;
|
|
53
|
+
export declare const PERMIT2_CLAIM_POLICY_ADDRESS: Address;
|
|
54
|
+
export declare function encodePermit2ClaimPolicyInitData(policy: Permit2ClaimPolicy): Hex;
|
|
55
|
+
//# sourceMappingURL=permit2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permit2.d.ts","sourceRoot":"","sources":["../../../../../../modules/validators/policies/claim/permit2.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAIZ,KAAK,GAAG,EAKT,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAiD3D,oFAAoF;AACpF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACxD,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE;QACP,MAAM,EAAE;YACN,SAAS,EAAE,OAAO,CAAA;YAClB,QAAQ,EAAE,SAAS;gBAAE,KAAK,EAAE,OAAO,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,EAAE,CAAA;YACvD,WAAW,EAAE,MAAM,CAAA;YACnB,UAAU,EAAE,MAAM,CAAA;SACnB,CAAA;QACD,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE;YACT,EAAE,EAAE,GAAG,CAAA;YACP,GAAG,EAAE,SAAS;gBAAE,EAAE,EAAE,OAAO,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,GAAG,CAAA;aAAE,EAAE,CAAA;SAC1D,CAAA;QACD,OAAO,EAAE;YACP,EAAE,EAAE,GAAG,CAAA;YACP,GAAG,EAAE,SAAS;gBAAE,EAAE,EAAE,OAAO,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,GAAG,CAAA;aAAE,EAAE,CAAA;SAC1D,CAAA;QACD,CAAC,EAAE,GAAG,CAAA;KACP,CAAA;CACF;AA+ED;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,mBAAmB,GAC3B,GAAG,CA2EL;AAED,eAAO,MAAM,4BAA4B,EAAE,OACG,CAAA;AAE9C,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,kBAAkB,GACzB,GAAG,CA2FL"}
|