@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
|
@@ -39,6 +39,7 @@ declare function getTypedDataPackedSignature<typedData extends TypedData | Recor
|
|
|
39
39
|
declare function isDeployed(config: RhinestoneConfig, chain: Chain): Promise<boolean>;
|
|
40
40
|
declare function deploy(config: RhinestoneConfig, chain: Chain, params?: {
|
|
41
41
|
sponsored?: boolean;
|
|
42
|
+
eip7702InitSignature?: Hex;
|
|
42
43
|
}): Promise<boolean>;
|
|
43
44
|
declare function setup(config: RhinestoneConfig, chain: Chain): Promise<boolean>;
|
|
44
45
|
declare function toErc6492Signature(config: RhinestoneConfig, signature: Hex, chain: Chain): Promise<Hex>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../accounts/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../accounts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -433,7 +433,7 @@ async function deploy(config, chain, params) {
|
|
|
433
433
|
await deployWithBundler(chain, config);
|
|
434
434
|
}
|
|
435
435
|
else {
|
|
436
|
-
await deployWithIntent(chain, config, params?.sponsored ?? false);
|
|
436
|
+
await deployWithIntent(chain, config, params?.sponsored ?? false, params?.eip7702InitSignature);
|
|
437
437
|
}
|
|
438
438
|
return true;
|
|
439
439
|
}
|
|
@@ -503,7 +503,7 @@ async function setup(config, chain) {
|
|
|
503
503
|
await (0, execution_1.waitForExecution)(config, result, true);
|
|
504
504
|
return true;
|
|
505
505
|
}
|
|
506
|
-
async function deployWithIntent(chain, config, sponsored) {
|
|
506
|
+
async function deployWithIntent(chain, config, sponsored, eip7702InitSignature) {
|
|
507
507
|
const publicClient = (0, viem_1.createPublicClient)({
|
|
508
508
|
chain,
|
|
509
509
|
transport: (0, utils_1.createTransport)(chain, config.provider),
|
|
@@ -514,11 +514,17 @@ async function deployWithIntent(chain, config, sponsored) {
|
|
|
514
514
|
// Already deployed
|
|
515
515
|
return;
|
|
516
516
|
}
|
|
517
|
+
// For EIP-7702 accounts, auto-sign if no signature was provided
|
|
518
|
+
let initSignature = eip7702InitSignature;
|
|
519
|
+
if (!initSignature && is7702(config)) {
|
|
520
|
+
initSignature = await signEip7702InitData(config);
|
|
521
|
+
}
|
|
517
522
|
const result = await (0, execution_1.sendTransaction)(config, {
|
|
518
523
|
sourceChains: [chain],
|
|
519
524
|
targetChain: chain,
|
|
520
525
|
calls: [],
|
|
521
526
|
sponsored,
|
|
527
|
+
eip7702InitSignature: initSignature,
|
|
522
528
|
});
|
|
523
529
|
await (0, execution_1.waitForExecution)(config, result, true);
|
|
524
530
|
}
|
|
@@ -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,465 @@
|
|
|
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
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const viem_1 = require("viem");
|
|
37
|
+
const chains_1 = require("viem/chains");
|
|
38
|
+
const vitest_1 = require("vitest");
|
|
39
|
+
const consts_1 = require("../../test/consts");
|
|
40
|
+
const utils_1 = require("./utils");
|
|
41
|
+
const { MOCK_EMISSARY, MOCK_EIP1271, MOCK_ACCOUNT, MOCK_EXECUTOR, MOCK_VALIDATOR, mockGetEmissarySignature, mockGetEip1271Signature, mockIsSessionEnabled, MOCK_TYPED_DATA, } = vitest_1.vi.hoisted(() => {
|
|
42
|
+
const MOCK_ACCOUNT = '0x1111111111111111111111111111111111111111';
|
|
43
|
+
const MOCK_EXECUTOR = '0x2222222222222222222222222222222222222222';
|
|
44
|
+
const MOCK_VALIDATOR = '0x3333333333333333333333333333333333333333';
|
|
45
|
+
const MOCK_EMISSARY = `0x${'ee'.repeat(65)}`;
|
|
46
|
+
const MOCK_EIP1271 = `0x${'12'.repeat(65)}`;
|
|
47
|
+
const mockGetEmissarySignature = vitest_1.vi.fn().mockResolvedValue(MOCK_EMISSARY);
|
|
48
|
+
const mockGetEip1271Signature = vitest_1.vi.fn().mockResolvedValue(MOCK_EIP1271);
|
|
49
|
+
const mockIsSessionEnabled = vitest_1.vi.fn().mockResolvedValue(true);
|
|
50
|
+
const MOCK_TYPED_DATA = {
|
|
51
|
+
domain: {
|
|
52
|
+
name: 'Test',
|
|
53
|
+
version: '1',
|
|
54
|
+
chainId: 8453,
|
|
55
|
+
verifyingContract: MOCK_EXECUTOR,
|
|
56
|
+
},
|
|
57
|
+
types: {
|
|
58
|
+
Test: [{ name: 'value', type: 'uint256' }],
|
|
59
|
+
},
|
|
60
|
+
primaryType: 'Test',
|
|
61
|
+
message: { value: 1n },
|
|
62
|
+
};
|
|
63
|
+
return {
|
|
64
|
+
MOCK_EMISSARY: MOCK_EMISSARY,
|
|
65
|
+
MOCK_EIP1271: MOCK_EIP1271,
|
|
66
|
+
MOCK_ACCOUNT: MOCK_ACCOUNT,
|
|
67
|
+
MOCK_EXECUTOR: MOCK_EXECUTOR,
|
|
68
|
+
MOCK_VALIDATOR: MOCK_VALIDATOR,
|
|
69
|
+
mockGetEmissarySignature,
|
|
70
|
+
mockGetEip1271Signature,
|
|
71
|
+
mockIsSessionEnabled,
|
|
72
|
+
MOCK_TYPED_DATA,
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
vitest_1.vi.mock('../orchestrator', () => ({
|
|
76
|
+
getOrchestrator: vitest_1.vi.fn(),
|
|
77
|
+
}));
|
|
78
|
+
vitest_1.vi.mock('../accounts', () => ({
|
|
79
|
+
getAddress: vitest_1.vi.fn().mockReturnValue(MOCK_ACCOUNT),
|
|
80
|
+
getEmissarySignature: mockGetEmissarySignature,
|
|
81
|
+
getEip1271Signature: mockGetEip1271Signature,
|
|
82
|
+
getSmartAccount: vitest_1.vi.fn(),
|
|
83
|
+
getEip712Domain: vitest_1.vi.fn(),
|
|
84
|
+
getAccountProvider: vitest_1.vi.fn(),
|
|
85
|
+
getInitCode: vitest_1.vi.fn(),
|
|
86
|
+
getGuardianSmartAccount: vitest_1.vi.fn(),
|
|
87
|
+
getTypedDataPackedSignature: vitest_1.vi.fn(),
|
|
88
|
+
toErc6492Signature: vitest_1.vi.fn(),
|
|
89
|
+
is7702: vitest_1.vi.fn().mockReturnValue(false),
|
|
90
|
+
getEip7702InitCall: vitest_1.vi.fn(),
|
|
91
|
+
EoaAccountMustHaveAccountError: class extends Error {
|
|
92
|
+
},
|
|
93
|
+
EoaSigningMethodNotConfiguredError: class extends Error {
|
|
94
|
+
},
|
|
95
|
+
FactoryArgsNotAvailableError: class extends Error {
|
|
96
|
+
},
|
|
97
|
+
}));
|
|
98
|
+
vitest_1.vi.mock('../accounts/signing/common', () => ({
|
|
99
|
+
convertOwnerSetToSignerSet: vitest_1.vi.fn(),
|
|
100
|
+
}));
|
|
101
|
+
vitest_1.vi.mock('../accounts/startale', () => ({
|
|
102
|
+
K1_DEFAULT_VALIDATOR_ADDRESS: '0x0000000000000000000000000000000000000000',
|
|
103
|
+
}));
|
|
104
|
+
vitest_1.vi.mock('../accounts/utils', () => ({
|
|
105
|
+
createTransport: vitest_1.vi.fn(),
|
|
106
|
+
getBundlerClient: vitest_1.vi.fn(),
|
|
107
|
+
}));
|
|
108
|
+
vitest_1.vi.mock('../modules', () => ({
|
|
109
|
+
getIntentExecutor: vitest_1.vi.fn().mockReturnValue({
|
|
110
|
+
address: MOCK_EXECUTOR,
|
|
111
|
+
type: 7,
|
|
112
|
+
initData: '0x',
|
|
113
|
+
deInitData: '0x',
|
|
114
|
+
additionalContext: '0x',
|
|
115
|
+
}),
|
|
116
|
+
}));
|
|
117
|
+
vitest_1.vi.mock('../modules/validators', () => ({
|
|
118
|
+
isSessionEnabled: mockIsSessionEnabled,
|
|
119
|
+
getOwnerValidator: vitest_1.vi.fn().mockReturnValue({
|
|
120
|
+
address: MOCK_VALIDATOR,
|
|
121
|
+
type: 1,
|
|
122
|
+
initData: '0x',
|
|
123
|
+
deInitData: '0x',
|
|
124
|
+
additionalContext: '0x',
|
|
125
|
+
}),
|
|
126
|
+
buildMockSignature: vitest_1.vi.fn(),
|
|
127
|
+
getPermissionId: vitest_1.vi.fn().mockReturnValue(`0x${'cc'.repeat(32)}`),
|
|
128
|
+
getSmartSessionValidator: vitest_1.vi.fn().mockReturnValue({
|
|
129
|
+
address: MOCK_VALIDATOR,
|
|
130
|
+
type: 1,
|
|
131
|
+
initData: '0x',
|
|
132
|
+
deInitData: '0x',
|
|
133
|
+
additionalContext: '0x',
|
|
134
|
+
}),
|
|
135
|
+
}));
|
|
136
|
+
vitest_1.vi.mock('../modules/validators/core', () => ({
|
|
137
|
+
supportsEip712: vitest_1.vi.fn().mockReturnValue(false),
|
|
138
|
+
getMultiFactorValidator: vitest_1.vi.fn(),
|
|
139
|
+
getSocialRecoveryValidator: vitest_1.vi.fn(),
|
|
140
|
+
getWebAuthnValidator: vitest_1.vi.fn(),
|
|
141
|
+
}));
|
|
142
|
+
vitest_1.vi.mock('../orchestrator/registry', () => ({
|
|
143
|
+
getChainById: vitest_1.vi.fn().mockReturnValue(chains_1.base),
|
|
144
|
+
getTokenAddress: vitest_1.vi.fn(),
|
|
145
|
+
resolveTokenAddress: vitest_1.vi.fn(),
|
|
146
|
+
}));
|
|
147
|
+
vitest_1.vi.mock('./singleChainOps', () => ({
|
|
148
|
+
getTypedData: vitest_1.vi.fn().mockReturnValue(MOCK_TYPED_DATA),
|
|
149
|
+
}));
|
|
150
|
+
vitest_1.vi.mock('./compact', () => ({
|
|
151
|
+
getCompactTypedData: vitest_1.vi.fn().mockReturnValue(MOCK_TYPED_DATA),
|
|
152
|
+
}));
|
|
153
|
+
vitest_1.vi.mock('./error', () => ({
|
|
154
|
+
Eip7702InitSignatureRequiredError: class extends Error {
|
|
155
|
+
},
|
|
156
|
+
SignerNotSupportedError: class extends Error {
|
|
157
|
+
},
|
|
158
|
+
}));
|
|
159
|
+
vitest_1.vi.mock('./permit2', () => ({
|
|
160
|
+
getTypedData: vitest_1.vi.fn().mockReturnValue(MOCK_TYPED_DATA),
|
|
161
|
+
}));
|
|
162
|
+
// --- Helpers ---
|
|
163
|
+
const makeElement = (settlementLayer) => ({
|
|
164
|
+
mandate: {
|
|
165
|
+
destinationChainId: chains_1.base.id,
|
|
166
|
+
destinationOps: {
|
|
167
|
+
vt: `0x${'00'.repeat(32)}`,
|
|
168
|
+
ops: [],
|
|
169
|
+
},
|
|
170
|
+
preClaimOps: {
|
|
171
|
+
vt: `0x${'00'.repeat(32)}`,
|
|
172
|
+
ops: [],
|
|
173
|
+
},
|
|
174
|
+
qualifier: {
|
|
175
|
+
settlementContext: {
|
|
176
|
+
settlementLayer,
|
|
177
|
+
fundingMethod: 'NO_FUNDING',
|
|
178
|
+
using7579: true,
|
|
179
|
+
gasRefund: {
|
|
180
|
+
token: viem_1.zeroAddress,
|
|
181
|
+
exchangeRate: 0n,
|
|
182
|
+
overhead: 0n,
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
});
|
|
188
|
+
const makeIntentOp = (settlementLayer, targetExecutionNonce = '200') => {
|
|
189
|
+
const layers = Array.isArray(settlementLayer)
|
|
190
|
+
? settlementLayer
|
|
191
|
+
: [settlementLayer];
|
|
192
|
+
return {
|
|
193
|
+
sponsor: MOCK_ACCOUNT,
|
|
194
|
+
nonce: '100',
|
|
195
|
+
targetExecutionNonce,
|
|
196
|
+
expires: '9999999999',
|
|
197
|
+
elements: layers.map(makeElement),
|
|
198
|
+
serverSignature: '0x',
|
|
199
|
+
signedMetadata: { fees: {} },
|
|
200
|
+
};
|
|
201
|
+
};
|
|
202
|
+
// verifyExecutions auto-derived as true when session.actions is non-empty
|
|
203
|
+
const sessionWithActions = {
|
|
204
|
+
chain: chains_1.base,
|
|
205
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA] },
|
|
206
|
+
actions: [{ policies: [{ type: 'usage-limit', limit: 1n }] }],
|
|
207
|
+
};
|
|
208
|
+
// verifyExecutions auto-derived as false when session.actions is absent
|
|
209
|
+
const sessionNoActions = {
|
|
210
|
+
chain: chains_1.base,
|
|
211
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA] },
|
|
212
|
+
};
|
|
213
|
+
const config = {
|
|
214
|
+
apiKey: 'test',
|
|
215
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA] },
|
|
216
|
+
};
|
|
217
|
+
const makeSessionSigners = (session) => ({
|
|
218
|
+
type: 'experimental_session',
|
|
219
|
+
session,
|
|
220
|
+
});
|
|
221
|
+
const ownerSigners = {
|
|
222
|
+
type: 'owner',
|
|
223
|
+
kind: 'ecdsa',
|
|
224
|
+
accounts: [consts_1.accountA],
|
|
225
|
+
};
|
|
226
|
+
// --- Tests ---
|
|
227
|
+
(0, vitest_1.beforeEach)(() => {
|
|
228
|
+
vitest_1.vi.clearAllMocks();
|
|
229
|
+
mockGetEmissarySignature.mockResolvedValue(MOCK_EMISSARY);
|
|
230
|
+
mockGetEip1271Signature.mockResolvedValue(MOCK_EIP1271);
|
|
231
|
+
mockIsSessionEnabled.mockResolvedValue(true);
|
|
232
|
+
});
|
|
233
|
+
(0, vitest_1.describe)('getTargetExecutionSignature', () => {
|
|
234
|
+
(0, vitest_1.test)('undefined signers returns undefined', async () => {
|
|
235
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
236
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, undefined);
|
|
237
|
+
(0, vitest_1.expect)(result).toBeUndefined();
|
|
238
|
+
});
|
|
239
|
+
(0, vitest_1.test)('non-session signers returns undefined', async () => {
|
|
240
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
241
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, ownerSigners);
|
|
242
|
+
(0, vitest_1.expect)(result).toBeUndefined();
|
|
243
|
+
});
|
|
244
|
+
(0, vitest_1.test)('SAME_CHAIN + verifyExecutions: true returns emissary sig', async () => {
|
|
245
|
+
const intentOp = makeIntentOp('SAME_CHAIN');
|
|
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)('INTENT_EXECUTOR + verifyExecutions: false (no actions) returns undefined', async () => {
|
|
251
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
252
|
+
const signers = makeSessionSigners(sessionNoActions);
|
|
253
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
254
|
+
(0, vitest_1.expect)(result).toBeUndefined();
|
|
255
|
+
});
|
|
256
|
+
(0, vitest_1.test)('explicit verifyExecutions: false on signers overrides session with actions', async () => {
|
|
257
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
258
|
+
const signers = {
|
|
259
|
+
type: 'experimental_session',
|
|
260
|
+
session: sessionWithActions,
|
|
261
|
+
verifyExecutions: false,
|
|
262
|
+
};
|
|
263
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
264
|
+
(0, vitest_1.expect)(result).toBeUndefined();
|
|
265
|
+
});
|
|
266
|
+
(0, vitest_1.test)('explicit verifyExecutions: true on signers overrides session without actions', async () => {
|
|
267
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
268
|
+
const signers = {
|
|
269
|
+
type: 'experimental_session',
|
|
270
|
+
session: sessionNoActions,
|
|
271
|
+
verifyExecutions: true,
|
|
272
|
+
};
|
|
273
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
274
|
+
(0, vitest_1.expect)(result).toBe(MOCK_EMISSARY);
|
|
275
|
+
});
|
|
276
|
+
(0, vitest_1.test)('session not yet enabled still resolves verifyExecutions from actions', async () => {
|
|
277
|
+
mockIsSessionEnabled.mockResolvedValueOnce(false);
|
|
278
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
279
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
280
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
281
|
+
(0, vitest_1.expect)(result).toBe(MOCK_EMISSARY);
|
|
282
|
+
});
|
|
283
|
+
(0, vitest_1.test)('mixed INTENT_EXECUTOR + SAME_CHAIN elements returns emissary sig', async () => {
|
|
284
|
+
const intentOp = makeIntentOp(['INTENT_EXECUTOR', 'SAME_CHAIN']);
|
|
285
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
286
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
287
|
+
(0, vitest_1.expect)(result).toBe(MOCK_EMISSARY);
|
|
288
|
+
});
|
|
289
|
+
(0, vitest_1.test)('INTENT_EXECUTOR + verifyExecutions: true returns emissary sig', async () => {
|
|
290
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
291
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
292
|
+
const result = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
293
|
+
(0, vitest_1.expect)(result).toBe(MOCK_EMISSARY);
|
|
294
|
+
(0, vitest_1.expect)(mockGetEmissarySignature).toHaveBeenCalledTimes(1);
|
|
295
|
+
(0, vitest_1.expect)(mockGetEip1271Signature).not.toHaveBeenCalled();
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
(0, vitest_1.describe)('signIntent with owner signers', () => {
|
|
299
|
+
(0, vitest_1.test)('gives EIP-1271 destinationSignature, not emissary', async () => {
|
|
300
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
301
|
+
const { destinationSignature, originSignatures } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, ownerSigners);
|
|
302
|
+
(0, vitest_1.expect)(destinationSignature).toBe(MOCK_EIP1271);
|
|
303
|
+
(0, vitest_1.expect)(mockGetEip1271Signature).toHaveBeenCalled();
|
|
304
|
+
(0, vitest_1.expect)(mockGetEmissarySignature).not.toHaveBeenCalled();
|
|
305
|
+
(0, vitest_1.expect)(originSignatures).toHaveLength(1);
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
(0, vitest_1.describe)('signIntent destinationSignature', () => {
|
|
309
|
+
(0, vitest_1.test)('verifyExecutions: true + INTENT_EXECUTOR — emissary destinationSignature, both sigs generated', async () => {
|
|
310
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
311
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
312
|
+
const { destinationSignature, originSignatures } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, signers);
|
|
313
|
+
// destinationSignature picks preClaimSig (emissary format) from the { preClaimSig, notarizedClaimSig } pair
|
|
314
|
+
(0, vitest_1.expect)(destinationSignature).toBe(MOCK_EMISSARY);
|
|
315
|
+
// Both emissary and EIP-1271 are produced internally (preClaimSig + notarizedClaimSig)
|
|
316
|
+
(0, vitest_1.expect)(mockGetEmissarySignature).toHaveBeenCalled();
|
|
317
|
+
(0, vitest_1.expect)(mockGetEip1271Signature).toHaveBeenCalled();
|
|
318
|
+
(0, vitest_1.expect)(originSignatures).toHaveLength(1);
|
|
319
|
+
});
|
|
320
|
+
(0, vitest_1.test)('verifyExecutions: false + INTENT_EXECUTOR — EIP-1271 destinationSignature only', async () => {
|
|
321
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
322
|
+
const signers = makeSessionSigners(sessionNoActions);
|
|
323
|
+
const { destinationSignature, originSignatures } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, signers);
|
|
324
|
+
(0, vitest_1.expect)(destinationSignature).toBe(MOCK_EIP1271);
|
|
325
|
+
(0, vitest_1.expect)(mockGetEmissarySignature).not.toHaveBeenCalled();
|
|
326
|
+
(0, vitest_1.expect)(originSignatures).toHaveLength(1);
|
|
327
|
+
});
|
|
328
|
+
(0, vitest_1.test)('verifyExecutions: true + SAME_CHAIN — emissary destinationSignature', async () => {
|
|
329
|
+
const intentOp = makeIntentOp('SAME_CHAIN');
|
|
330
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
331
|
+
const { destinationSignature } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, signers);
|
|
332
|
+
(0, vitest_1.expect)(destinationSignature).toBe(MOCK_EMISSARY);
|
|
333
|
+
});
|
|
334
|
+
(0, vitest_1.test)('multi-element op produces one originSignature per element', async () => {
|
|
335
|
+
const intentOp = makeIntentOp(['INTENT_EXECUTOR', 'INTENT_EXECUTOR']);
|
|
336
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
337
|
+
const { originSignatures } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, signers);
|
|
338
|
+
(0, vitest_1.expect)(originSignatures).toHaveLength(2);
|
|
339
|
+
});
|
|
340
|
+
});
|
|
341
|
+
(0, vitest_1.describe)('signIntent + getTargetExecutionSignature routing', () => {
|
|
342
|
+
(0, vitest_1.test)('INTENT_EXECUTOR + verifyExecutions: true — EMISSARY for both', async () => {
|
|
343
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
344
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
345
|
+
const { destinationSignature } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, signers);
|
|
346
|
+
const targetExecutionSignature = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
347
|
+
(0, vitest_1.expect)(destinationSignature).toBe(MOCK_EMISSARY);
|
|
348
|
+
(0, vitest_1.expect)(targetExecutionSignature).toBe(MOCK_EMISSARY);
|
|
349
|
+
});
|
|
350
|
+
(0, vitest_1.test)('INTENT_EXECUTOR + verifyExecutions: false — EIP-1271 destination, undefined target', async () => {
|
|
351
|
+
const intentOp = makeIntentOp('INTENT_EXECUTOR');
|
|
352
|
+
const signers = makeSessionSigners(sessionNoActions);
|
|
353
|
+
const { destinationSignature } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, signers);
|
|
354
|
+
const targetExecutionSignature = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
355
|
+
(0, vitest_1.expect)(destinationSignature).toBe(MOCK_EIP1271);
|
|
356
|
+
(0, vitest_1.expect)(targetExecutionSignature).toBeUndefined();
|
|
357
|
+
});
|
|
358
|
+
(0, vitest_1.test)('SAME_CHAIN + verifyExecutions: true — EMISSARY for both destination and target', async () => {
|
|
359
|
+
const intentOp = makeIntentOp('SAME_CHAIN');
|
|
360
|
+
const signers = makeSessionSigners(sessionWithActions);
|
|
361
|
+
const { destinationSignature } = await (0, utils_1.signIntent)(config, intentOp, chains_1.base, signers);
|
|
362
|
+
const targetExecutionSignature = await (0, utils_1.getTargetExecutionSignature)(config, intentOp, chains_1.base, signers);
|
|
363
|
+
(0, vitest_1.expect)(destinationSignature).toBe(MOCK_EMISSARY);
|
|
364
|
+
(0, vitest_1.expect)(targetExecutionSignature).toBe(MOCK_EMISSARY);
|
|
365
|
+
});
|
|
366
|
+
});
|
|
367
|
+
// Permit2 typed data shape that triggers resolveClaimPolicyData
|
|
368
|
+
const MOCK_PERMIT2_TYPED_DATA = {
|
|
369
|
+
domain: { name: 'Permit2', chainId: 8453, verifyingContract: MOCK_EXECUTOR },
|
|
370
|
+
types: {
|
|
371
|
+
PermitBatchWitnessTransferFrom: [{ name: 'nonce', type: 'uint256' }],
|
|
372
|
+
},
|
|
373
|
+
primaryType: 'PermitBatchWitnessTransferFrom',
|
|
374
|
+
message: {
|
|
375
|
+
permitted: [
|
|
376
|
+
{ token: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', amount: 20000n },
|
|
377
|
+
],
|
|
378
|
+
spender: MOCK_EXECUTOR,
|
|
379
|
+
nonce: 1n,
|
|
380
|
+
deadline: 9999999999n,
|
|
381
|
+
mandate: {
|
|
382
|
+
target: {
|
|
383
|
+
recipient: MOCK_ACCOUNT,
|
|
384
|
+
tokenOut: [],
|
|
385
|
+
targetChain: 8453n,
|
|
386
|
+
fillExpiry: 9999999999n,
|
|
387
|
+
},
|
|
388
|
+
minGas: 0n,
|
|
389
|
+
originOps: { vt: `0x${'00'.repeat(32)}`, ops: [] },
|
|
390
|
+
destOps: { vt: `0x${'00'.repeat(32)}`, ops: [] },
|
|
391
|
+
q: `0x${'ab'.repeat(32)}`,
|
|
392
|
+
},
|
|
393
|
+
},
|
|
394
|
+
};
|
|
395
|
+
const makePermit2IntentOp = () => ({
|
|
396
|
+
sponsor: MOCK_ACCOUNT,
|
|
397
|
+
nonce: '100',
|
|
398
|
+
targetExecutionNonce: '200',
|
|
399
|
+
expires: '9999999999',
|
|
400
|
+
elements: [
|
|
401
|
+
{
|
|
402
|
+
mandate: {
|
|
403
|
+
destinationChainId: chains_1.base.id,
|
|
404
|
+
destinationOps: { vt: `0x${'00'.repeat(32)}`, ops: [] },
|
|
405
|
+
preClaimOps: { vt: `0x${'00'.repeat(32)}`, ops: [] },
|
|
406
|
+
qualifier: {
|
|
407
|
+
settlementContext: {
|
|
408
|
+
// SAME_CHAIN avoids the INTENT_EXECUTOR branch so the PERMIT2 funding path is taken
|
|
409
|
+
settlementLayer: 'SAME_CHAIN',
|
|
410
|
+
fundingMethod: 'PERMIT2',
|
|
411
|
+
using7579: true,
|
|
412
|
+
gasRefund: { token: viem_1.zeroAddress, exchangeRate: 0n, overhead: 0n },
|
|
413
|
+
},
|
|
414
|
+
},
|
|
415
|
+
},
|
|
416
|
+
},
|
|
417
|
+
],
|
|
418
|
+
});
|
|
419
|
+
const sessionWithClaimPolicy = {
|
|
420
|
+
chain: chains_1.base,
|
|
421
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA] },
|
|
422
|
+
actions: [{ policies: [{ type: 'usage-limit', limit: 1n }] }],
|
|
423
|
+
claimPolicies: [{ type: 'permit2-claim' }],
|
|
424
|
+
};
|
|
425
|
+
(0, vitest_1.describe)('signIntent with permit2 claim policy', () => {
|
|
426
|
+
(0, vitest_1.test)('Permit2 typed data + claimPolicies → getEip1271Signature called with claimPolicyData', async () => {
|
|
427
|
+
const { getTypedData: mockPermit2GetTypedData } = await Promise.resolve().then(() => __importStar(require('./permit2')));
|
|
428
|
+
vitest_1.vi.mocked(mockPermit2GetTypedData).mockReturnValueOnce(MOCK_PERMIT2_TYPED_DATA);
|
|
429
|
+
const signers = {
|
|
430
|
+
type: 'experimental_session',
|
|
431
|
+
session: sessionWithClaimPolicy,
|
|
432
|
+
verifyExecutions: true,
|
|
433
|
+
};
|
|
434
|
+
await (0, utils_1.signIntent)(config, makePermit2IntentOp(), chains_1.base, signers);
|
|
435
|
+
(0, vitest_1.expect)(mockGetEip1271Signature).toHaveBeenCalled();
|
|
436
|
+
const sessionSignersArg = mockGetEip1271Signature.mock.calls[0][1];
|
|
437
|
+
(0, vitest_1.expect)(sessionSignersArg.claimPolicyData).toBeDefined();
|
|
438
|
+
(0, vitest_1.expect)(sessionSignersArg.claimPolicyData).not.toBe('0x');
|
|
439
|
+
});
|
|
440
|
+
(0, vitest_1.test)('non-Permit2 typed data + claimPolicies → getEip1271Signature called without claimPolicyData', async () => {
|
|
441
|
+
// Default mock returns MOCK_TYPED_DATA (primaryType: 'Test'), not Permit2
|
|
442
|
+
const signers = {
|
|
443
|
+
type: 'experimental_session',
|
|
444
|
+
session: sessionWithClaimPolicy,
|
|
445
|
+
verifyExecutions: true,
|
|
446
|
+
};
|
|
447
|
+
await (0, utils_1.signIntent)(config, makeIntentOp('INTENT_EXECUTOR'), chains_1.base, signers);
|
|
448
|
+
(0, vitest_1.expect)(mockGetEip1271Signature).toHaveBeenCalled();
|
|
449
|
+
const sessionSignersArg = mockGetEip1271Signature.mock.calls[0][1];
|
|
450
|
+
(0, vitest_1.expect)(sessionSignersArg.claimPolicyData).toBeUndefined();
|
|
451
|
+
});
|
|
452
|
+
(0, vitest_1.test)('Permit2 typed data without claimPolicies → getEip1271Signature called without claimPolicyData', async () => {
|
|
453
|
+
const { getTypedData: mockPermit2GetTypedData } = await Promise.resolve().then(() => __importStar(require('./permit2')));
|
|
454
|
+
vitest_1.vi.mocked(mockPermit2GetTypedData).mockReturnValueOnce(MOCK_PERMIT2_TYPED_DATA);
|
|
455
|
+
const signers = {
|
|
456
|
+
type: 'experimental_session',
|
|
457
|
+
session: sessionWithActions, // no claimPolicies
|
|
458
|
+
verifyExecutions: true,
|
|
459
|
+
};
|
|
460
|
+
await (0, utils_1.signIntent)(config, makePermit2IntentOp(), chains_1.base, signers);
|
|
461
|
+
(0, vitest_1.expect)(mockGetEip1271Signature).toHaveBeenCalled();
|
|
462
|
+
const sessionSignersArg = mockGetEip1271Signature.mock.calls[0][1];
|
|
463
|
+
(0, vitest_1.expect)(sessionSignersArg.claimPolicyData).toBeUndefined();
|
|
464
|
+
});
|
|
465
|
+
});
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../execution/utils.ts"],"names":[],"mappings":"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"}
|