@rhinestone/sdk 1.2.19-alpha.0 → 1.4.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/dist/src/accounts/index.d.ts +5 -3
- package/dist/src/accounts/index.d.ts.map +1 -1
- package/dist/src/accounts/signing/common.d.ts +2 -3
- package/dist/src/accounts/signing/common.d.ts.map +1 -1
- package/dist/src/accounts/signing/message.d.ts +3 -1
- package/dist/src/accounts/signing/message.d.ts.map +1 -1
- package/dist/src/accounts/startale.d.ts +2 -1
- package/dist/src/accounts/startale.d.ts.map +1 -1
- package/dist/src/accounts/startale.js +71 -18
- package/dist/src/accounts/startale.test.js +77 -22
- package/dist/src/execution/utils.d.ts +23 -4
- package/dist/src/execution/utils.d.ts.map +1 -1
- package/dist/src/execution/utils.js +180 -26
- package/dist/src/execution/utils.test.js +156 -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 +3 -1
- package/dist/src/modules/validators/smart-sessions.d.ts +18 -5
- package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
- package/dist/src/modules/validators/smart-sessions.js +84 -3
- package/dist/src/modules/validators/smart-sessions.test.d.ts +2 -0
- package/dist/src/modules/validators/smart-sessions.test.d.ts.map +1 -0
- package/dist/src/modules/validators/smart-sessions.test.js +61 -0
- package/dist/src/orchestrator/consts.d.ts +1 -1
- package/dist/src/orchestrator/consts.js +1 -1
- package/dist/src/orchestrator/registry.d.ts +2 -1
- package/dist/src/orchestrator/registry.d.ts.map +1 -1
- package/dist/src/orchestrator/registry.js +9 -0
- package/dist/src/orchestrator/types.d.ts +24 -1
- package/dist/src/orchestrator/types.d.ts.map +1 -1
- package/dist/src/types.d.ts +23 -8
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -20,10 +20,14 @@ exports.getTokenRequests = getTokenRequests;
|
|
|
20
20
|
exports.resolveCallInputs = resolveCallInputs;
|
|
21
21
|
exports.getIntentAccount = getIntentAccount;
|
|
22
22
|
exports.getTargetExecutionSignature = getTargetExecutionSignature;
|
|
23
|
+
exports.hashErc7739TypedDataForSolady = hashErc7739TypedDataForSolady;
|
|
24
|
+
exports.resolveSessionForChain = resolveSessionForChain;
|
|
23
25
|
const viem_1 = require("viem");
|
|
24
26
|
const account_abstraction_1 = require("viem/account-abstraction");
|
|
25
27
|
const erc7739_1 = require("viem/experimental/erc7739");
|
|
26
28
|
const accounts_1 = require("../accounts");
|
|
29
|
+
const common_1 = require("../accounts/signing/common");
|
|
30
|
+
const startale_1 = require("../accounts/startale");
|
|
27
31
|
const utils_1 = require("../accounts/utils");
|
|
28
32
|
const modules_1 = require("../modules");
|
|
29
33
|
const validators_1 = require("../modules/validators");
|
|
@@ -35,6 +39,33 @@ const compact_1 = require("./compact");
|
|
|
35
39
|
const error_1 = require("./error");
|
|
36
40
|
const permit2_1 = require("./permit2");
|
|
37
41
|
const singleChainOps_1 = require("./singleChainOps");
|
|
42
|
+
function isResolvedSessionSignerSet(signers) {
|
|
43
|
+
return (signers?.type === 'experimental_session' && 'verifyExecutions' in signers);
|
|
44
|
+
}
|
|
45
|
+
async function resolveSignersForChain(config, signers, chainId) {
|
|
46
|
+
if (signers?.type !== 'experimental_session') {
|
|
47
|
+
return signers;
|
|
48
|
+
}
|
|
49
|
+
const resolved = resolveSessionForChain(signers, chainId);
|
|
50
|
+
const enabled = await (0, validators_1.isSessionEnabled)((0, accounts_1.getAddress)(config), config.provider, resolved.session, config.useDevContracts);
|
|
51
|
+
const enableData = enabled ? undefined : resolved.enableData;
|
|
52
|
+
return {
|
|
53
|
+
type: 'experimental_session',
|
|
54
|
+
session: resolved.session,
|
|
55
|
+
enableData,
|
|
56
|
+
verifyExecutions: !!enableData,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function resolveSessionForChain(signers, chainId) {
|
|
60
|
+
if ('sessions' in signers) {
|
|
61
|
+
const config = signers.sessions[chainId];
|
|
62
|
+
if (!config) {
|
|
63
|
+
throw new Error(`No session configured for chain ${chainId}`);
|
|
64
|
+
}
|
|
65
|
+
return config;
|
|
66
|
+
}
|
|
67
|
+
return { session: signers.session, enableData: signers.enableData };
|
|
68
|
+
}
|
|
38
69
|
async function prepareTransaction(config, transaction) {
|
|
39
70
|
const { sourceChains, targetChain, tokenRequests, signers, sponsored, eip7702InitSignature, settlementLayers, sourceAssets, feeAsset, lockFunds, auxiliaryFunds, account, recipient, } = getTransactionParams(transaction);
|
|
40
71
|
const accountAddress = (0, accounts_1.getAddress)(config);
|
|
@@ -103,6 +134,7 @@ async function getTargetExecutionSignature(config, intentOp, targetChain, signer
|
|
|
103
134
|
if (signers?.type !== 'experimental_session') {
|
|
104
135
|
return undefined;
|
|
105
136
|
}
|
|
137
|
+
const resolvedSigners = await resolveSignersForChain(config, signers, targetChain.id);
|
|
106
138
|
const destination = getTargetExecutionMessage(config, intentOp);
|
|
107
139
|
const validator = getValidator(config, signers);
|
|
108
140
|
if (!validator) {
|
|
@@ -110,7 +142,7 @@ async function getTargetExecutionSignature(config, intentOp, targetChain, signer
|
|
|
110
142
|
}
|
|
111
143
|
const ownerValidator = (0, validators_1.getOwnerValidator)(config);
|
|
112
144
|
const isRoot = validator.address === ownerValidator.address;
|
|
113
|
-
const signature = await getDestinationSignature(config,
|
|
145
|
+
const signature = await getDestinationSignature(config, resolvedSigners, validator, isRoot, targetChain, destination, [], true);
|
|
114
146
|
return signature;
|
|
115
147
|
}
|
|
116
148
|
async function signUserOperation(config, preparedUserOperation) {
|
|
@@ -151,10 +183,23 @@ async function signTypedData(config, parameters, chain, signers, options) {
|
|
|
151
183
|
const ownerValidator = (0, validators_1.getOwnerValidator)(config);
|
|
152
184
|
const isRoot = validator.address === ownerValidator.address;
|
|
153
185
|
if (signers?.type === 'experimental_session') {
|
|
186
|
+
const resolved = resolveSessionForChain(signers, chain.id);
|
|
154
187
|
return await signTypedDataWithSession(config, chain, {
|
|
155
188
|
address: validator.address,
|
|
156
189
|
isRoot,
|
|
157
|
-
},
|
|
190
|
+
}, resolved.session, parameters);
|
|
191
|
+
}
|
|
192
|
+
const account = (0, accounts_1.getAccountProvider)(config);
|
|
193
|
+
if (account.type === 'startale' && (0, core_1.supportsEip712)(validator)) {
|
|
194
|
+
const isK1 = validator.address.toLowerCase() ===
|
|
195
|
+
startale_1.K1_DEFAULT_VALIDATOR_ADDRESS.toLowerCase();
|
|
196
|
+
if (isK1) {
|
|
197
|
+
const sig = await signErc7739TypedData(config, signers, validator, isRoot, parameters, chain);
|
|
198
|
+
if (!options?.skipErc6492) {
|
|
199
|
+
return await (0, accounts_1.toErc6492Signature)(config, sig, chain);
|
|
200
|
+
}
|
|
201
|
+
return sig;
|
|
202
|
+
}
|
|
158
203
|
}
|
|
159
204
|
const signature = await (0, accounts_1.getTypedDataPackedSignature)(config, signers, chain, {
|
|
160
205
|
address: validator.address,
|
|
@@ -165,8 +210,9 @@ async function signTypedData(config, parameters, chain, signers, options) {
|
|
|
165
210
|
}
|
|
166
211
|
return signature;
|
|
167
212
|
}
|
|
168
|
-
async function signTypedDataWithSession(config, chain, validator,
|
|
213
|
+
async function signTypedDataWithSession(config, chain, validator, session, parameters) {
|
|
169
214
|
const { name, version, chainId, verifyingContract, salt } = (0, accounts_1.getEip712Domain)(config, chain);
|
|
215
|
+
const signers = (0, common_1.convertOwnerSetToSignerSet)(session.owners);
|
|
170
216
|
const signature = await (0, accounts_1.getTypedDataPackedSignature)(config, signers, chain, validator, {
|
|
171
217
|
domain: parameters.domain,
|
|
172
218
|
primaryType: 'TypedDataSign',
|
|
@@ -197,7 +243,7 @@ async function signTypedDataWithSession(config, chain, validator, signers, param
|
|
|
197
243
|
message: parameters.message,
|
|
198
244
|
signature,
|
|
199
245
|
});
|
|
200
|
-
return (0, viem_1.encodePacked)(['bytes32', 'bytes'], [(0, validators_1.getPermissionId)(
|
|
246
|
+
return (0, viem_1.encodePacked)(['bytes32', 'bytes'], [(0, validators_1.getPermissionId)(session), erc7739Signature]);
|
|
201
247
|
});
|
|
202
248
|
return await (0, accounts_1.toErc6492Signature)(config, signature, chain);
|
|
203
249
|
}
|
|
@@ -349,7 +395,12 @@ async function prepareTransactionAsIntent(config, sourceChains, targetChain, cal
|
|
|
349
395
|
}
|
|
350
396
|
return getIntentAccount(recipient, eip7702InitSignature, account);
|
|
351
397
|
}
|
|
352
|
-
const intentAccount =
|
|
398
|
+
const intentAccount = {
|
|
399
|
+
...getIntentAccount(config, eip7702InitSignature, account),
|
|
400
|
+
...(signers?.type === 'experimental_session' && {
|
|
401
|
+
mockSignature: (0, validators_1.buildMockSignature)(resolveSessionForChain(signers, targetChain.id).session, config.useDevContracts, sourceChains?.length),
|
|
402
|
+
}),
|
|
403
|
+
};
|
|
353
404
|
const recipient = getRecipient(recipientInput);
|
|
354
405
|
const signatureMode = signers?.type === 'experimental_session'
|
|
355
406
|
? types_1.SIG_MODE_EMISSARY_EXECUTION_ERC1271
|
|
@@ -422,42 +473,43 @@ async function signIntent(config, intentOp, targetChain, signers, targetExecutio
|
|
|
422
473
|
const originSignatures = [];
|
|
423
474
|
for (const typedData of origin) {
|
|
424
475
|
const chain = (0, registry_1.getChainById)(typedData.domain?.chainId);
|
|
425
|
-
|
|
426
|
-
// Specifically, we need to remove the enable data in this case
|
|
427
|
-
const matchesTargetChain = chain.id === targetChain.id;
|
|
428
|
-
const originSigners = signers?.type === 'experimental_session'
|
|
429
|
-
? {
|
|
430
|
-
type: 'experimental_session',
|
|
431
|
-
session: signers.session,
|
|
432
|
-
verifyExecutions: matchesTargetChain
|
|
433
|
-
? signers.verifyExecutions
|
|
434
|
-
: undefined,
|
|
435
|
-
enableData: matchesTargetChain ? signers.enableData : undefined,
|
|
436
|
-
}
|
|
437
|
-
: signers;
|
|
476
|
+
const originSigners = await resolveSignersForChain(config, signers, chain.id);
|
|
438
477
|
const signature = await signIntentTypedData(config, originSigners, validator, isRoot, typedData, chain, targetExecution ?? false);
|
|
439
478
|
originSignatures.push(signature);
|
|
440
479
|
}
|
|
441
|
-
const
|
|
480
|
+
const destinationSigners = await resolveSignersForChain(config, signers, targetChain.id);
|
|
481
|
+
const destinationSignature = await getDestinationSignature(config, destinationSigners, validator, isRoot, targetChain, destination, originSignatures, targetExecution ?? false);
|
|
442
482
|
return {
|
|
443
483
|
originSignatures,
|
|
444
484
|
destinationSignature,
|
|
445
485
|
};
|
|
446
486
|
}
|
|
447
487
|
async function getDestinationSignature(config, signers, validator, isRoot, targetChain, destination, originSignatures, targetExecution) {
|
|
448
|
-
//
|
|
488
|
+
// Smart sessions require a separate destination signature because the
|
|
489
|
+
// session enable data differs per chain
|
|
449
490
|
if (signers?.type === 'experimental_session') {
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
491
|
+
return await signDestinationSeparately(config, signers, validator, isRoot, targetChain, destination, targetExecution);
|
|
492
|
+
}
|
|
493
|
+
// ERC-7739 with K1 validator requires a separate destination signature because
|
|
494
|
+
// the account's eip712Domain() returns the target chain's chainId, which differs
|
|
495
|
+
// from the origin chain used for the last origin signature
|
|
496
|
+
const isK1Validator = validator.address.toLowerCase() ===
|
|
497
|
+
startale_1.K1_DEFAULT_VALIDATOR_ADDRESS.toLowerCase();
|
|
498
|
+
if (isK1Validator && (0, core_1.supportsEip712)(validator)) {
|
|
499
|
+
return await signDestinationSeparately(config, signers, validator, isRoot, targetChain, destination, targetExecution);
|
|
455
500
|
}
|
|
456
501
|
const lastOriginSignature = originSignatures.at(-1);
|
|
457
502
|
return typeof lastOriginSignature === 'object'
|
|
458
503
|
? lastOriginSignature.preClaimSig
|
|
459
504
|
: (lastOriginSignature ?? '0x');
|
|
460
505
|
}
|
|
506
|
+
async function signDestinationSeparately(config, signers, validator, isRoot, targetChain, destination, targetExecution) {
|
|
507
|
+
const destinationChain = (0, registry_1.getChainById)(targetChain.id);
|
|
508
|
+
const destinationSignatures = await signIntentTypedData(config, signers, validator, isRoot, destination, destinationChain, targetExecution);
|
|
509
|
+
return typeof destinationSignatures === 'object'
|
|
510
|
+
? destinationSignatures.preClaimSig
|
|
511
|
+
: (destinationSignatures ?? '0x');
|
|
512
|
+
}
|
|
461
513
|
function getIntentMessages(config, intentOp) {
|
|
462
514
|
const address = (0, accounts_1.getAddress)(config);
|
|
463
515
|
const intentExecutor = (0, modules_1.getIntentExecutor)(config);
|
|
@@ -499,13 +551,18 @@ function getTargetExecutionMessage(config, intentOp) {
|
|
|
499
551
|
}
|
|
500
552
|
async function signIntentTypedData(config, signers, validator, isRoot, parameters, chain, targetExecution) {
|
|
501
553
|
if ((0, core_1.supportsEip712)(validator)) {
|
|
554
|
+
const isK1Validator = validator.address.toLowerCase() ===
|
|
555
|
+
startale_1.K1_DEFAULT_VALIDATOR_ADDRESS.toLowerCase();
|
|
556
|
+
if (isK1Validator) {
|
|
557
|
+
return await signErc7739TypedData(config, signers, validator, isRoot, parameters, chain);
|
|
558
|
+
}
|
|
502
559
|
return await (0, accounts_1.getTypedDataPackedSignature)(config, signers, chain, {
|
|
503
560
|
address: validator.address,
|
|
504
561
|
isRoot,
|
|
505
562
|
}, parameters);
|
|
506
563
|
}
|
|
507
564
|
const hash = (0, viem_1.hashTypedData)(parameters);
|
|
508
|
-
if (signers
|
|
565
|
+
if (isResolvedSessionSignerSet(signers) && signers.verifyExecutions) {
|
|
509
566
|
if (targetExecution) {
|
|
510
567
|
return await (0, accounts_1.getEmissarySignature)(config, {
|
|
511
568
|
type: 'experimental_session',
|
|
@@ -780,3 +837,100 @@ function validateTokenSymbols(chain, tokenAddressOrSymbols) {
|
|
|
780
837
|
}
|
|
781
838
|
}
|
|
782
839
|
}
|
|
840
|
+
// Signs typed data using ERC-7739 nested EIP-712 for Startale accounts.
|
|
841
|
+
// Uses a Solady-compatible TypedDataSign hash and wraps the signature with
|
|
842
|
+
// the app domain separator and contents hash for on-chain verification.
|
|
843
|
+
async function signErc7739TypedData(config, signers, validator, isRoot, parameters, chain) {
|
|
844
|
+
const verifierDomain = (0, accounts_1.getEip712Domain)(config, chain);
|
|
845
|
+
const hash = hashErc7739TypedDataForSolady({
|
|
846
|
+
domain: parameters.domain,
|
|
847
|
+
types: parameters.types,
|
|
848
|
+
primaryType: parameters.primaryType,
|
|
849
|
+
message: parameters.message,
|
|
850
|
+
verifierDomain,
|
|
851
|
+
});
|
|
852
|
+
return await (0, accounts_1.getEip1271Signature)(config, signers, chain, {
|
|
853
|
+
address: validator.address,
|
|
854
|
+
isRoot,
|
|
855
|
+
}, hash, (signature) => (0, erc7739_1.wrapTypedDataSignature)({
|
|
856
|
+
domain: parameters.domain,
|
|
857
|
+
primaryType: parameters.primaryType,
|
|
858
|
+
types: parameters.types,
|
|
859
|
+
message: parameters.message,
|
|
860
|
+
signature,
|
|
861
|
+
}));
|
|
862
|
+
}
|
|
863
|
+
// Computes an ERC-7739 TypedDataSign hash compatible with Solady's ERC1271
|
|
864
|
+
// on-chain verification. Solady constructs the TypedDataSign type string by
|
|
865
|
+
// appending the contentsType directly after the TypedDataSign definition,
|
|
866
|
+
// which differs from viem's standard EIP-712 encodeType that re-sorts all
|
|
867
|
+
// referenced types alphabetically.
|
|
868
|
+
function hashErc7739TypedDataForSolady({ domain, types, primaryType, message, verifierDomain, }) {
|
|
869
|
+
// Standard EIP-712 encodeType for the original content type
|
|
870
|
+
function encodeTypeString(primary, allTypes) {
|
|
871
|
+
const deps = new Set();
|
|
872
|
+
function findDeps(t) {
|
|
873
|
+
const match = t.match(/^\w*/);
|
|
874
|
+
const typeName = match?.[0];
|
|
875
|
+
if (!typeName || deps.has(typeName) || !allTypes[typeName])
|
|
876
|
+
return;
|
|
877
|
+
deps.add(typeName);
|
|
878
|
+
for (const field of allTypes[typeName])
|
|
879
|
+
findDeps(field.type);
|
|
880
|
+
}
|
|
881
|
+
findDeps(primary);
|
|
882
|
+
deps.delete(primary);
|
|
883
|
+
const sorted = [primary, ...Array.from(deps).sort()];
|
|
884
|
+
return sorted
|
|
885
|
+
.map((t) => `${t}(${allTypes[t].map((f) => `${f.type} ${f.name}`).join(',')})`)
|
|
886
|
+
.join('');
|
|
887
|
+
}
|
|
888
|
+
const contentsType = encodeTypeString(primaryType, types);
|
|
889
|
+
const contentsName = primaryType;
|
|
890
|
+
// Construct TypedDataSign type string matching Solady's on-chain encoding:
|
|
891
|
+
// TypedDataSign(<contentsName> contents,...salt) + contentsType
|
|
892
|
+
const typedDataSignTypeString = `TypedDataSign(${contentsName} contents,string name,string version,uint256 chainId,address verifyingContract,bytes32 salt)${contentsType}`;
|
|
893
|
+
const typedDataSignTypeHash = (0, viem_1.keccak256)((0, viem_1.toHex)(typedDataSignTypeString));
|
|
894
|
+
// Hash the original content struct
|
|
895
|
+
const contentsHash = (0, viem_1.hashStruct)({
|
|
896
|
+
data: message,
|
|
897
|
+
primaryType,
|
|
898
|
+
types: types,
|
|
899
|
+
});
|
|
900
|
+
// Compute the TypedDataSign struct hash
|
|
901
|
+
const structHash = (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([
|
|
902
|
+
{ type: 'bytes32' },
|
|
903
|
+
{ type: 'bytes32' },
|
|
904
|
+
{ type: 'bytes32' },
|
|
905
|
+
{ type: 'bytes32' },
|
|
906
|
+
{ type: 'uint256' },
|
|
907
|
+
{ type: 'address' },
|
|
908
|
+
{ type: 'bytes32' },
|
|
909
|
+
], [
|
|
910
|
+
typedDataSignTypeHash,
|
|
911
|
+
contentsHash,
|
|
912
|
+
(0, viem_1.keccak256)((0, viem_1.toHex)(verifierDomain.name)),
|
|
913
|
+
(0, viem_1.keccak256)((0, viem_1.toHex)(verifierDomain.version)),
|
|
914
|
+
BigInt(verifierDomain.chainId),
|
|
915
|
+
verifierDomain.verifyingContract,
|
|
916
|
+
verifierDomain.salt,
|
|
917
|
+
]));
|
|
918
|
+
// Compute the app domain separator
|
|
919
|
+
const domainTypes = [];
|
|
920
|
+
if (domain.name)
|
|
921
|
+
domainTypes.push({ name: 'name', type: 'string' });
|
|
922
|
+
if (domain.version)
|
|
923
|
+
domainTypes.push({ name: 'version', type: 'string' });
|
|
924
|
+
if (domain.chainId)
|
|
925
|
+
domainTypes.push({ name: 'chainId', type: 'uint256' });
|
|
926
|
+
if (domain.verifyingContract)
|
|
927
|
+
domainTypes.push({ name: 'verifyingContract', type: 'address' });
|
|
928
|
+
if (domain.salt)
|
|
929
|
+
domainTypes.push({ name: 'salt', type: 'bytes32' });
|
|
930
|
+
const appDomainSeparator = (0, viem_1.hashDomain)({
|
|
931
|
+
domain,
|
|
932
|
+
types: { EIP712Domain: domainTypes },
|
|
933
|
+
});
|
|
934
|
+
// Final hash: keccak256("\x19\x01" || appDomainSep || structHash)
|
|
935
|
+
return (0, viem_1.keccak256)((0, viem_1.concat)(['0x1901', appDomainSeparator, structHash]));
|
|
936
|
+
}
|
|
@@ -11,6 +11,107 @@ vitest_1.vi.mock('../orchestrator', () => ({
|
|
|
11
11
|
getIntentRoute: mockGetIntentRoute,
|
|
12
12
|
}),
|
|
13
13
|
}));
|
|
14
|
+
(0, vitest_1.describe)('hashErc7739TypedDataForSolady', () => {
|
|
15
|
+
const verifierDomain = {
|
|
16
|
+
name: 'Startale',
|
|
17
|
+
version: '1.0.0',
|
|
18
|
+
chainId: 421614,
|
|
19
|
+
verifyingContract: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
|
|
20
|
+
salt: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
21
|
+
};
|
|
22
|
+
(0, vitest_1.test)('simple typed data', () => {
|
|
23
|
+
const hash = (0, utils_1.hashErc7739TypedDataForSolady)({
|
|
24
|
+
domain: {
|
|
25
|
+
name: 'TestApp',
|
|
26
|
+
version: '1',
|
|
27
|
+
chainId: 421614,
|
|
28
|
+
verifyingContract: '0x1234567890abcdef1234567890abcdef12345678',
|
|
29
|
+
},
|
|
30
|
+
types: {
|
|
31
|
+
Greeting: [
|
|
32
|
+
{ name: 'text', type: 'string' },
|
|
33
|
+
{ name: 'value', type: 'uint256' },
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
primaryType: 'Greeting',
|
|
37
|
+
message: {
|
|
38
|
+
text: 'Hello',
|
|
39
|
+
value: 42n,
|
|
40
|
+
},
|
|
41
|
+
verifierDomain,
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.expect)(hash).toEqual('0xacd2d65e9986501bb617b90505f4b527ee4eac3c29ac4fea21bb74d8e754e61b');
|
|
44
|
+
});
|
|
45
|
+
(0, vitest_1.test)('nested types', () => {
|
|
46
|
+
const hash = (0, utils_1.hashErc7739TypedDataForSolady)({
|
|
47
|
+
domain: {
|
|
48
|
+
name: 'TestApp',
|
|
49
|
+
version: '1',
|
|
50
|
+
chainId: 84532,
|
|
51
|
+
verifyingContract: '0x1234567890abcdef1234567890abcdef12345678',
|
|
52
|
+
},
|
|
53
|
+
types: {
|
|
54
|
+
Order: [
|
|
55
|
+
{ name: 'sender', type: 'address' },
|
|
56
|
+
{ name: 'amount', type: 'uint256' },
|
|
57
|
+
{ name: 'detail', type: 'Detail' },
|
|
58
|
+
],
|
|
59
|
+
Detail: [
|
|
60
|
+
{ name: 'nonce', type: 'uint256' },
|
|
61
|
+
{ name: 'deadline', type: 'uint256' },
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
primaryType: 'Order',
|
|
65
|
+
message: {
|
|
66
|
+
sender: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
67
|
+
amount: 1000000n,
|
|
68
|
+
detail: {
|
|
69
|
+
nonce: 1n,
|
|
70
|
+
deadline: 1700000000n,
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
verifierDomain: {
|
|
74
|
+
...verifierDomain,
|
|
75
|
+
chainId: 84532,
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
(0, vitest_1.expect)(hash).toEqual('0x1ea8d31e9198ac601c92ab8f54b7ff1ff41a7d4956566c1a0825a5ade5d5d045');
|
|
79
|
+
});
|
|
80
|
+
(0, vitest_1.test)('different verifier chainId produces different hash', () => {
|
|
81
|
+
const params = {
|
|
82
|
+
domain: {
|
|
83
|
+
name: 'TestApp',
|
|
84
|
+
version: '1',
|
|
85
|
+
chainId: 421614,
|
|
86
|
+
verifyingContract: '0x1234567890abcdef1234567890abcdef12345678',
|
|
87
|
+
},
|
|
88
|
+
types: {
|
|
89
|
+
Greeting: [
|
|
90
|
+
{ name: 'text', type: 'string' },
|
|
91
|
+
{ name: 'value', type: 'uint256' },
|
|
92
|
+
],
|
|
93
|
+
},
|
|
94
|
+
primaryType: 'Greeting',
|
|
95
|
+
message: {
|
|
96
|
+
text: 'Hello',
|
|
97
|
+
value: 42n,
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
const hashSameChain = (0, utils_1.hashErc7739TypedDataForSolady)({
|
|
101
|
+
...params,
|
|
102
|
+
verifierDomain,
|
|
103
|
+
});
|
|
104
|
+
const hashCrossChain = (0, utils_1.hashErc7739TypedDataForSolady)({
|
|
105
|
+
...params,
|
|
106
|
+
verifierDomain: {
|
|
107
|
+
...verifierDomain,
|
|
108
|
+
chainId: 84532,
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
(0, vitest_1.expect)(hashSameChain).not.toEqual(hashCrossChain);
|
|
112
|
+
(0, vitest_1.expect)(hashCrossChain).toEqual('0x685f60853ef1d5fcbb3021db370b6f3c1c099f1fb42f08f9ba4e6b9b7c8c941a');
|
|
113
|
+
});
|
|
114
|
+
});
|
|
14
115
|
(0, vitest_1.describe)('prepareTransactionAsIntent', () => {
|
|
15
116
|
(0, vitest_1.beforeEach)(() => {
|
|
16
117
|
mockGetIntentRoute.mockReset();
|
|
@@ -47,3 +148,58 @@ vitest_1.vi.mock('../orchestrator', () => ({
|
|
|
47
148
|
(0, vitest_1.expect)(intentInput.options.auxiliaryFunds).toBeUndefined();
|
|
48
149
|
});
|
|
49
150
|
});
|
|
151
|
+
const makeSession = (chainId) => ({
|
|
152
|
+
chain: { id: chainId },
|
|
153
|
+
owners: {
|
|
154
|
+
type: 'ecdsa',
|
|
155
|
+
accounts: [consts_1.accountA],
|
|
156
|
+
threshold: 1,
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
(0, vitest_1.describe)('resolveSessionForChain', () => {
|
|
160
|
+
(0, vitest_1.test)('single session returns session for any chain', () => {
|
|
161
|
+
const signers = {
|
|
162
|
+
type: 'experimental_session',
|
|
163
|
+
session: makeSession(chains_1.mainnet.id),
|
|
164
|
+
};
|
|
165
|
+
const result = (0, utils_1.resolveSessionForChain)(signers, chains_1.optimism.id);
|
|
166
|
+
(0, vitest_1.expect)(result).toBeDefined();
|
|
167
|
+
(0, vitest_1.expect)(result.session).toBe(signers.session);
|
|
168
|
+
});
|
|
169
|
+
(0, vitest_1.test)('single session with enableData returns enableData', () => {
|
|
170
|
+
const enableData = {
|
|
171
|
+
userSignature: '0x00',
|
|
172
|
+
hashesAndChainIds: [],
|
|
173
|
+
sessionToEnableIndex: 0,
|
|
174
|
+
};
|
|
175
|
+
const signers = {
|
|
176
|
+
type: 'experimental_session',
|
|
177
|
+
session: makeSession(chains_1.mainnet.id),
|
|
178
|
+
enableData,
|
|
179
|
+
};
|
|
180
|
+
const result = (0, utils_1.resolveSessionForChain)(signers, chains_1.mainnet.id);
|
|
181
|
+
(0, vitest_1.expect)(result.enableData).toBe(enableData);
|
|
182
|
+
});
|
|
183
|
+
(0, vitest_1.test)('per-chain sessions returns correct session per chain', () => {
|
|
184
|
+
const mainnetSession = makeSession(chains_1.mainnet.id);
|
|
185
|
+
const optimismSession = makeSession(chains_1.optimism.id);
|
|
186
|
+
const signers = {
|
|
187
|
+
type: 'experimental_session',
|
|
188
|
+
sessions: {
|
|
189
|
+
[chains_1.mainnet.id]: { session: mainnetSession },
|
|
190
|
+
[chains_1.optimism.id]: { session: optimismSession },
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
(0, vitest_1.expect)((0, utils_1.resolveSessionForChain)(signers, chains_1.mainnet.id).session).toBe(mainnetSession);
|
|
194
|
+
(0, vitest_1.expect)((0, utils_1.resolveSessionForChain)(signers, chains_1.optimism.id).session).toBe(optimismSession);
|
|
195
|
+
});
|
|
196
|
+
(0, vitest_1.test)('per-chain sessions throws for missing chain', () => {
|
|
197
|
+
const signers = {
|
|
198
|
+
type: 'experimental_session',
|
|
199
|
+
sessions: {
|
|
200
|
+
[chains_1.mainnet.id]: { session: makeSession(chains_1.mainnet.id) },
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
(0, vitest_1.expect)(() => (0, utils_1.resolveSessionForChain)(signers, chains_1.optimism.id)).toThrow(`No session configured for chain ${chains_1.optimism.id}`);
|
|
204
|
+
});
|
|
205
|
+
});
|
package/dist/src/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { type IntentRoute, type PreparedTransactionData, type PreparedUserOperat
|
|
|
8
8
|
import { MULTI_FACTOR_VALIDATOR_ADDRESS, OWNABLE_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS } from './modules';
|
|
9
9
|
import { type SessionDetails } from './modules/validators/smart-sessions';
|
|
10
10
|
import { type ApprovalRequired, type AuxiliaryFunds, getAllSupportedChainsAndTokens, getSupportedTokens, getTokenAddress, getTokenDecimals, type IntentInput, type IntentOp, type IntentOpStatus, type Portfolio, type SettlementLayer, type SignedIntentOp, type SplitIntentsInput, type SplitIntentsResult, type TokenRequirements, type WrapRequired } from './orchestrator';
|
|
11
|
-
import type { AccountProviderConfig, AccountType, BundlerConfig, Call, CallInput, MultiFactorValidatorConfig, OwnableValidatorConfig, OwnerSet, PaymasterConfig, Policy, ProviderConfig, Recovery, RhinestoneAccountConfig, RhinestoneConfig, RhinestoneSDKConfig, Session, SignerSet, TokenRequest, TokenSymbol, Transaction, UniversalActionPolicyParamCondition, UserOperationTransaction, WebauthnValidatorConfig } from './types';
|
|
11
|
+
import type { AccountProviderConfig, AccountType, BundlerConfig, Call, CallInput, ChainSessionConfig, MultiFactorValidatorConfig, OwnableValidatorConfig, OwnerSet, PaymasterConfig, Policy, ProviderConfig, Recovery, RhinestoneAccountConfig, RhinestoneConfig, RhinestoneSDKConfig, Session, SignerSet, TokenRequest, TokenSymbol, Transaction, UniversalActionPolicyParamCondition, UserOperationTransaction, WebauthnValidatorConfig } from './types';
|
|
12
12
|
interface RhinestoneAccount {
|
|
13
13
|
config: RhinestoneAccountConfig;
|
|
14
14
|
deploy: (chain: Chain, params?: {
|
|
@@ -75,5 +75,5 @@ declare class RhinestoneSDK {
|
|
|
75
75
|
splitIntents(input: SplitIntentsInput): Promise<SplitIntentsResult>;
|
|
76
76
|
}
|
|
77
77
|
export { RhinestoneSDK, createRhinestoneAccount, deployAccountsForOwners, walletClientToAccount, wrapParaAccount, OWNABLE_VALIDATOR_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS, MULTI_FACTOR_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, getSupportedTokens, getTokenAddress, getTokenDecimals, getAllSupportedChainsAndTokens, checkERC20AllowanceDirect, getPermit2Address, signPermit2Batch, signPermit2Sequential, };
|
|
78
|
-
export type { RhinestoneAccount, AccountType, RhinestoneAccountConfig, AccountProviderConfig, ProviderConfig, BundlerConfig, PaymasterConfig, Transaction, TokenSymbol, CallInput, Call, TokenRequest, OwnerSet, OwnableValidatorConfig, WebauthnValidatorConfig, MultiFactorValidatorConfig, SignerSet, Session, Recovery, Policy, UniversalActionPolicyParamCondition, PreparedTransactionData, SignedTransactionData, TransactionResult, PreparedUserOperationData, SignedUserOperationData, UserOperationResult, AuxiliaryFunds, IntentInput, IntentOp, IntentOpStatus, IntentRoute, SettlementLayer, SignedIntentOp, SplitIntentsInput, SplitIntentsResult, Portfolio, TokenRequirements, WrapRequired, ApprovalRequired, MultiChainPermit2Config, MultiChainPermit2Result, BatchPermit2Result, };
|
|
78
|
+
export type { RhinestoneAccount, AccountType, RhinestoneAccountConfig, AccountProviderConfig, ProviderConfig, BundlerConfig, PaymasterConfig, Transaction, TokenSymbol, CallInput, Call, TokenRequest, OwnerSet, OwnableValidatorConfig, WebauthnValidatorConfig, MultiFactorValidatorConfig, SignerSet, ChainSessionConfig, Session, Recovery, Policy, UniversalActionPolicyParamCondition, PreparedTransactionData, SignedTransactionData, TransactionResult, PreparedUserOperationData, SignedUserOperationData, UserOperationResult, AuxiliaryFunds, IntentInput, IntentOp, IntentOpStatus, IntentRoute, SettlementLayer, SignedIntentOp, SplitIntentsInput, SplitIntentsResult, Portfolio, TokenRequirements, WrapRequired, ApprovalRequired, MultiChainPermit2Config, MultiChainPermit2Result, BatchPermit2Result, };
|
|
79
79
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { getMockSignature, getOwnerValidator, MULTI_FACTOR_VALIDATOR_ADDRESS, OWNABLE_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS } from './core';
|
|
2
|
-
import { getEnableSessionCall, getPermissionId, getSmartSessionValidator } from './smart-sessions';
|
|
3
|
-
export { OWNABLE_VALIDATOR_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS, MULTI_FACTOR_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, getOwnerValidator, getSmartSessionValidator, getEnableSessionCall, getPermissionId, getMockSignature, };
|
|
2
|
+
import { buildMockSignature, getEnableSessionCall, getPermissionId, getSmartSessionValidator, isSessionEnabled } from './smart-sessions';
|
|
3
|
+
export { OWNABLE_VALIDATOR_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS, MULTI_FACTOR_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, getOwnerValidator, getSmartSessionValidator, getEnableSessionCall, getPermissionId, getMockSignature, buildMockSignature, isSessionEnabled, };
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../modules/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAC9B,0BAA0B,EAC3B,MAAM,QAAQ,CAAA;AACf,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,wBAAwB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../modules/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAC9B,0BAA0B,EAC3B,MAAM,QAAQ,CAAA;AACf,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getMockSignature = exports.getPermissionId = exports.getEnableSessionCall = exports.getSmartSessionValidator = exports.getOwnerValidator = exports.SMART_SESSION_EMISSARY_ADDRESS = exports.MULTI_FACTOR_VALIDATOR_ADDRESS = exports.WEBAUTHN_VALIDATOR_ADDRESS = exports.OWNABLE_VALIDATOR_ADDRESS = void 0;
|
|
3
|
+
exports.isSessionEnabled = exports.buildMockSignature = exports.getMockSignature = exports.getPermissionId = exports.getEnableSessionCall = exports.getSmartSessionValidator = exports.getOwnerValidator = exports.SMART_SESSION_EMISSARY_ADDRESS = exports.MULTI_FACTOR_VALIDATOR_ADDRESS = exports.WEBAUTHN_VALIDATOR_ADDRESS = exports.OWNABLE_VALIDATOR_ADDRESS = void 0;
|
|
4
4
|
const core_1 = require("./core");
|
|
5
5
|
Object.defineProperty(exports, "getMockSignature", { enumerable: true, get: function () { return core_1.getMockSignature; } });
|
|
6
6
|
Object.defineProperty(exports, "getOwnerValidator", { enumerable: true, get: function () { return core_1.getOwnerValidator; } });
|
|
@@ -9,6 +9,8 @@ Object.defineProperty(exports, "OWNABLE_VALIDATOR_ADDRESS", { enumerable: true,
|
|
|
9
9
|
Object.defineProperty(exports, "SMART_SESSION_EMISSARY_ADDRESS", { enumerable: true, get: function () { return core_1.SMART_SESSION_EMISSARY_ADDRESS; } });
|
|
10
10
|
Object.defineProperty(exports, "WEBAUTHN_VALIDATOR_ADDRESS", { enumerable: true, get: function () { return core_1.WEBAUTHN_VALIDATOR_ADDRESS; } });
|
|
11
11
|
const smart_sessions_1 = require("./smart-sessions");
|
|
12
|
+
Object.defineProperty(exports, "buildMockSignature", { enumerable: true, get: function () { return smart_sessions_1.buildMockSignature; } });
|
|
12
13
|
Object.defineProperty(exports, "getEnableSessionCall", { enumerable: true, get: function () { return smart_sessions_1.getEnableSessionCall; } });
|
|
13
14
|
Object.defineProperty(exports, "getPermissionId", { enumerable: true, get: function () { return smart_sessions_1.getPermissionId; } });
|
|
14
15
|
Object.defineProperty(exports, "getSmartSessionValidator", { enumerable: true, get: function () { return smart_sessions_1.getSmartSessionValidator; } });
|
|
16
|
+
Object.defineProperty(exports, "isSessionEnabled", { enumerable: true, get: function () { return smart_sessions_1.isSessionEnabled; } });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Address, type Hex, type TypedDataDefinition } from 'viem';
|
|
2
|
-
import type { ProviderConfig, RhinestoneAccountConfig, RhinestoneConfig, Session,
|
|
2
|
+
import type { ProviderConfig, RhinestoneAccountConfig, RhinestoneConfig, Session, SessionEnableData } from '../../types';
|
|
3
3
|
import { type Module } from '../common';
|
|
4
4
|
import { SMART_SESSION_EMISSARY_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS_DEV } from './core';
|
|
5
5
|
interface SessionData {
|
|
@@ -164,9 +164,13 @@ declare const SMART_SESSION_MODE_ENABLE = "0x01";
|
|
|
164
164
|
declare const SMART_SESSIONS_FALLBACK_TARGET_FLAG: Address;
|
|
165
165
|
declare const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG: Hex;
|
|
166
166
|
declare const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION: Hex;
|
|
167
|
-
|
|
167
|
+
interface ResolvedSessionSignerSet {
|
|
168
168
|
type: 'experimental_session';
|
|
169
|
-
|
|
169
|
+
session: Session;
|
|
170
|
+
enableData?: SessionEnableData;
|
|
171
|
+
verifyExecutions: boolean;
|
|
172
|
+
}
|
|
173
|
+
declare function packSignature(signers: ResolvedSessionSignerSet, validatorSignature: Hex): Hex;
|
|
170
174
|
declare function getSessionDetails(account: Address, sessions: Session[], provider: ProviderConfig | undefined, useDevContracts?: boolean): Promise<SessionDetails>;
|
|
171
175
|
declare function isSessionEnabled(account: Address, provider: ProviderConfig | undefined, session: Session, useDevContracts?: boolean): Promise<boolean>;
|
|
172
176
|
declare function signEnableSession(config: RhinestoneAccountConfig, details: SessionDetails): Promise<Hex>;
|
|
@@ -180,6 +184,15 @@ declare function getEnableSessionCall(account: Address, session: Session, enable
|
|
|
180
184
|
declare function getSessionData(session: Session): SessionData;
|
|
181
185
|
declare function getPermissionId(session: Session): `0x${string}`;
|
|
182
186
|
declare function getSmartSessionValidator(config: RhinestoneConfig): Module | null;
|
|
183
|
-
|
|
184
|
-
|
|
187
|
+
/**
|
|
188
|
+
* Builds a mockSignature for SSX validation gas estimation.
|
|
189
|
+
* Format: emissaryAddress (20 bytes) + enable-mode sigData.
|
|
190
|
+
* Uses real session data (policies/actions from the user's session config) with dummy
|
|
191
|
+
* sigs and hashes — the mock emissary skips sig verification and only writes storage.
|
|
192
|
+
* The orchestrator slices off the first 20 bytes to identify the validator, then
|
|
193
|
+
* simulates verifyExecution with the mock emissary to estimate gas before the user signs.
|
|
194
|
+
*/
|
|
195
|
+
declare function buildMockSignature(session: Session, useDevContracts?: boolean, chainCount?: number): Hex;
|
|
196
|
+
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, packSignature, getSessionData, getEnableSessionCall, getPermissionId, getSmartSessionValidator, getSessionDetails, isSessionEnabled, signEnableSession, buildMockSignature, };
|
|
197
|
+
export type { ChainSession, ChainDigest, ResolvedSessionSignerSet, SessionData, SmartSessionModeType, SessionDetails, };
|
|
185
198
|
//# sourceMappingURL=smart-sessions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-sessions.d.ts","sourceRoot":"","sources":["../../../../modules/validators/smart-sessions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"smart-sessions.d.ts","sourceRoot":"","sources":["../../../../modules/validators/smart-sessions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,OAAO,EAMZ,KAAK,GAAG,EAOR,KAAK,mBAAmB,EAKzB,MAAM,MAAM,CAAA;AAcb,OAAO,KAAK,EAGV,cAAc,EACd,uBAAuB,EACvB,gBAAgB,EAChB,OAAO,EACP,iBAAiB,EAElB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAA4B,KAAK,MAAM,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAGL,8BAA8B,EAC9B,kCAAkC,EACnC,MAAM,QAAQ,CAAA;AAQf,UAAU,WAAW;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,wBAAwB,EAAE,GAAG,CAAA;IAC7B,IAAI,EAAE,GAAG,CAAA;IACT,eAAe,EAAE;QACf,qBAAqB,EAAE,SAAS,qBAAqB,EAAE,CAAA;QACvD,eAAe,EAAE,SAAS,aAAa,EAAE,CAAA;KAC1C,CAAA;IACD,OAAO,EAAE,SAAS,UAAU,EAAE,CAAA;IAC9B,aAAa,EAAE,SAAS,UAAU,EAAE,CAAA;CACrC;AAED,UAAU,aAAa;IACrB,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,GAAG,CAAA;CACd;AAED,UAAU,qBAAqB;IAC7B,kBAAkB,EAAE,GAAG,CAAA;IACvB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAChC;AAED,UAAU,UAAU;IAClB,oBAAoB,EAAE,GAAG,CAAA;IACzB,YAAY,EAAE,OAAO,CAAA;IACrB,cAAc,EAAE,SAAS,UAAU,EAAE,CAAA;CACtC;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,GAAG,CAAA;CACd;AAaD,KAAK,oBAAoB,GACrB,OAAO,sBAAsB,GAC7B,OAAO,yBAAyB,CAAA;AAEpC,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,GAAG,CAAA;CACnB;AAED,UAAU,iBAAiB;IACzB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,0BAA0B,EAAE,OAAO,CAAA;IACnC,sBAAsB,EAAE,OAAO,CAAA;IAC/B,cAAc,EAAE,SAAS,UAAU,EAAE,CAAA;IACrC,eAAe,EAAE,WAAW,CAAA;IAC5B,OAAO,EAAE,SAAS,UAAU,EAAE,CAAA;CAC/B;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,iBAAiB,CAAA;IAC9B,gBAAgB,EAAE,OAAO,CAAA;IACzB,wBAAwB,EAAE,GAAG,CAAA;IAC7B,IAAI,EAAE,GAAG,CAAA;IACT,YAAY,EAAE,OAAO,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,aAAa,CAAA;CACvB;AAED,UAAU,WAAW;IACnB,qBAAqB,EAAE,SAAS,cAAc,EAAE,CAAA;IAChD,eAAe,EAAE,SAAS,UAAU,EAAE,CAAA;CACvC;AAED,UAAU,cAAc;IACtB,kBAAkB,EAAE,GAAG,CAAA;IACvB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,iBAAiB,EAAE,WAAW,EAAE,CAAA;IAChC,IAAI,EAAE,mBAAmB,CAAC,OAAO,KAAK,EAAE,mBAAmB,CAAC,CAAA;CAC7D;AAED,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CD,CAAA;AAEV,QAAA,MAAM,sBAAsB,SAAS,CAAA;AACrC,QAAA,MAAM,yBAAyB,SAAS,CAAA;AAExC,QAAA,MAAM,mCAAmC,EAAE,OACG,CAAA;AAC9C,QAAA,MAAM,4CAA4C,EAAE,GAAkB,CAAA;AACtE,QAAA,MAAM,2EAA2E,EAAE,GACrE,CAAA;AAyBd,UAAU,wBAAwB;IAChC,IAAI,EAAE,sBAAsB,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAED,iBAAS,aAAa,CACpB,OAAO,EAAE,wBAAwB,EACjC,kBAAkB,EAAE,GAAG,GACtB,GAAG,CA4JL;AAED,iBAAe,iBAAiB,CAC9B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,EAAE,cAAc,GAAG,SAAS,EACpC,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,cAAc,CAAC,CA+CzB;AAED,iBAAe,gBAAgB,CAC7B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,GAAG,SAAS,EACpC,OAAO,EAAE,OAAO,EAChB,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED,iBAAe,iBAAiB,CAC9B,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,GAAG,CAAC,CAyBd;AAwED,iBAAe,oBAAoB,CACjC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,sBAAsB,EAAE,GAAG,EAC3B,iBAAiB,EAAE;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,GAAG,CAAA;CACnB,EAAE,EACH,oBAAoB,EAAE,MAAM,EAC5B,eAAe,CAAC,EAAE,OAAO;;;GA8B1B;AAED,iBAAS,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CA6ErD;AAED,iBAAS,eAAe,CAAC,OAAO,EAAE,OAAO,iBAyBxC;AA4KD,iBAAS,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAezE;AAQD;;;;;;;GAOG;AACH,iBAAS,kBAAkB,CACzB,OAAO,EAAE,OAAO,EAChB,eAAe,CAAC,EAAE,OAAO,EACzB,UAAU,GAAE,MAAU,GACrB,GAAG,CAyBL;AASD,OAAO,EACL,8BAA8B,EAC9B,kCAAkC,EAClC,mCAAmC,EACnC,4CAA4C,EAC5C,2EAA2E,EAC3E,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,CAAA;AACD,YAAY,EACV,YAAY,EACZ,WAAW,EACX,wBAAwB,EACxB,WAAW,EACX,oBAAoB,EACpB,cAAc,GACf,CAAA"}
|