@rhinestone/sdk 1.4.2 → 2.0.0-beta.0
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 +89 -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.js +4 -7
- 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 +10 -4
- package/dist/src/accounts/signing/common.d.ts.map +1 -1
- 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 +7 -0
- package/dist/src/auth/provider.d.ts.map +1 -0
- package/dist/src/auth/provider.js +38 -0
- package/dist/src/errors/index.d.ts +3 -3
- package/dist/src/errors/index.js +10 -54
- package/dist/src/execution/compact.d.ts +3 -3
- package/dist/src/execution/compact.js +10 -18
- package/dist/src/execution/error.js +1 -11
- package/dist/src/execution/index.d.ts +9 -8
- package/dist/src/execution/index.d.ts.map +1 -1
- package/dist/src/execution/index.js +54 -67
- package/dist/src/execution/permit2.d.ts +5 -5
- package/dist/src/execution/permit2.js +8 -13
- package/dist/src/execution/singleChainOps.d.ts +2 -2
- package/dist/src/execution/singleChainOps.js +1 -3
- package/dist/src/execution/types.d.ts +1 -1
- package/dist/src/execution/types.js +1 -2
- package/dist/src/execution/utils.d.ts +10 -6
- package/dist/src/execution/utils.d.ts.map +1 -1
- package/dist/src/execution/utils.js +159 -162
- package/dist/src/index.d.ts +10 -10
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +57 -67
- package/dist/src/jwt-server/digest.d.ts +11 -0
- package/dist/src/jwt-server/digest.d.ts.map +1 -0
- package/dist/src/jwt-server/digest.js +19 -0
- package/dist/src/jwt-server/express.d.ts +16 -0
- package/dist/src/jwt-server/express.d.ts.map +1 -0
- package/dist/src/jwt-server/express.js +23 -0
- package/dist/src/jwt-server/handlers.d.ts +10 -0
- package/dist/src/jwt-server/handlers.d.ts.map +1 -0
- package/dist/src/jwt-server/handlers.js +37 -0
- package/dist/src/jwt-server/index.d.ts +8 -0
- package/dist/src/jwt-server/index.d.ts.map +1 -0
- package/dist/src/jwt-server/index.js +7 -0
- package/dist/src/jwt-server/jcs.d.ts +12 -0
- package/dist/src/jwt-server/jcs.d.ts.map +1 -0
- package/dist/src/jwt-server/jcs.js +57 -0
- package/dist/src/jwt-server/signer.d.ts +18 -0
- package/dist/src/jwt-server/signer.d.ts.map +1 -0
- package/dist/src/jwt-server/signer.js +68 -0
- package/dist/src/jwt-server/sponsorship.d.ts +19 -0
- package/dist/src/jwt-server/sponsorship.d.ts.map +1 -0
- package/dist/src/jwt-server/sponsorship.js +51 -0
- package/dist/src/jwt-server/web.d.ts +4 -0
- package/dist/src/jwt-server/web.d.ts.map +1 -0
- package/dist/src/jwt-server/web.js +23 -0
- 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 +4 -4
- package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
- package/dist/src/modules/validators/smart-sessions.js +77 -97
- package/dist/src/orchestrator/client.d.ts +10 -5
- package/dist/src/orchestrator/client.d.ts.map +1 -1
- package/dist/src/orchestrator/client.js +73 -66
- package/dist/src/orchestrator/consts.d.ts +1 -1
- package/dist/src/orchestrator/consts.d.ts.map +1 -1
- package/dist/src/orchestrator/consts.js +2 -8
- package/dist/src/orchestrator/error.js +1 -33
- package/dist/src/orchestrator/index.d.ts +8 -7
- package/dist/src/orchestrator/index.d.ts.map +1 -1
- package/dist/src/orchestrator/index.js +8 -57
- package/dist/src/orchestrator/registry.d.ts +2 -2
- package/dist/src/orchestrator/registry.js +19 -33
- package/dist/src/orchestrator/types.d.ts +5 -1
- 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 +29 -5
- 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 +29 -98
- package/dist/src/accounts/index.test.d.ts +0 -2
- package/dist/src/accounts/index.test.d.ts.map +0 -1
- package/dist/src/accounts/index.test.js +0 -33
- package/dist/src/accounts/json-rpc/index.test.d.ts +0 -2
- package/dist/src/accounts/json-rpc/index.test.d.ts.map +0 -1
- package/dist/src/accounts/json-rpc/index.test.js +0 -35
- package/dist/src/accounts/json-rpc/providers.test.d.ts +0 -2
- package/dist/src/accounts/json-rpc/providers.test.d.ts.map +0 -1
- package/dist/src/accounts/json-rpc/providers.test.js +0 -43
- package/dist/src/accounts/kernel.test.d.ts +0 -2
- package/dist/src/accounts/kernel.test.d.ts.map +0 -1
- package/dist/src/accounts/kernel.test.js +0 -132
- package/dist/src/accounts/nexus.test.d.ts +0 -2
- package/dist/src/accounts/nexus.test.d.ts.map +0 -1
- package/dist/src/accounts/nexus.test.js +0 -118
- package/dist/src/accounts/safe.test.d.ts +0 -2
- package/dist/src/accounts/safe.test.d.ts.map +0 -1
- package/dist/src/accounts/safe.test.js +0 -168
- package/dist/src/accounts/signing/passkeys.test.d.ts +0 -2
- package/dist/src/accounts/signing/passkeys.test.d.ts.map +0 -1
- package/dist/src/accounts/signing/passkeys.test.js +0 -88
- package/dist/src/accounts/startale.test.d.ts +0 -2
- package/dist/src/accounts/startale.test.d.ts.map +0 -1
- package/dist/src/accounts/startale.test.js +0 -189
- package/dist/src/accounts/utils.test.d.ts +0 -2
- package/dist/src/accounts/utils.test.d.ts.map +0 -1
- package/dist/src/accounts/utils.test.js +0 -49
- package/dist/src/actions/ecdsa.test.d.ts +0 -2
- package/dist/src/actions/ecdsa.test.d.ts.map +0 -1
- package/dist/src/actions/ecdsa.test.js +0 -99
- package/dist/src/actions/passkeys.test.d.ts +0 -2
- package/dist/src/actions/passkeys.test.d.ts.map +0 -1
- package/dist/src/actions/passkeys.test.js +0 -54
- package/dist/src/actions/recovery.test.d.ts +0 -2
- package/dist/src/actions/recovery.test.d.ts.map +0 -1
- package/dist/src/actions/recovery.test.js +0 -168
- package/dist/src/execution/signing.test.d.ts +0 -2
- package/dist/src/execution/signing.test.d.ts.map +0 -1
- package/dist/src/execution/signing.test.js +0 -465
- package/dist/src/execution/utils.test.d.ts +0 -2
- package/dist/src/execution/utils.test.d.ts.map +0 -1
- package/dist/src/execution/utils.test.js +0 -388
- package/dist/src/modules/index.test.d.ts +0 -2
- package/dist/src/modules/index.test.d.ts.map +0 -1
- package/dist/src/modules/index.test.js +0 -81
- package/dist/src/modules/validators/core.test.d.ts +0 -2
- package/dist/src/modules/validators/core.test.d.ts.map +0 -1
- package/dist/src/modules/validators/core.test.js +0 -101
- package/dist/src/modules/validators/policies/claim/permit2.test.d.ts +0 -2
- package/dist/src/modules/validators/policies/claim/permit2.test.d.ts.map +0 -1
- package/dist/src/modules/validators/policies/claim/permit2.test.js +0 -519
- package/dist/src/modules/validators/smart-sessions.test.d.ts +0 -2
- package/dist/src/modules/validators/smart-sessions.test.d.ts.map +0 -1
- package/dist/src/modules/validators/smart-sessions.test.js +0 -311
- package/dist/src/orchestrator/registry.test.d.ts +0 -2
- package/dist/src/orchestrator/registry.test.d.ts.map +0 -1
- package/dist/src/orchestrator/registry.test.js +0 -154
- package/dist/src/utils/index.test.d.ts +0 -2
- package/dist/src/utils/index.test.d.ts.map +0 -1
- package/dist/src/utils/index.test.js +0 -42
- package/dist/test/consts.d.ts +0 -10
- package/dist/test/consts.d.ts.map +0 -1
- package/dist/test/consts.js +0 -22
- package/dist/test/utils/utils.d.ts +0 -5
- package/dist/test/utils/utils.d.ts.map +0 -1
- package/dist/test/utils/utils.js +0 -20
|
@@ -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,11 +58,8 @@ 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...0001 is the ecRecover precompile; calls to it fail
|
|
@@ -89,23 +68,14 @@ exports.SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESS
|
|
|
89
68
|
// SMART_SESSIONS_FALLBACK_TARGET_FLAG — that is harmless because they operate in
|
|
90
69
|
// different contexts (action matching vs. literal execution target).
|
|
91
70
|
const DUMMY_PRECLAIMOP_TARGET = '0x0000000000000000000000000000000000000001';
|
|
92
|
-
exports.DUMMY_PRECLAIMOP_TARGET = DUMMY_PRECLAIMOP_TARGET;
|
|
93
71
|
const DUMMY_PRECLAIMOP_SELECTOR = '0x69123456';
|
|
94
|
-
exports.DUMMY_PRECLAIMOP_SELECTOR = DUMMY_PRECLAIMOP_SELECTOR;
|
|
95
72
|
const SPENDING_LIMITS_POLICY_ADDRESS = '0x00000088d48cf102a8cdb0137a9b173f957c6343';
|
|
96
|
-
exports.SPENDING_LIMITS_POLICY_ADDRESS = SPENDING_LIMITS_POLICY_ADDRESS;
|
|
97
73
|
const TIME_FRAME_POLICY_ADDRESS = '0x8177451511de0577b911c254e9551d981c26dc72';
|
|
98
|
-
exports.TIME_FRAME_POLICY_ADDRESS = TIME_FRAME_POLICY_ADDRESS;
|
|
99
74
|
const SUDO_POLICY_ADDRESS = '0x0000003111cd8e92337c100f22b7a9dbf8dee301';
|
|
100
|
-
exports.SUDO_POLICY_ADDRESS = SUDO_POLICY_ADDRESS;
|
|
101
75
|
const UNIVERSAL_ACTION_POLICY_ADDRESS = '0x0000006dda6c463511c4e9b05cfc34c1247fcf1f';
|
|
102
|
-
exports.UNIVERSAL_ACTION_POLICY_ADDRESS = UNIVERSAL_ACTION_POLICY_ADDRESS;
|
|
103
76
|
const USAGE_LIMIT_POLICY_ADDRESS = '0x1f34ef8311345a3a4a4566af321b313052f51493';
|
|
104
|
-
exports.USAGE_LIMIT_POLICY_ADDRESS = USAGE_LIMIT_POLICY_ADDRESS;
|
|
105
77
|
const VALUE_LIMIT_POLICY_ADDRESS = '0x730da93267e7e513e932301b47f2ac7d062abc83';
|
|
106
|
-
exports.VALUE_LIMIT_POLICY_ADDRESS = VALUE_LIMIT_POLICY_ADDRESS;
|
|
107
78
|
const INTENT_EXECUTION_POLICY_ADDRESS = '0xe9eA54d063975cDee9e06b7636d5563d95a7A23C';
|
|
108
|
-
exports.INTENT_EXECUTION_POLICY_ADDRESS = INTENT_EXECUTION_POLICY_ADDRESS;
|
|
109
79
|
const INTENT_EXECUTION_POLICY_ADDRESS_DEV = '0xa09b47de6e510cbdc18b97e9239bedcb44fb4901';
|
|
110
80
|
const ACTION_CONDITION_EQUAL = 0;
|
|
111
81
|
const ACTION_CONDITION_GREATER_THAN = 1;
|
|
@@ -123,7 +93,7 @@ function packSignature(signers, validatorSignature) {
|
|
|
123
93
|
: SMART_SESSION_MODE_USE;
|
|
124
94
|
const sessionData = getSessionData(signers.session);
|
|
125
95
|
const packedSignature = signers.enableData
|
|
126
|
-
?
|
|
96
|
+
? LibZip.flzCompress(encodeAbiParameters([
|
|
127
97
|
{
|
|
128
98
|
type: 'tuple',
|
|
129
99
|
name: 'enableData',
|
|
@@ -222,9 +192,9 @@ function packSignature(signers, validatorSignature) {
|
|
|
222
192
|
{ type: 'bytes' },
|
|
223
193
|
], [
|
|
224
194
|
{
|
|
225
|
-
allocatorSig:
|
|
195
|
+
allocatorSig: zeroHash,
|
|
226
196
|
userSig: signers.enableData.userSignature,
|
|
227
|
-
expires:
|
|
197
|
+
expires: maxUint256,
|
|
228
198
|
enableSession: {
|
|
229
199
|
chainDigestIndex: signers.enableData.sessionToEnableIndex,
|
|
230
200
|
hashesAndChainIds: signers.enableData.hashesAndChainIds,
|
|
@@ -232,24 +202,24 @@ function packSignature(signers, validatorSignature) {
|
|
|
232
202
|
},
|
|
233
203
|
},
|
|
234
204
|
{
|
|
235
|
-
scope:
|
|
236
|
-
resetPeriod:
|
|
237
|
-
allocator:
|
|
205
|
+
scope: SCOPE_MULTICHAIN,
|
|
206
|
+
resetPeriod: RESET_PERIOD_ONE_WEEK,
|
|
207
|
+
allocator: zeroAddress,
|
|
238
208
|
permissionId: getPermissionId(signers.session),
|
|
239
209
|
},
|
|
240
210
|
validatorSignature,
|
|
241
211
|
]))
|
|
242
212
|
: validatorSignature;
|
|
243
213
|
return signers.enableData
|
|
244
|
-
?
|
|
245
|
-
:
|
|
214
|
+
? encodePacked(['bytes1', 'bytes'], [smartSessionMode, packedSignature])
|
|
215
|
+
: encodePacked(['bytes1', 'bytes32', 'bytes'], [smartSessionMode, permissionId, packedSignature]);
|
|
246
216
|
}
|
|
247
217
|
else {
|
|
248
218
|
const SIGNATURE_IS_VALID_SIG_1271 = '0x00';
|
|
249
|
-
const policyDataOffset = BigInt(64 +
|
|
219
|
+
const policyDataOffset = BigInt(64 + size(validatorSignature));
|
|
250
220
|
const mode = SIGNATURE_IS_VALID_SIG_1271;
|
|
251
221
|
const policySpecificData = signers.claimPolicyData ?? '0x';
|
|
252
|
-
const signature =
|
|
222
|
+
const signature = encodePacked(['bytes1', 'bytes32', 'uint256', 'bytes', 'bytes'], [
|
|
253
223
|
mode,
|
|
254
224
|
permissionId,
|
|
255
225
|
policyDataOffset,
|
|
@@ -267,7 +237,7 @@ async function getSessionDetails(account, sessions, provider, useDevContracts) {
|
|
|
267
237
|
const chains = sessions.map((session) => session.chain);
|
|
268
238
|
const hashesAndChainIds = signedSessions.map((session, index) => ({
|
|
269
239
|
chainId: BigInt(chains[index].id),
|
|
270
|
-
sessionDigest:
|
|
240
|
+
sessionDigest: hashStruct({
|
|
271
241
|
types,
|
|
272
242
|
primaryType: 'SignedSession',
|
|
273
243
|
data: session,
|
|
@@ -294,9 +264,9 @@ async function getSessionDetails(account, sessions, provider, useDevContracts) {
|
|
|
294
264
|
};
|
|
295
265
|
}
|
|
296
266
|
async function isSessionEnabled(account, provider, session, useDevContracts) {
|
|
297
|
-
const publicClient =
|
|
267
|
+
const publicClient = createPublicClient({
|
|
298
268
|
chain: session.chain,
|
|
299
|
-
transport:
|
|
269
|
+
transport: createTransport(session.chain, provider),
|
|
300
270
|
});
|
|
301
271
|
const isEnabled = await publicClient.readContract({
|
|
302
272
|
address: getSmartSessionEmissaryAddress(useDevContracts),
|
|
@@ -318,30 +288,30 @@ async function isSessionEnabled(account, provider, session, useDevContracts) {
|
|
|
318
288
|
return isEnabled;
|
|
319
289
|
}
|
|
320
290
|
async function signEnableSession(config, details) {
|
|
321
|
-
const account =
|
|
322
|
-
const validator =
|
|
291
|
+
const account = getAccountProvider(config);
|
|
292
|
+
const validator = getOwnerValidator(config);
|
|
323
293
|
const isStartaleK1 = account.type === 'startale' &&
|
|
324
294
|
validator.address.toLowerCase() ===
|
|
325
|
-
|
|
295
|
+
K1_DEFAULT_VALIDATOR_ADDRESS.toLowerCase();
|
|
326
296
|
if (isStartaleK1) {
|
|
327
297
|
const chainIds = details.hashesAndChainIds.map((h) => h.chainId);
|
|
328
298
|
const uniqueChainIds = [...new Set(chainIds.map((c) => c.toString()))];
|
|
329
299
|
if (uniqueChainIds.length > 1) {
|
|
330
300
|
throw new Error('Startale accounts with K1 validator do not support multi-chain session enable');
|
|
331
301
|
}
|
|
332
|
-
const chain =
|
|
333
|
-
return
|
|
302
|
+
const chain = getChainById(Number(chainIds[0]));
|
|
303
|
+
return signTypedData(config, details.data, chain, undefined, {
|
|
334
304
|
skipErc6492: true,
|
|
335
305
|
});
|
|
336
306
|
}
|
|
337
|
-
return
|
|
307
|
+
return signTypedData(config, details.data, mainnet, undefined, {
|
|
338
308
|
skipErc6492: true,
|
|
339
309
|
});
|
|
340
310
|
}
|
|
341
311
|
async function getSessionNonce(account, session, lockTag, provider, useDevContracts) {
|
|
342
|
-
const publicClient =
|
|
312
|
+
const publicClient = createPublicClient({
|
|
343
313
|
chain: session.chain,
|
|
344
|
-
transport:
|
|
314
|
+
transport: createTransport(session.chain, provider),
|
|
345
315
|
});
|
|
346
316
|
const nonce = await publicClient.readContract({
|
|
347
317
|
address: getSmartSessionEmissaryAddress(useDevContracts),
|
|
@@ -386,7 +356,7 @@ function getSignedSession(account, lockTag, session, nonce, useDevContracts) {
|
|
|
386
356
|
sessionValidatorInitData: session.sessionValidatorInitData,
|
|
387
357
|
salt: session.salt,
|
|
388
358
|
smartSessionEmissary: getSmartSessionEmissaryAddress(useDevContracts),
|
|
389
|
-
expires:
|
|
359
|
+
expires: maxUint256,
|
|
390
360
|
nonce,
|
|
391
361
|
};
|
|
392
362
|
}
|
|
@@ -395,21 +365,21 @@ async function getEnableSessionCall(account, session, enableSessionSignature, ha
|
|
|
395
365
|
const permissionId = getPermissionId(session);
|
|
396
366
|
return {
|
|
397
367
|
to: getSmartSessionEmissaryAddress(useDevContracts),
|
|
398
|
-
data:
|
|
399
|
-
abi:
|
|
368
|
+
data: encodeFunctionData({
|
|
369
|
+
abi: smartSessionEmissaryAbi,
|
|
400
370
|
functionName: 'setConfig',
|
|
401
371
|
args: [
|
|
402
372
|
account,
|
|
403
373
|
{
|
|
404
|
-
scope:
|
|
405
|
-
resetPeriod:
|
|
406
|
-
allocator:
|
|
374
|
+
scope: SCOPE_MULTICHAIN,
|
|
375
|
+
resetPeriod: RESET_PERIOD_ONE_WEEK,
|
|
376
|
+
allocator: zeroAddress,
|
|
407
377
|
permissionId,
|
|
408
378
|
},
|
|
409
379
|
{
|
|
410
|
-
allocatorSig:
|
|
380
|
+
allocatorSig: zeroHash,
|
|
411
381
|
userSig: enableSessionSignature,
|
|
412
|
-
expires:
|
|
382
|
+
expires: maxUint256,
|
|
413
383
|
session: {
|
|
414
384
|
chainDigestIndex: sessionToEnableIndex,
|
|
415
385
|
hashesAndChainIds,
|
|
@@ -421,11 +391,11 @@ async function getEnableSessionCall(account, session, enableSessionSignature, ha
|
|
|
421
391
|
};
|
|
422
392
|
}
|
|
423
393
|
function getSessionData(session, useDevContracts) {
|
|
424
|
-
const validator =
|
|
394
|
+
const validator = getValidator(session.owners);
|
|
425
395
|
const allowedContent = [
|
|
426
396
|
{
|
|
427
397
|
contentNames: [''],
|
|
428
|
-
appDomainSeparator:
|
|
398
|
+
appDomainSeparator: zeroHash,
|
|
429
399
|
},
|
|
430
400
|
];
|
|
431
401
|
const erc7739Data = {
|
|
@@ -451,8 +421,8 @@ function getSessionData(session, useDevContracts) {
|
|
|
451
421
|
const injectedActions = [
|
|
452
422
|
// Native token wrapping
|
|
453
423
|
{
|
|
454
|
-
target:
|
|
455
|
-
selector:
|
|
424
|
+
target: getWrappedTokenAddress(session.chain),
|
|
425
|
+
selector: toFunctionSelector({
|
|
456
426
|
type: 'function',
|
|
457
427
|
name: 'deposit',
|
|
458
428
|
inputs: [],
|
|
@@ -493,20 +463,20 @@ function getSessionData(session, useDevContracts) {
|
|
|
493
463
|
: [sudoAction];
|
|
494
464
|
return {
|
|
495
465
|
sessionValidator: validator.address,
|
|
496
|
-
salt:
|
|
466
|
+
salt: zeroHash,
|
|
497
467
|
sessionValidatorInitData: validator.initData,
|
|
498
468
|
erc7739Policies: erc7739Data,
|
|
499
469
|
actions,
|
|
500
470
|
// Note: Permit2ClaimPolicy has no dev deployment — same address in all environments
|
|
501
471
|
claimPolicies: session.claimPolicies?.map((p) => ({
|
|
502
|
-
policy:
|
|
503
|
-
initData:
|
|
472
|
+
policy: PERMIT2_CLAIM_POLICY_ADDRESS,
|
|
473
|
+
initData: encodePermit2ClaimPolicyInitData(p),
|
|
504
474
|
})) ?? [],
|
|
505
475
|
};
|
|
506
476
|
}
|
|
507
477
|
function getPermissionId(session) {
|
|
508
478
|
const sessionData = getSessionData(session);
|
|
509
|
-
return
|
|
479
|
+
return keccak256(encodeAbiParameters([
|
|
510
480
|
{
|
|
511
481
|
type: 'address',
|
|
512
482
|
name: 'sessionValidator',
|
|
@@ -563,14 +533,14 @@ function getPolicyData(policy, useDevContracts) {
|
|
|
563
533
|
condition: ACTION_CONDITION_EQUAL,
|
|
564
534
|
offset: 0n,
|
|
565
535
|
isLimited: false,
|
|
566
|
-
ref:
|
|
536
|
+
ref: zeroHash,
|
|
567
537
|
usage: { limit: 0n, used: 0n },
|
|
568
538
|
}));
|
|
569
539
|
for (let i = 0; i < policy.rules.length; i++) {
|
|
570
540
|
const rule = policy.rules[i];
|
|
571
|
-
const ref =
|
|
572
|
-
?
|
|
573
|
-
:
|
|
541
|
+
const ref = isHex(rule.referenceValue)
|
|
542
|
+
? padHex(rule.referenceValue)
|
|
543
|
+
: toHex(rule.referenceValue, { size: 32 });
|
|
574
544
|
rules[i] = {
|
|
575
545
|
condition: getCondition(rule.condition),
|
|
576
546
|
offset: rule.calldataOffset,
|
|
@@ -584,7 +554,7 @@ function getPolicyData(policy, useDevContracts) {
|
|
|
584
554
|
}
|
|
585
555
|
return {
|
|
586
556
|
policy: UNIVERSAL_ACTION_POLICY_ADDRESS,
|
|
587
|
-
initData:
|
|
557
|
+
initData: encodeAbiParameters([
|
|
588
558
|
{
|
|
589
559
|
components: [
|
|
590
560
|
{
|
|
@@ -657,13 +627,13 @@ function getPolicyData(policy, useDevContracts) {
|
|
|
657
627
|
const limits = policy.limits.map(({ amount }) => amount);
|
|
658
628
|
return {
|
|
659
629
|
policy: SPENDING_LIMITS_POLICY_ADDRESS,
|
|
660
|
-
initData:
|
|
630
|
+
initData: encodeAbiParameters([{ type: 'address[]' }, { type: 'uint256[]' }], [tokens, limits]),
|
|
661
631
|
};
|
|
662
632
|
}
|
|
663
633
|
case 'time-frame': {
|
|
664
634
|
return {
|
|
665
635
|
policy: TIME_FRAME_POLICY_ADDRESS,
|
|
666
|
-
initData:
|
|
636
|
+
initData: encodePacked(['uint48', 'uint48'], [
|
|
667
637
|
Math.floor(policy.validUntil / 1000),
|
|
668
638
|
Math.floor(policy.validAfter / 1000),
|
|
669
639
|
]),
|
|
@@ -672,13 +642,13 @@ function getPolicyData(policy, useDevContracts) {
|
|
|
672
642
|
case 'usage-limit': {
|
|
673
643
|
return {
|
|
674
644
|
policy: USAGE_LIMIT_POLICY_ADDRESS,
|
|
675
|
-
initData:
|
|
645
|
+
initData: encodePacked(['uint128'], [policy.limit]),
|
|
676
646
|
};
|
|
677
647
|
}
|
|
678
648
|
case 'value-limit': {
|
|
679
649
|
return {
|
|
680
650
|
policy: VALUE_LIMIT_POLICY_ADDRESS,
|
|
681
|
-
initData:
|
|
651
|
+
initData: encodeAbiParameters([{ type: 'uint256' }], [policy.limit]),
|
|
682
652
|
};
|
|
683
653
|
}
|
|
684
654
|
}
|
|
@@ -696,13 +666,13 @@ function getSmartSessionValidator(config) {
|
|
|
696
666
|
initData: '0x',
|
|
697
667
|
deInitData: '0x',
|
|
698
668
|
additionalContext: '0x',
|
|
699
|
-
type:
|
|
669
|
+
type: MODULE_TYPE_ID_VALIDATOR,
|
|
700
670
|
};
|
|
701
671
|
}
|
|
702
672
|
function getSmartSessionEmissaryAddress(useDevContracts) {
|
|
703
673
|
return useDevContracts === true
|
|
704
|
-
?
|
|
705
|
-
:
|
|
674
|
+
? SMART_SESSION_EMISSARY_ADDRESS_DEV
|
|
675
|
+
: SMART_SESSION_EMISSARY_ADDRESS;
|
|
706
676
|
}
|
|
707
677
|
/**
|
|
708
678
|
* Builds a mockSignature for SSX validation gas estimation.
|
|
@@ -712,14 +682,23 @@ function getSmartSessionEmissaryAddress(useDevContracts) {
|
|
|
712
682
|
* The orchestrator slices off the first 20 bytes to identify the validator, then
|
|
713
683
|
* simulates verifyExecution with the mock emissary to estimate gas before the user signs.
|
|
714
684
|
*/
|
|
715
|
-
function buildMockSignature(session, useDevContracts, chainCount = 1) {
|
|
685
|
+
function buildMockSignature(session, useDevContracts, chainCount = 1, targetChainId) {
|
|
716
686
|
const emissaryAddress = getSmartSessionEmissaryAddress(useDevContracts);
|
|
687
|
+
// Use targetChainId when provided (per-chain mockSignatures path) so the
|
|
688
|
+
// mock emissary's chainId check passes on the correct chain. Falls back to
|
|
689
|
+
// session.chain.id for the global mockSignature (single-chain path).
|
|
690
|
+
const primaryChainId = targetChainId ?? session.chain.id;
|
|
691
|
+
// Normalize chainCount to a finite positive integer. Guards against
|
|
692
|
+
// accidental NaN/undefined from caller (e.g. `sourceChains?.length` when
|
|
693
|
+
// sourceChains is undefined) which would otherwise make Array.from produce
|
|
694
|
+
// an empty array and silently drop the ChainId check.
|
|
695
|
+
const safeChainCount = Number.isFinite(chainCount) && chainCount > 0 ? Math.floor(chainCount) : 1;
|
|
717
696
|
// Build one entry per chain — first entry is the real chain ID (for the ChainId check),
|
|
718
697
|
// remaining entries use chainId 0 as placeholders. Hash mismatch is skipped by the
|
|
719
698
|
// mock emissary, so sessionDigest can be zeroHash throughout.
|
|
720
|
-
const hashesAndChainIds = Array.from({ length:
|
|
721
|
-
chainId: i === 0 ? BigInt(
|
|
722
|
-
sessionDigest:
|
|
699
|
+
const hashesAndChainIds = Array.from({ length: safeChainCount }, (_, i) => ({
|
|
700
|
+
chainId: i === 0 ? BigInt(primaryChainId) : 0n,
|
|
701
|
+
sessionDigest: zeroHash,
|
|
723
702
|
}));
|
|
724
703
|
const dummySigners = {
|
|
725
704
|
type: 'experimental_session',
|
|
@@ -733,8 +712,9 @@ function buildMockSignature(session, useDevContracts, chainCount = 1) {
|
|
|
733
712
|
};
|
|
734
713
|
const dummyValidatorSignature = `0x${'00'.repeat(65)}`;
|
|
735
714
|
const sigData = packSignature(dummySigners, dummyValidatorSignature);
|
|
736
|
-
return
|
|
715
|
+
return concat([emissaryAddress, sigData]);
|
|
737
716
|
}
|
|
738
717
|
function createFixedArray(length, getValue) {
|
|
739
718
|
return Array.from({ length }, (_, i) => getValue(i));
|
|
740
719
|
}
|
|
720
|
+
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, };
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { Address } from 'viem';
|
|
2
|
-
import type {
|
|
2
|
+
import type { AuthProvider } from '../auth/provider.js';
|
|
3
|
+
import type { IntentInput, IntentOpStatus, IntentResult, IntentRoute, Portfolio, SignedIntentOp, SplitIntentsInput, SplitIntentsResult } from './types.js';
|
|
3
4
|
export declare class Orchestrator {
|
|
4
5
|
private serverUrl;
|
|
5
|
-
private
|
|
6
|
-
private
|
|
7
|
-
constructor(serverUrl: string,
|
|
6
|
+
private authProvider;
|
|
7
|
+
private extraHeaders?;
|
|
8
|
+
constructor(serverUrl: string, authProvider: AuthProvider, headers?: Record<string, string>);
|
|
8
9
|
getPortfolio(userAddress: Address, filter?: {
|
|
9
10
|
chainIds?: number[];
|
|
10
11
|
tokens?: {
|
|
@@ -13,9 +14,13 @@ export declare class Orchestrator {
|
|
|
13
14
|
}): Promise<Portfolio>;
|
|
14
15
|
getIntentRoute(input: IntentInput): Promise<IntentRoute>;
|
|
15
16
|
splitIntents(input: SplitIntentsInput): Promise<SplitIntentsResult>;
|
|
16
|
-
submitIntent(signedIntentOpUnformatted: SignedIntentOp, dryRun: boolean
|
|
17
|
+
submitIntent(signedIntentOpUnformatted: SignedIntentOp, dryRun: boolean, policyContext?: {
|
|
18
|
+
intentInput: unknown;
|
|
19
|
+
isSponsored: boolean;
|
|
20
|
+
}): Promise<IntentResult>;
|
|
17
21
|
getIntentOpStatus(intentId: bigint): Promise<IntentOpStatus>;
|
|
18
22
|
private getHeaders;
|
|
23
|
+
private getSubmitHeaders;
|
|
19
24
|
private fetch;
|
|
20
25
|
private parseError;
|
|
21
26
|
private parseErrorMessage;
|
|
@@ -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;
|
|
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;AA2BpD,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,YAAY,EACZ,WAAW,EACX,SAAS,EAET,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,SAAS,CAAA;AAchB,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,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,WAAW,EAAE,OAAO,EACpB,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,MAAM,CAAC,EAAE;YACP,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAAA;SAC7B,CAAA;KACF,GACA,OAAO,CAAC,SAAS,CAAC;IA+Cf,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IASxD,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwDnE,YAAY,CAChB,yBAAyB,EAAE,cAAc,EACzC,MAAM,EAAE,OAAO,EACf,aAAa,CAAC,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,GAC7D,OAAO,CAAC,YAAY,CAAC;IAqBlB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YASpD,UAAU;YAWV,gBAAgB;YAgBhB,KAAK;IA4BnB,OAAO,CAAC,UAAU;IA6GlB,OAAO,CAAC,iBAAiB;CAmG1B"}
|