@rhinestone/sdk 1.5.1 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/src/accounts/error.d.ts +1 -1
- package/dist/src/accounts/error.js +1 -19
- package/dist/src/accounts/index.d.ts +5 -5
- package/dist/src/accounts/index.js +121 -157
- package/dist/src/accounts/json-rpc/index.d.ts +1 -1
- package/dist/src/accounts/json-rpc/index.js +8 -10
- package/dist/src/accounts/json-rpc/providers.d.ts +1 -1
- package/dist/src/accounts/json-rpc/providers.d.ts.map +1 -1
- package/dist/src/accounts/json-rpc/providers.js +7 -9
- package/dist/src/accounts/kernel.d.ts +3 -3
- package/dist/src/accounts/kernel.js +66 -75
- package/dist/src/accounts/nexus.d.ts +3 -3
- package/dist/src/accounts/nexus.js +62 -73
- package/dist/src/accounts/passport.d.ts +3 -3
- package/dist/src/accounts/passport.js +9 -13
- package/dist/src/accounts/safe.d.ts +3 -3
- package/dist/src/accounts/safe.js +54 -63
- package/dist/src/accounts/signing/common.d.ts +2 -2
- package/dist/src/accounts/signing/common.js +30 -36
- package/dist/src/accounts/signing/message.d.ts +2 -2
- package/dist/src/accounts/signing/message.js +10 -12
- package/dist/src/accounts/signing/passkeys.js +11 -17
- package/dist/src/accounts/signing/typedData.d.ts +1 -1
- package/dist/src/accounts/signing/typedData.js +6 -8
- package/dist/src/accounts/startale.d.ts +3 -3
- package/dist/src/accounts/startale.js +37 -47
- package/dist/src/accounts/utils.d.ts +2 -2
- package/dist/src/accounts/utils.js +22 -28
- package/dist/src/accounts/walletClient.js +4 -8
- package/dist/src/actions/compact.d.ts +1 -1
- package/dist/src/actions/compact.js +22 -35
- package/dist/src/actions/deployment.d.ts +1 -1
- package/dist/src/actions/deployment.js +11 -13
- package/dist/src/actions/ecdsa.d.ts +1 -1
- package/dist/src/actions/ecdsa.js +14 -20
- package/dist/src/actions/index.d.ts +2 -2
- package/dist/src/actions/index.js +6 -10
- package/dist/src/actions/mfa.d.ts +1 -1
- package/dist/src/actions/mfa.js +18 -24
- package/dist/src/actions/passkeys.d.ts +2 -2
- package/dist/src/actions/passkeys.js +14 -20
- package/dist/src/actions/recovery.d.ts +1 -1
- package/dist/src/actions/recovery.js +25 -29
- package/dist/src/actions/smart-sessions.d.ts +1 -1
- package/dist/src/actions/smart-sessions.js +8 -12
- package/dist/src/auth/provider.d.ts +1 -1
- package/dist/src/auth/provider.js +1 -4
- package/dist/src/errors/index.d.ts +4 -4
- package/dist/src/errors/index.d.ts.map +1 -1
- package/dist/src/errors/index.js +12 -54
- package/dist/src/execution/compact.d.ts +1 -144
- package/dist/src/execution/compact.d.ts.map +1 -1
- package/dist/src/execution/compact.js +1 -117
- package/dist/src/execution/error.d.ts +10 -1
- package/dist/src/execution/error.d.ts.map +1 -1
- package/dist/src/execution/error.js +9 -11
- package/dist/src/execution/index.d.ts +10 -11
- package/dist/src/execution/index.d.ts.map +1 -1
- package/dist/src/execution/index.js +64 -75
- package/dist/src/execution/permit2.d.ts +2 -138
- package/dist/src/execution/permit2.d.ts.map +1 -1
- package/dist/src/execution/permit2.js +5 -239
- package/dist/src/execution/utils.d.ts +31 -15
- package/dist/src/execution/utils.d.ts.map +1 -1
- package/dist/src/execution/utils.js +283 -256
- package/dist/src/index.d.ts +15 -14
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +57 -68
- package/dist/src/jwt-server/digest.js +3 -6
- package/dist/src/jwt-server/express.d.ts +1 -1
- package/dist/src/jwt-server/express.d.ts.map +1 -1
- package/dist/src/jwt-server/express.js +6 -7
- package/dist/src/jwt-server/handlers.d.ts +1 -1
- package/dist/src/jwt-server/handlers.js +7 -11
- package/dist/src/jwt-server/index.d.ts +7 -7
- package/dist/src/jwt-server/index.js +6 -17
- package/dist/src/jwt-server/jcs.js +1 -4
- package/dist/src/jwt-server/signer.d.ts +1 -1
- package/dist/src/jwt-server/signer.js +10 -13
- package/dist/src/jwt-server/sponsorship.js +2 -7
- package/dist/src/jwt-server/web.d.ts +1 -1
- package/dist/src/jwt-server/web.js +5 -9
- package/dist/src/modules/abi/smart-session-emissary.js +1 -3
- package/dist/src/modules/abi/smart-sessions.js +1 -4
- package/dist/src/modules/chain-abstraction.js +1 -5
- package/dist/src/modules/common.d.ts +1 -1
- package/dist/src/modules/common.js +1 -13
- package/dist/src/modules/index.d.ts +5 -5
- package/dist/src/modules/index.js +35 -50
- package/dist/src/modules/legacy.d.ts +2 -2
- package/dist/src/modules/legacy.js +11 -14
- package/dist/src/modules/read.d.ts +1 -1
- package/dist/src/modules/read.js +11 -15
- package/dist/src/modules/validators/core.d.ts +2 -2
- package/dist/src/modules/validators/core.js +26 -44
- package/dist/src/modules/validators/index.d.ts +2 -2
- package/dist/src/modules/validators/index.js +3 -19
- package/dist/src/modules/validators/policies/claim/permit2.d.ts +1 -1
- package/dist/src/modules/validators/policies/claim/permit2.js +39 -44
- package/dist/src/modules/validators/policies/claim/types.js +11 -14
- package/dist/src/modules/validators/smart-sessions.d.ts +3 -3
- package/dist/src/modules/validators/smart-sessions.js +65 -94
- package/dist/src/orchestrator/caip2.d.ts +7 -0
- package/dist/src/orchestrator/caip2.d.ts.map +1 -0
- package/dist/src/orchestrator/caip2.js +17 -0
- package/dist/src/orchestrator/client.d.ts +12 -12
- package/dist/src/orchestrator/client.d.ts.map +1 -1
- package/dist/src/orchestrator/client.js +199 -305
- package/dist/src/orchestrator/consts.d.ts +2 -2
- package/dist/src/orchestrator/consts.d.ts.map +1 -1
- package/dist/src/orchestrator/consts.js +3 -9
- package/dist/src/orchestrator/error.d.ts +72 -217
- package/dist/src/orchestrator/error.d.ts.map +1 -1
- package/dist/src/orchestrator/error.js +117 -227
- package/dist/src/orchestrator/index.d.ts +9 -9
- package/dist/src/orchestrator/index.d.ts.map +1 -1
- package/dist/src/orchestrator/index.js +7 -56
- package/dist/src/orchestrator/registry.d.ts +2 -2
- package/dist/src/orchestrator/registry.js +19 -33
- package/dist/src/orchestrator/types.d.ts +97 -232
- package/dist/src/orchestrator/types.d.ts.map +1 -1
- package/dist/src/orchestrator/types.js +1 -17
- package/dist/src/orchestrator/utils.js +1 -3
- package/dist/src/types.d.ts +5 -7
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +1 -2
- package/dist/src/utils/index.d.ts +2 -2
- package/dist/src/utils/index.js +9 -15
- package/package.json +15 -98
- package/dist/src/execution/singleChainOps.d.ts +0 -41
- package/dist/src/execution/singleChainOps.d.ts.map +0 -1
- package/dist/src/execution/singleChainOps.js +0 -44
- package/dist/src/execution/types.d.ts +0 -36
- package/dist/src/execution/types.d.ts.map +0 -1
- package/dist/src/execution/types.js +0 -2
|
@@ -1,34 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
exports.isSessionEnabled = isSessionEnabled;
|
|
15
|
-
exports.signEnableSession = signEnableSession;
|
|
16
|
-
exports.buildMockSignature = buildMockSignature;
|
|
17
|
-
const solady_1 = require("solady");
|
|
18
|
-
const viem_1 = require("viem");
|
|
19
|
-
const chains_1 = require("viem/chains");
|
|
20
|
-
const accounts_1 = require("../../accounts");
|
|
21
|
-
const startale_1 = require("../../accounts/startale");
|
|
22
|
-
const utils_1 = require("../../accounts/utils");
|
|
23
|
-
const compact_1 = require("../../execution/compact");
|
|
24
|
-
const utils_2 = require("../../execution/utils");
|
|
25
|
-
const registry_1 = require("../../orchestrator/registry");
|
|
26
|
-
const smart_session_emissary_1 = __importDefault(require("../abi/smart-session-emissary"));
|
|
27
|
-
const common_1 = require("../common");
|
|
28
|
-
const core_1 = require("./core");
|
|
29
|
-
Object.defineProperty(exports, "SMART_SESSION_EMISSARY_ADDRESS", { enumerable: true, get: function () { return core_1.SMART_SESSION_EMISSARY_ADDRESS; } });
|
|
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");
|
|
1
|
+
import { LibZip } from 'solady';
|
|
2
|
+
import { concat, createPublicClient, encodeAbiParameters, encodeFunctionData, encodePacked, hashStruct, isHex, keccak256, maxUint256, padHex, size, toFunctionSelector, toHex, zeroAddress, zeroHash, } from 'viem';
|
|
3
|
+
import { mainnet } from 'viem/chains';
|
|
4
|
+
import { getAccountProvider } from '../../accounts/index.js';
|
|
5
|
+
import { K1_DEFAULT_VALIDATOR_ADDRESS } from '../../accounts/startale.js';
|
|
6
|
+
import { createTransport } from '../../accounts/utils.js';
|
|
7
|
+
import { RESET_PERIOD_ONE_WEEK, SCOPE_MULTICHAIN, } from '../../execution/compact.js';
|
|
8
|
+
import { signTypedData } from '../../execution/utils.js';
|
|
9
|
+
import { getChainById, getWrappedTokenAddress, } from '../../orchestrator/registry.js';
|
|
10
|
+
import smartSessionEmissaryAbi from '../abi/smart-session-emissary.js';
|
|
11
|
+
import { MODULE_TYPE_ID_VALIDATOR } from '../common.js';
|
|
12
|
+
import { getOwnerValidator, getValidator, SMART_SESSION_EMISSARY_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS_DEV, } from './core.js';
|
|
13
|
+
import { encodePermit2ClaimPolicyInitData, PERMIT2_CLAIM_POLICY_ADDRESS, } from './policies/claim/permit2.js';
|
|
32
14
|
const types = {
|
|
33
15
|
PolicyData: [
|
|
34
16
|
{ name: 'policy', type: 'address' },
|
|
@@ -76,34 +58,22 @@ const types = {
|
|
|
76
58
|
const SMART_SESSION_MODE_USE = '0x00';
|
|
77
59
|
const SMART_SESSION_MODE_ENABLE = '0x01';
|
|
78
60
|
const SMART_SESSIONS_FALLBACK_TARGET_FLAG = '0x0000000000000000000000000000000000000001';
|
|
79
|
-
exports.SMART_SESSIONS_FALLBACK_TARGET_FLAG = SMART_SESSIONS_FALLBACK_TARGET_FLAG;
|
|
80
61
|
const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG = '0x00000001';
|
|
81
|
-
exports.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG = SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG;
|
|
82
62
|
const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION = '0x00000002';
|
|
83
|
-
exports.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION = SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION;
|
|
84
63
|
// Dummy preclaimop action injected into every session so that the filler can trigger
|
|
85
64
|
// verifyExecution (ENABLE mode) using an injected dummy preclaimop when there are no
|
|
86
65
|
// real preclaimops. Target 0x...0420 is the ecRecover precompile; calls to it fail
|
|
87
66
|
// silently because preclaimops are failure-tolerant. Selector 0x69123456 is
|
|
88
67
|
// intentionally uncommon.
|
|
89
68
|
const DUMMY_PRECLAIMOP_TARGET = '0x0000000000000000000000000000000000000420';
|
|
90
|
-
exports.DUMMY_PRECLAIMOP_TARGET = DUMMY_PRECLAIMOP_TARGET;
|
|
91
69
|
const DUMMY_PRECLAIMOP_SELECTOR = '0x69123456';
|
|
92
|
-
exports.DUMMY_PRECLAIMOP_SELECTOR = DUMMY_PRECLAIMOP_SELECTOR;
|
|
93
70
|
const SPENDING_LIMITS_POLICY_ADDRESS = '0x00000088d48cf102a8cdb0137a9b173f957c6343';
|
|
94
|
-
exports.SPENDING_LIMITS_POLICY_ADDRESS = SPENDING_LIMITS_POLICY_ADDRESS;
|
|
95
71
|
const TIME_FRAME_POLICY_ADDRESS = '0x8177451511de0577b911c254e9551d981c26dc72';
|
|
96
|
-
exports.TIME_FRAME_POLICY_ADDRESS = TIME_FRAME_POLICY_ADDRESS;
|
|
97
72
|
const SUDO_POLICY_ADDRESS = '0x0000003111cd8e92337c100f22b7a9dbf8dee301';
|
|
98
|
-
exports.SUDO_POLICY_ADDRESS = SUDO_POLICY_ADDRESS;
|
|
99
73
|
const UNIVERSAL_ACTION_POLICY_ADDRESS = '0x0000006dda6c463511c4e9b05cfc34c1247fcf1f';
|
|
100
|
-
exports.UNIVERSAL_ACTION_POLICY_ADDRESS = UNIVERSAL_ACTION_POLICY_ADDRESS;
|
|
101
74
|
const USAGE_LIMIT_POLICY_ADDRESS = '0x1f34ef8311345a3a4a4566af321b313052f51493';
|
|
102
|
-
exports.USAGE_LIMIT_POLICY_ADDRESS = USAGE_LIMIT_POLICY_ADDRESS;
|
|
103
75
|
const VALUE_LIMIT_POLICY_ADDRESS = '0x730da93267e7e513e932301b47f2ac7d062abc83';
|
|
104
|
-
exports.VALUE_LIMIT_POLICY_ADDRESS = VALUE_LIMIT_POLICY_ADDRESS;
|
|
105
76
|
const INTENT_EXECUTION_POLICY_ADDRESS = '0xe9eA54d063975cDee9e06b7636d5563d95a7A23C';
|
|
106
|
-
exports.INTENT_EXECUTION_POLICY_ADDRESS = INTENT_EXECUTION_POLICY_ADDRESS;
|
|
107
77
|
const INTENT_EXECUTION_POLICY_ADDRESS_DEV = '0xa09b47de6e510cbdc18b97e9239bedcb44fb4901';
|
|
108
78
|
const ACTION_CONDITION_EQUAL = 0;
|
|
109
79
|
const ACTION_CONDITION_GREATER_THAN = 1;
|
|
@@ -121,7 +91,7 @@ function packSignature(signers, validatorSignature) {
|
|
|
121
91
|
: SMART_SESSION_MODE_USE;
|
|
122
92
|
const sessionData = getSessionData(signers.session);
|
|
123
93
|
const packedSignature = signers.enableData
|
|
124
|
-
?
|
|
94
|
+
? LibZip.flzCompress(encodeAbiParameters([
|
|
125
95
|
{
|
|
126
96
|
type: 'tuple',
|
|
127
97
|
name: 'enableData',
|
|
@@ -220,9 +190,9 @@ function packSignature(signers, validatorSignature) {
|
|
|
220
190
|
{ type: 'bytes' },
|
|
221
191
|
], [
|
|
222
192
|
{
|
|
223
|
-
allocatorSig:
|
|
193
|
+
allocatorSig: zeroHash,
|
|
224
194
|
userSig: signers.enableData.userSignature,
|
|
225
|
-
expires:
|
|
195
|
+
expires: maxUint256,
|
|
226
196
|
enableSession: {
|
|
227
197
|
chainDigestIndex: signers.enableData.sessionToEnableIndex,
|
|
228
198
|
hashesAndChainIds: signers.enableData.hashesAndChainIds,
|
|
@@ -230,24 +200,24 @@ function packSignature(signers, validatorSignature) {
|
|
|
230
200
|
},
|
|
231
201
|
},
|
|
232
202
|
{
|
|
233
|
-
scope:
|
|
234
|
-
resetPeriod:
|
|
235
|
-
allocator:
|
|
203
|
+
scope: SCOPE_MULTICHAIN,
|
|
204
|
+
resetPeriod: RESET_PERIOD_ONE_WEEK,
|
|
205
|
+
allocator: zeroAddress,
|
|
236
206
|
permissionId: getPermissionId(signers.session),
|
|
237
207
|
},
|
|
238
208
|
validatorSignature,
|
|
239
209
|
]))
|
|
240
210
|
: validatorSignature;
|
|
241
211
|
return signers.enableData
|
|
242
|
-
?
|
|
243
|
-
:
|
|
212
|
+
? encodePacked(['bytes1', 'bytes'], [smartSessionMode, packedSignature])
|
|
213
|
+
: encodePacked(['bytes1', 'bytes32', 'bytes'], [smartSessionMode, permissionId, packedSignature]);
|
|
244
214
|
}
|
|
245
215
|
else {
|
|
246
216
|
const SIGNATURE_IS_VALID_SIG_1271 = '0x00';
|
|
247
|
-
const policyDataOffset = BigInt(64 +
|
|
217
|
+
const policyDataOffset = BigInt(64 + size(validatorSignature));
|
|
248
218
|
const mode = SIGNATURE_IS_VALID_SIG_1271;
|
|
249
219
|
const policySpecificData = signers.claimPolicyData ?? '0x';
|
|
250
|
-
const signature =
|
|
220
|
+
const signature = encodePacked(['bytes1', 'bytes32', 'uint256', 'bytes', 'bytes'], [
|
|
251
221
|
mode,
|
|
252
222
|
permissionId,
|
|
253
223
|
policyDataOffset,
|
|
@@ -265,7 +235,7 @@ async function getSessionDetails(account, sessions, provider, useDevContracts) {
|
|
|
265
235
|
const chains = sessions.map((session) => session.chain);
|
|
266
236
|
const hashesAndChainIds = signedSessions.map((session, index) => ({
|
|
267
237
|
chainId: BigInt(chains[index].id),
|
|
268
|
-
sessionDigest:
|
|
238
|
+
sessionDigest: hashStruct({
|
|
269
239
|
types,
|
|
270
240
|
primaryType: 'SignedSession',
|
|
271
241
|
data: session,
|
|
@@ -292,9 +262,9 @@ async function getSessionDetails(account, sessions, provider, useDevContracts) {
|
|
|
292
262
|
};
|
|
293
263
|
}
|
|
294
264
|
async function isSessionEnabled(account, provider, session, useDevContracts) {
|
|
295
|
-
const publicClient =
|
|
265
|
+
const publicClient = createPublicClient({
|
|
296
266
|
chain: session.chain,
|
|
297
|
-
transport:
|
|
267
|
+
transport: createTransport(session.chain, provider),
|
|
298
268
|
});
|
|
299
269
|
const isEnabled = await publicClient.readContract({
|
|
300
270
|
address: getSmartSessionEmissaryAddress(useDevContracts),
|
|
@@ -316,30 +286,30 @@ async function isSessionEnabled(account, provider, session, useDevContracts) {
|
|
|
316
286
|
return isEnabled;
|
|
317
287
|
}
|
|
318
288
|
async function signEnableSession(config, details) {
|
|
319
|
-
const account =
|
|
320
|
-
const validator =
|
|
289
|
+
const account = getAccountProvider(config);
|
|
290
|
+
const validator = getOwnerValidator(config);
|
|
321
291
|
const isStartaleK1 = account.type === 'startale' &&
|
|
322
292
|
validator.address.toLowerCase() ===
|
|
323
|
-
|
|
293
|
+
K1_DEFAULT_VALIDATOR_ADDRESS.toLowerCase();
|
|
324
294
|
if (isStartaleK1) {
|
|
325
295
|
const chainIds = details.hashesAndChainIds.map((h) => h.chainId);
|
|
326
296
|
const uniqueChainIds = [...new Set(chainIds.map((c) => c.toString()))];
|
|
327
297
|
if (uniqueChainIds.length > 1) {
|
|
328
298
|
throw new Error('Startale accounts with K1 validator do not support multi-chain session enable');
|
|
329
299
|
}
|
|
330
|
-
const chain =
|
|
331
|
-
return
|
|
300
|
+
const chain = getChainById(Number(chainIds[0]));
|
|
301
|
+
return signTypedData(config, details.data, chain, undefined, {
|
|
332
302
|
skipErc6492: true,
|
|
333
303
|
});
|
|
334
304
|
}
|
|
335
|
-
return
|
|
305
|
+
return signTypedData(config, details.data, mainnet, undefined, {
|
|
336
306
|
skipErc6492: true,
|
|
337
307
|
});
|
|
338
308
|
}
|
|
339
309
|
async function getSessionNonce(account, session, lockTag, provider, useDevContracts) {
|
|
340
|
-
const publicClient =
|
|
310
|
+
const publicClient = createPublicClient({
|
|
341
311
|
chain: session.chain,
|
|
342
|
-
transport:
|
|
312
|
+
transport: createTransport(session.chain, provider),
|
|
343
313
|
});
|
|
344
314
|
const nonce = await publicClient.readContract({
|
|
345
315
|
address: getSmartSessionEmissaryAddress(useDevContracts),
|
|
@@ -384,7 +354,7 @@ function getSignedSession(account, lockTag, session, nonce, useDevContracts) {
|
|
|
384
354
|
sessionValidatorInitData: session.sessionValidatorInitData,
|
|
385
355
|
salt: session.salt,
|
|
386
356
|
smartSessionEmissary: getSmartSessionEmissaryAddress(useDevContracts),
|
|
387
|
-
expires:
|
|
357
|
+
expires: maxUint256,
|
|
388
358
|
nonce,
|
|
389
359
|
};
|
|
390
360
|
}
|
|
@@ -393,21 +363,21 @@ async function getEnableSessionCall(account, session, enableSessionSignature, ha
|
|
|
393
363
|
const permissionId = getPermissionId(session);
|
|
394
364
|
return {
|
|
395
365
|
to: getSmartSessionEmissaryAddress(useDevContracts),
|
|
396
|
-
data:
|
|
397
|
-
abi:
|
|
366
|
+
data: encodeFunctionData({
|
|
367
|
+
abi: smartSessionEmissaryAbi,
|
|
398
368
|
functionName: 'setConfig',
|
|
399
369
|
args: [
|
|
400
370
|
account,
|
|
401
371
|
{
|
|
402
|
-
scope:
|
|
403
|
-
resetPeriod:
|
|
404
|
-
allocator:
|
|
372
|
+
scope: SCOPE_MULTICHAIN,
|
|
373
|
+
resetPeriod: RESET_PERIOD_ONE_WEEK,
|
|
374
|
+
allocator: zeroAddress,
|
|
405
375
|
permissionId,
|
|
406
376
|
},
|
|
407
377
|
{
|
|
408
|
-
allocatorSig:
|
|
378
|
+
allocatorSig: zeroHash,
|
|
409
379
|
userSig: enableSessionSignature,
|
|
410
|
-
expires:
|
|
380
|
+
expires: maxUint256,
|
|
411
381
|
session: {
|
|
412
382
|
chainDigestIndex: sessionToEnableIndex,
|
|
413
383
|
hashesAndChainIds,
|
|
@@ -419,11 +389,11 @@ async function getEnableSessionCall(account, session, enableSessionSignature, ha
|
|
|
419
389
|
};
|
|
420
390
|
}
|
|
421
391
|
function getSessionData(session, useDevContracts) {
|
|
422
|
-
const validator =
|
|
392
|
+
const validator = getValidator(session.owners);
|
|
423
393
|
const allowedContent = [
|
|
424
394
|
{
|
|
425
395
|
contentNames: [''],
|
|
426
|
-
appDomainSeparator:
|
|
396
|
+
appDomainSeparator: zeroHash,
|
|
427
397
|
},
|
|
428
398
|
];
|
|
429
399
|
const erc7739Data = {
|
|
@@ -449,8 +419,8 @@ function getSessionData(session, useDevContracts) {
|
|
|
449
419
|
const injectedActions = [
|
|
450
420
|
// Native token wrapping
|
|
451
421
|
{
|
|
452
|
-
target:
|
|
453
|
-
selector:
|
|
422
|
+
target: getWrappedTokenAddress(session.chain),
|
|
423
|
+
selector: toFunctionSelector({
|
|
454
424
|
type: 'function',
|
|
455
425
|
name: 'deposit',
|
|
456
426
|
inputs: [],
|
|
@@ -491,20 +461,20 @@ function getSessionData(session, useDevContracts) {
|
|
|
491
461
|
: [sudoAction];
|
|
492
462
|
return {
|
|
493
463
|
sessionValidator: validator.address,
|
|
494
|
-
salt:
|
|
464
|
+
salt: zeroHash,
|
|
495
465
|
sessionValidatorInitData: validator.initData,
|
|
496
466
|
erc7739Policies: erc7739Data,
|
|
497
467
|
actions,
|
|
498
468
|
// Note: Permit2ClaimPolicy has no dev deployment — same address in all environments
|
|
499
469
|
claimPolicies: session.claimPolicies?.map((p) => ({
|
|
500
|
-
policy:
|
|
501
|
-
initData:
|
|
470
|
+
policy: PERMIT2_CLAIM_POLICY_ADDRESS,
|
|
471
|
+
initData: encodePermit2ClaimPolicyInitData(p),
|
|
502
472
|
})) ?? [],
|
|
503
473
|
};
|
|
504
474
|
}
|
|
505
475
|
function getPermissionId(session) {
|
|
506
476
|
const sessionData = getSessionData(session);
|
|
507
|
-
return
|
|
477
|
+
return keccak256(encodeAbiParameters([
|
|
508
478
|
{
|
|
509
479
|
type: 'address',
|
|
510
480
|
name: 'sessionValidator',
|
|
@@ -561,14 +531,14 @@ function getPolicyData(policy, useDevContracts) {
|
|
|
561
531
|
condition: ACTION_CONDITION_EQUAL,
|
|
562
532
|
offset: 0n,
|
|
563
533
|
isLimited: false,
|
|
564
|
-
ref:
|
|
534
|
+
ref: zeroHash,
|
|
565
535
|
usage: { limit: 0n, used: 0n },
|
|
566
536
|
}));
|
|
567
537
|
for (let i = 0; i < policy.rules.length; i++) {
|
|
568
538
|
const rule = policy.rules[i];
|
|
569
|
-
const ref =
|
|
570
|
-
?
|
|
571
|
-
:
|
|
539
|
+
const ref = isHex(rule.referenceValue)
|
|
540
|
+
? padHex(rule.referenceValue)
|
|
541
|
+
: toHex(rule.referenceValue, { size: 32 });
|
|
572
542
|
rules[i] = {
|
|
573
543
|
condition: getCondition(rule.condition),
|
|
574
544
|
offset: rule.calldataOffset,
|
|
@@ -582,7 +552,7 @@ function getPolicyData(policy, useDevContracts) {
|
|
|
582
552
|
}
|
|
583
553
|
return {
|
|
584
554
|
policy: UNIVERSAL_ACTION_POLICY_ADDRESS,
|
|
585
|
-
initData:
|
|
555
|
+
initData: encodeAbiParameters([
|
|
586
556
|
{
|
|
587
557
|
components: [
|
|
588
558
|
{
|
|
@@ -655,13 +625,13 @@ function getPolicyData(policy, useDevContracts) {
|
|
|
655
625
|
const limits = policy.limits.map(({ amount }) => amount);
|
|
656
626
|
return {
|
|
657
627
|
policy: SPENDING_LIMITS_POLICY_ADDRESS,
|
|
658
|
-
initData:
|
|
628
|
+
initData: encodeAbiParameters([{ type: 'address[]' }, { type: 'uint256[]' }], [tokens, limits]),
|
|
659
629
|
};
|
|
660
630
|
}
|
|
661
631
|
case 'time-frame': {
|
|
662
632
|
return {
|
|
663
633
|
policy: TIME_FRAME_POLICY_ADDRESS,
|
|
664
|
-
initData:
|
|
634
|
+
initData: encodePacked(['uint48', 'uint48'], [
|
|
665
635
|
Math.floor(policy.validUntil / 1000),
|
|
666
636
|
Math.floor(policy.validAfter / 1000),
|
|
667
637
|
]),
|
|
@@ -670,13 +640,13 @@ function getPolicyData(policy, useDevContracts) {
|
|
|
670
640
|
case 'usage-limit': {
|
|
671
641
|
return {
|
|
672
642
|
policy: USAGE_LIMIT_POLICY_ADDRESS,
|
|
673
|
-
initData:
|
|
643
|
+
initData: encodePacked(['uint128'], [policy.limit]),
|
|
674
644
|
};
|
|
675
645
|
}
|
|
676
646
|
case 'value-limit': {
|
|
677
647
|
return {
|
|
678
648
|
policy: VALUE_LIMIT_POLICY_ADDRESS,
|
|
679
|
-
initData:
|
|
649
|
+
initData: encodeAbiParameters([{ type: 'uint256' }], [policy.limit]),
|
|
680
650
|
};
|
|
681
651
|
}
|
|
682
652
|
}
|
|
@@ -694,13 +664,13 @@ function getSmartSessionValidator(config) {
|
|
|
694
664
|
initData: '0x',
|
|
695
665
|
deInitData: '0x',
|
|
696
666
|
additionalContext: '0x',
|
|
697
|
-
type:
|
|
667
|
+
type: MODULE_TYPE_ID_VALIDATOR,
|
|
698
668
|
};
|
|
699
669
|
}
|
|
700
670
|
function getSmartSessionEmissaryAddress(useDevContracts) {
|
|
701
671
|
return useDevContracts === true
|
|
702
|
-
?
|
|
703
|
-
:
|
|
672
|
+
? SMART_SESSION_EMISSARY_ADDRESS_DEV
|
|
673
|
+
: SMART_SESSION_EMISSARY_ADDRESS;
|
|
704
674
|
}
|
|
705
675
|
/**
|
|
706
676
|
* Builds a mockSignature for SSX validation gas estimation.
|
|
@@ -726,7 +696,7 @@ function buildMockSignature(session, useDevContracts, chainCount = 1, targetChai
|
|
|
726
696
|
// mock emissary, so sessionDigest can be zeroHash throughout.
|
|
727
697
|
const hashesAndChainIds = Array.from({ length: safeChainCount }, (_, i) => ({
|
|
728
698
|
chainId: i === 0 ? BigInt(primaryChainId) : 0n,
|
|
729
|
-
sessionDigest:
|
|
699
|
+
sessionDigest: zeroHash,
|
|
730
700
|
}));
|
|
731
701
|
const dummySigners = {
|
|
732
702
|
type: 'experimental_session',
|
|
@@ -740,8 +710,9 @@ function buildMockSignature(session, useDevContracts, chainCount = 1, targetChai
|
|
|
740
710
|
};
|
|
741
711
|
const dummyValidatorSignature = `0x${'00'.repeat(65)}`;
|
|
742
712
|
const sigData = packSignature(dummySigners, dummyValidatorSignature);
|
|
743
|
-
return
|
|
713
|
+
return concat([emissaryAddress, sigData]);
|
|
744
714
|
}
|
|
745
715
|
function createFixedArray(length, getValue) {
|
|
746
716
|
return Array.from({ length }, (_, i) => getValue(i));
|
|
747
717
|
}
|
|
718
|
+
export { SMART_SESSION_EMISSARY_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS_DEV, SMART_SESSIONS_FALLBACK_TARGET_FLAG, SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG, SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION, DUMMY_PRECLAIMOP_TARGET, DUMMY_PRECLAIMOP_SELECTOR, SPENDING_LIMITS_POLICY_ADDRESS, TIME_FRAME_POLICY_ADDRESS, SUDO_POLICY_ADDRESS, UNIVERSAL_ACTION_POLICY_ADDRESS, USAGE_LIMIT_POLICY_ADDRESS, VALUE_LIMIT_POLICY_ADDRESS, INTENT_EXECUTION_POLICY_ADDRESS, packSignature, getSessionData, getPolicyData, getEnableSessionCall, getPermissionId, getSmartSessionValidator, getSessionDetails, isSessionEnabled, signEnableSession, buildMockSignature, };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type Caip2ChainId = `eip155:${number}`;
|
|
2
|
+
declare function toCaip2(chainId: number): Caip2ChainId;
|
|
3
|
+
declare function fromCaip2(chainId: string): number;
|
|
4
|
+
declare function isCaip2(chainId: string): chainId is Caip2ChainId;
|
|
5
|
+
export type { Caip2ChainId };
|
|
6
|
+
export { fromCaip2, isCaip2, toCaip2 };
|
|
7
|
+
//# sourceMappingURL=caip2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caip2.d.ts","sourceRoot":"","sources":["../../../orchestrator/caip2.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,GAAG,UAAU,MAAM,EAAE,CAAA;AAItC,iBAAS,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAK9C;AAED,iBAAS,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK1C;AAED,iBAAS,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,YAAY,CAEzD;AAED,YAAY,EAAE,YAAY,EAAE,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const EIP155_CAIP2_REGEX = /^eip155:\d+$/;
|
|
2
|
+
function toCaip2(chainId) {
|
|
3
|
+
if (!Number.isInteger(chainId) || chainId < 0) {
|
|
4
|
+
throw new Error(`Invalid EVM chain id: ${chainId}`);
|
|
5
|
+
}
|
|
6
|
+
return `eip155:${chainId}`;
|
|
7
|
+
}
|
|
8
|
+
function fromCaip2(chainId) {
|
|
9
|
+
if (!EIP155_CAIP2_REGEX.test(chainId)) {
|
|
10
|
+
throw new Error(`Invalid CAIP-2 chain id: ${chainId}`);
|
|
11
|
+
}
|
|
12
|
+
return Number(chainId.slice('eip155:'.length));
|
|
13
|
+
}
|
|
14
|
+
function isCaip2(chainId) {
|
|
15
|
+
return EIP155_CAIP2_REGEX.test(chainId);
|
|
16
|
+
}
|
|
17
|
+
export { fromCaip2, isCaip2, toCaip2 };
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import type { Address } from 'viem';
|
|
2
|
-
import type { AuthProvider } from '../auth/provider';
|
|
3
|
-
import type { IntentInput, IntentOpStatus,
|
|
2
|
+
import type { AuthProvider } from '../auth/provider.js';
|
|
3
|
+
import type { IntentInput, IntentOpStatus, IntentSubmitRequestInternal, IntentSubmitResponse, Portfolio, QuoteResponse, SplitIntentsInput, SplitIntentsResult } from './types.js';
|
|
4
|
+
interface PolicyContext {
|
|
5
|
+
intentInput: unknown;
|
|
6
|
+
isSponsored: boolean;
|
|
7
|
+
}
|
|
4
8
|
export declare class Orchestrator {
|
|
5
9
|
private serverUrl;
|
|
6
10
|
private authProvider;
|
|
7
11
|
private extraHeaders?;
|
|
8
12
|
constructor(serverUrl: string, authProvider: AuthProvider, headers?: Record<string, string>);
|
|
9
|
-
getPortfolio(
|
|
13
|
+
getPortfolio(accountAddress: Address, filter?: {
|
|
10
14
|
chainIds?: number[];
|
|
11
15
|
tokens?: {
|
|
12
16
|
[chainId: number]: Address[];
|
|
13
17
|
};
|
|
14
18
|
}): Promise<Portfolio>;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
isSponsored: boolean;
|
|
20
|
-
}): Promise<IntentResult>;
|
|
21
|
-
getIntentOpStatus(intentId: bigint): Promise<IntentOpStatus>;
|
|
19
|
+
createQuote(input: IntentInput): Promise<QuoteResponse>;
|
|
20
|
+
getSplit(input: SplitIntentsInput): Promise<SplitIntentsResult>;
|
|
21
|
+
createIntent(request: IntentSubmitRequestInternal, policyContext?: PolicyContext): Promise<IntentSubmitResponse>;
|
|
22
|
+
getIntent(intentId: string): Promise<IntentOpStatus>;
|
|
22
23
|
private getHeaders;
|
|
23
24
|
private getSubmitHeaders;
|
|
24
25
|
private fetch;
|
|
25
|
-
private parseError;
|
|
26
|
-
private parseErrorMessage;
|
|
27
26
|
}
|
|
27
|
+
export {};
|
|
28
28
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -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;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../orchestrator/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAQpD,OAAO,KAAK,EAKV,WAAW,EACX,cAAc,EAEd,2BAA2B,EAC3B,oBAAoB,EACpB,SAAS,EAET,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,SAAS,CAAA;AAGhB,UAAU,aAAa;IACrB,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;CACrB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,YAAY,CAAC,CAAwB;gBAG3C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAO5B,YAAY,CAChB,cAAc,EAAE,OAAO,EACvB,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,MAAM,CAAC,EAAE;YAAE,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAAA;SAAE,CAAA;KAC1C,GACA,OAAO,CAAC,SAAS,CAAC;IA0Cf,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAUvD,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkB/D,YAAY,CAChB,OAAO,EAAE,2BAA2B,EACpC,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,oBAAoB,CAAC;IAe1B,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YAoB5C,UAAU;YAWV,gBAAgB;YAiBhB,KAAK;CAwBpB"}
|