@charterlabs/rhinestone-sdk 0.3.7 → 0.3.9
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/json-rpc/index.d.ts.map +1 -1
- package/dist/src/accounts/json-rpc/index.js +1 -0
- package/dist/src/accounts/json-rpc/index.test.js +5 -3
- 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 +1 -5
- package/dist/src/accounts/json-rpc/providers.test.js +2 -2
- package/dist/src/accounts/startale.d.ts +3 -2
- package/dist/src/accounts/startale.d.ts.map +1 -1
- package/dist/src/accounts/startale.js +108 -19
- package/dist/src/accounts/startale.test.js +115 -18
- package/dist/src/execution/index.d.ts +2 -2
- package/dist/src/execution/index.d.ts.map +1 -1
- package/dist/src/execution/index.js +8 -9
- package/dist/src/execution/utils.d.ts +15 -2
- package/dist/src/execution/utils.d.ts.map +1 -1
- package/dist/src/execution/utils.js +151 -15
- package/dist/src/execution/utils.test.js +101 -0
- package/dist/src/index.d.ts +3 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -7
- package/dist/src/modules/index.d.ts +2 -2
- package/dist/src/modules/index.d.ts.map +1 -1
- package/dist/src/modules/index.js +5 -1
- package/dist/src/modules/validators/index.d.ts +3 -3
- package/dist/src/modules/validators/index.d.ts.map +1 -1
- package/dist/src/modules/validators/index.js +6 -1
- package/dist/src/modules/validators/smart-sessions.d.ts +11 -2
- package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
- package/dist/src/modules/validators/smart-sessions.js +70 -7
- 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/client.d.ts +2 -2
- package/dist/src/orchestrator/client.d.ts.map +1 -1
- package/dist/src/orchestrator/client.js +9 -9
- 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 +1 -1
- package/dist/src/orchestrator/index.d.ts +1 -1
- package/dist/src/orchestrator/index.d.ts.map +1 -1
- package/dist/src/orchestrator/index.js +2 -2
- package/dist/src/orchestrator/types.d.ts +26 -3
- package/dist/src/orchestrator/types.d.ts.map +1 -1
- package/dist/src/types.d.ts +18 -7
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -20,10 +20,12 @@ exports.getTokenRequests = getTokenRequests;
|
|
|
20
20
|
exports.resolveCallInputs = resolveCallInputs;
|
|
21
21
|
exports.getIntentAccount = getIntentAccount;
|
|
22
22
|
exports.getTargetExecutionSignature = getTargetExecutionSignature;
|
|
23
|
+
exports.hashErc7739TypedDataForSolady = hashErc7739TypedDataForSolady;
|
|
23
24
|
const viem_1 = require("viem");
|
|
24
25
|
const account_abstraction_1 = require("viem/account-abstraction");
|
|
25
26
|
const erc7739_1 = require("viem/experimental/erc7739");
|
|
26
27
|
const accounts_1 = require("../accounts");
|
|
28
|
+
const startale_1 = require("../accounts/startale");
|
|
27
29
|
const utils_1 = require("../accounts/utils");
|
|
28
30
|
const modules_1 = require("../modules");
|
|
29
31
|
const validators_1 = require("../modules/validators");
|
|
@@ -103,12 +105,15 @@ async function getTargetExecutionSignature(config, intentOp, targetChain, signer
|
|
|
103
105
|
if (signers?.type !== 'experimental_session') {
|
|
104
106
|
return undefined;
|
|
105
107
|
}
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
108
|
+
const destination = getTargetExecutionMessage(config, intentOp);
|
|
109
|
+
const validator = getValidator(config, signers);
|
|
110
|
+
if (!validator) {
|
|
111
|
+
throw new Error('Validator not available');
|
|
112
|
+
}
|
|
113
|
+
const ownerValidator = (0, validators_1.getOwnerValidator)(config);
|
|
114
|
+
const isRoot = validator.address === ownerValidator.address;
|
|
115
|
+
const signature = await getDestinationSignature(config, signers, validator, isRoot, targetChain, destination, [], true);
|
|
116
|
+
return signature;
|
|
112
117
|
}
|
|
113
118
|
async function signUserOperation(config, preparedUserOperation) {
|
|
114
119
|
const chain = preparedUserOperation.transaction.chain;
|
|
@@ -349,7 +354,12 @@ async function prepareTransactionAsIntent(config, sourceChains, targetChain, cal
|
|
|
349
354
|
}
|
|
350
355
|
return getIntentAccount(recipient, eip7702InitSignature, account);
|
|
351
356
|
}
|
|
352
|
-
const intentAccount =
|
|
357
|
+
const intentAccount = {
|
|
358
|
+
...getIntentAccount(config, eip7702InitSignature, account),
|
|
359
|
+
...(signers?.type === 'experimental_session' && {
|
|
360
|
+
mockSignature: (0, validators_1.buildMockSignature)(signers.session, config.useDevContracts, sourceChains?.length),
|
|
361
|
+
}),
|
|
362
|
+
};
|
|
353
363
|
const recipient = getRecipient(recipientInput);
|
|
354
364
|
const signatureMode = signers?.type === 'experimental_session'
|
|
355
365
|
? types_1.SIG_MODE_EMISSARY_EXECUTION_ERC1271
|
|
@@ -386,7 +396,7 @@ async function prepareTransactionAsIntent(config, sourceChains, targetChain, cal
|
|
|
386
396
|
auxiliaryFunds,
|
|
387
397
|
},
|
|
388
398
|
};
|
|
389
|
-
const orchestrator = (0, orchestrator_1.getOrchestrator)(config.apiKey, config.endpointUrl, config.
|
|
399
|
+
const orchestrator = (0, orchestrator_1.getOrchestrator)(config.apiKey, config.endpointUrl, config.headers);
|
|
390
400
|
const intentRoute = await orchestrator.getIntentRoute(metaIntent);
|
|
391
401
|
return intentRoute;
|
|
392
402
|
}
|
|
@@ -445,19 +455,31 @@ async function signIntent(config, intentOp, targetChain, signers, targetExecutio
|
|
|
445
455
|
};
|
|
446
456
|
}
|
|
447
457
|
async function getDestinationSignature(config, signers, validator, isRoot, targetChain, destination, originSignatures, targetExecution) {
|
|
448
|
-
//
|
|
458
|
+
// Smart sessions require a separate destination signature because the
|
|
459
|
+
// session enable data differs per chain
|
|
449
460
|
if (signers?.type === 'experimental_session') {
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
461
|
+
return await signDestinationSeparately(config, signers, validator, isRoot, targetChain, destination, targetExecution);
|
|
462
|
+
}
|
|
463
|
+
// ERC-7739 with K1 validator requires a separate destination signature because
|
|
464
|
+
// the account's eip712Domain() returns the target chain's chainId, which differs
|
|
465
|
+
// from the origin chain used for the last origin signature
|
|
466
|
+
const isK1Validator = validator.address.toLowerCase() ===
|
|
467
|
+
startale_1.K1_DEFAULT_VALIDATOR_ADDRESS.toLowerCase();
|
|
468
|
+
if (isK1Validator && (0, core_1.supportsEip712)(validator)) {
|
|
469
|
+
return await signDestinationSeparately(config, signers, validator, isRoot, targetChain, destination, targetExecution);
|
|
455
470
|
}
|
|
456
471
|
const lastOriginSignature = originSignatures.at(-1);
|
|
457
472
|
return typeof lastOriginSignature === 'object'
|
|
458
473
|
? lastOriginSignature.preClaimSig
|
|
459
474
|
: (lastOriginSignature ?? '0x');
|
|
460
475
|
}
|
|
476
|
+
async function signDestinationSeparately(config, signers, validator, isRoot, targetChain, destination, targetExecution) {
|
|
477
|
+
const destinationChain = (0, registry_1.getChainById)(targetChain.id);
|
|
478
|
+
const destinationSignatures = await signIntentTypedData(config, signers, validator, isRoot, destination, destinationChain, targetExecution);
|
|
479
|
+
return typeof destinationSignatures === 'object'
|
|
480
|
+
? destinationSignatures.preClaimSig
|
|
481
|
+
: (destinationSignatures ?? '0x');
|
|
482
|
+
}
|
|
461
483
|
function getIntentMessages(config, intentOp) {
|
|
462
484
|
const address = (0, accounts_1.getAddress)(config);
|
|
463
485
|
const intentExecutor = (0, modules_1.getIntentExecutor)(config);
|
|
@@ -485,8 +507,25 @@ function getIntentMessages(config, intentOp) {
|
|
|
485
507
|
destination,
|
|
486
508
|
};
|
|
487
509
|
}
|
|
510
|
+
function getTargetExecutionMessage(config, intentOp) {
|
|
511
|
+
const address = (0, accounts_1.getAddress)(config);
|
|
512
|
+
const intentExecutor = (0, modules_1.getIntentExecutor)(config);
|
|
513
|
+
const lastElement = intentOp.elements.at(-1);
|
|
514
|
+
const typedData = (0, singleChainOps_1.getTypedData)(address, intentExecutor.address, lastElement, BigInt(intentOp.targetExecutionNonce));
|
|
515
|
+
typedData.message.gasRefund = typedData.message.gasRefund ?? {
|
|
516
|
+
token: '0x0000000000000000000000000000000000000000',
|
|
517
|
+
exchangeRate: 0n,
|
|
518
|
+
overhead: 0n,
|
|
519
|
+
};
|
|
520
|
+
return typedData;
|
|
521
|
+
}
|
|
488
522
|
async function signIntentTypedData(config, signers, validator, isRoot, parameters, chain, targetExecution) {
|
|
489
523
|
if ((0, core_1.supportsEip712)(validator)) {
|
|
524
|
+
const isK1Validator = validator.address.toLowerCase() ===
|
|
525
|
+
startale_1.K1_DEFAULT_VALIDATOR_ADDRESS.toLowerCase();
|
|
526
|
+
if (isK1Validator) {
|
|
527
|
+
return await signErc7739IntentTypedData(config, signers, validator, isRoot, parameters, chain);
|
|
528
|
+
}
|
|
490
529
|
return await (0, accounts_1.getTypedDataPackedSignature)(config, signers, chain, {
|
|
491
530
|
address: validator.address,
|
|
492
531
|
isRoot,
|
|
@@ -603,7 +642,7 @@ function createSignedIntentOp(intentOp, originSignatures, destinationSignature,
|
|
|
603
642
|
}
|
|
604
643
|
async function submitIntentInternal(config, sourceChains, targetChain, intentOp, originSignatures, destinationSignature, targetExecutionSignature, authorizations, dryRun) {
|
|
605
644
|
const signedIntentOp = createSignedIntentOp(intentOp, originSignatures, destinationSignature, targetExecutionSignature, authorizations);
|
|
606
|
-
const orchestrator = (0, orchestrator_1.getOrchestrator)(config.apiKey, config.endpointUrl, config.
|
|
645
|
+
const orchestrator = (0, orchestrator_1.getOrchestrator)(config.apiKey, config.endpointUrl, config.headers);
|
|
607
646
|
const intentResults = await orchestrator.submitIntent(signedIntentOp, dryRun);
|
|
608
647
|
return {
|
|
609
648
|
type: 'intent',
|
|
@@ -768,3 +807,100 @@ function validateTokenSymbols(chain, tokenAddressOrSymbols) {
|
|
|
768
807
|
}
|
|
769
808
|
}
|
|
770
809
|
}
|
|
810
|
+
// Signs intent typed data using ERC-7739 nested EIP-712 for Startale accounts.
|
|
811
|
+
// Uses a Solady-compatible TypedDataSign hash and wraps the signature with
|
|
812
|
+
// the app domain separator and contents hash for on-chain verification.
|
|
813
|
+
async function signErc7739IntentTypedData(config, signers, validator, isRoot, parameters, chain) {
|
|
814
|
+
const verifierDomain = (0, accounts_1.getEip712Domain)(config, chain);
|
|
815
|
+
const hash = hashErc7739TypedDataForSolady({
|
|
816
|
+
domain: parameters.domain,
|
|
817
|
+
types: parameters.types,
|
|
818
|
+
primaryType: parameters.primaryType,
|
|
819
|
+
message: parameters.message,
|
|
820
|
+
verifierDomain,
|
|
821
|
+
});
|
|
822
|
+
return await (0, accounts_1.getEip1271Signature)(config, signers, chain, {
|
|
823
|
+
address: validator.address,
|
|
824
|
+
isRoot,
|
|
825
|
+
}, hash, (signature) => (0, erc7739_1.wrapTypedDataSignature)({
|
|
826
|
+
domain: parameters.domain,
|
|
827
|
+
primaryType: parameters.primaryType,
|
|
828
|
+
types: parameters.types,
|
|
829
|
+
message: parameters.message,
|
|
830
|
+
signature,
|
|
831
|
+
}));
|
|
832
|
+
}
|
|
833
|
+
// Computes an ERC-7739 TypedDataSign hash compatible with Solady's ERC1271
|
|
834
|
+
// on-chain verification. Solady constructs the TypedDataSign type string by
|
|
835
|
+
// appending the contentsType directly after the TypedDataSign definition,
|
|
836
|
+
// which differs from viem's standard EIP-712 encodeType that re-sorts all
|
|
837
|
+
// referenced types alphabetically.
|
|
838
|
+
function hashErc7739TypedDataForSolady({ domain, types, primaryType, message, verifierDomain, }) {
|
|
839
|
+
// Standard EIP-712 encodeType for the original content type
|
|
840
|
+
function encodeTypeString(primary, allTypes) {
|
|
841
|
+
const deps = new Set();
|
|
842
|
+
function findDeps(t) {
|
|
843
|
+
const match = t.match(/^\w*/);
|
|
844
|
+
const typeName = match?.[0];
|
|
845
|
+
if (!typeName || deps.has(typeName) || !allTypes[typeName])
|
|
846
|
+
return;
|
|
847
|
+
deps.add(typeName);
|
|
848
|
+
for (const field of allTypes[typeName])
|
|
849
|
+
findDeps(field.type);
|
|
850
|
+
}
|
|
851
|
+
findDeps(primary);
|
|
852
|
+
deps.delete(primary);
|
|
853
|
+
const sorted = [primary, ...Array.from(deps).sort()];
|
|
854
|
+
return sorted
|
|
855
|
+
.map((t) => `${t}(${allTypes[t].map((f) => `${f.type} ${f.name}`).join(',')})`)
|
|
856
|
+
.join('');
|
|
857
|
+
}
|
|
858
|
+
const contentsType = encodeTypeString(primaryType, types);
|
|
859
|
+
const contentsName = primaryType;
|
|
860
|
+
// Construct TypedDataSign type string matching Solady's on-chain encoding:
|
|
861
|
+
// TypedDataSign(<contentsName> contents,...salt) + contentsType
|
|
862
|
+
const typedDataSignTypeString = `TypedDataSign(${contentsName} contents,string name,string version,uint256 chainId,address verifyingContract,bytes32 salt)${contentsType}`;
|
|
863
|
+
const typedDataSignTypeHash = (0, viem_1.keccak256)((0, viem_1.toHex)(typedDataSignTypeString));
|
|
864
|
+
// Hash the original content struct
|
|
865
|
+
const contentsHash = (0, viem_1.hashStruct)({
|
|
866
|
+
data: message,
|
|
867
|
+
primaryType,
|
|
868
|
+
types: types,
|
|
869
|
+
});
|
|
870
|
+
// Compute the TypedDataSign struct hash
|
|
871
|
+
const structHash = (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([
|
|
872
|
+
{ type: 'bytes32' },
|
|
873
|
+
{ type: 'bytes32' },
|
|
874
|
+
{ type: 'bytes32' },
|
|
875
|
+
{ type: 'bytes32' },
|
|
876
|
+
{ type: 'uint256' },
|
|
877
|
+
{ type: 'address' },
|
|
878
|
+
{ type: 'bytes32' },
|
|
879
|
+
], [
|
|
880
|
+
typedDataSignTypeHash,
|
|
881
|
+
contentsHash,
|
|
882
|
+
(0, viem_1.keccak256)((0, viem_1.toHex)(verifierDomain.name)),
|
|
883
|
+
(0, viem_1.keccak256)((0, viem_1.toHex)(verifierDomain.version)),
|
|
884
|
+
BigInt(verifierDomain.chainId),
|
|
885
|
+
verifierDomain.verifyingContract,
|
|
886
|
+
verifierDomain.salt,
|
|
887
|
+
]));
|
|
888
|
+
// Compute the app domain separator
|
|
889
|
+
const domainTypes = [];
|
|
890
|
+
if (domain.name)
|
|
891
|
+
domainTypes.push({ name: 'name', type: 'string' });
|
|
892
|
+
if (domain.version)
|
|
893
|
+
domainTypes.push({ name: 'version', type: 'string' });
|
|
894
|
+
if (domain.chainId)
|
|
895
|
+
domainTypes.push({ name: 'chainId', type: 'uint256' });
|
|
896
|
+
if (domain.verifyingContract)
|
|
897
|
+
domainTypes.push({ name: 'verifyingContract', type: 'address' });
|
|
898
|
+
if (domain.salt)
|
|
899
|
+
domainTypes.push({ name: 'salt', type: 'bytes32' });
|
|
900
|
+
const appDomainSeparator = (0, viem_1.hashDomain)({
|
|
901
|
+
domain,
|
|
902
|
+
types: { EIP712Domain: domainTypes },
|
|
903
|
+
});
|
|
904
|
+
// Final hash: keccak256("\x19\x01" || appDomainSep || structHash)
|
|
905
|
+
return (0, viem_1.keccak256)((0, viem_1.concat)(['0x1901', appDomainSeparator, structHash]));
|
|
906
|
+
}
|
|
@@ -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();
|
package/dist/src/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { deployAccountsForOwners } from './actions/deployment';
|
|
|
6
6
|
import { type TransactionResult, type TransactionStatus, type UserOperationResult } from './execution';
|
|
7
7
|
import { type BatchPermit2Result, checkERC20AllowanceDirect, getPermit2Address, type MultiChainPermit2Config, type MultiChainPermit2Result, signPermit2Batch, signPermit2Sequential } from './execution/permit2';
|
|
8
8
|
import { type IntentRoute, type PreparedTransactionData, type PreparedUserOperationData, type SignedTransactionData, type SignedUserOperationData } from './execution/utils';
|
|
9
|
+
import { MULTI_FACTOR_VALIDATOR_ADDRESS, OWNABLE_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS } from './modules';
|
|
9
10
|
import { type SessionDetails } from './modules/validators/smart-sessions';
|
|
10
11
|
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
12
|
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';
|
|
@@ -67,7 +68,7 @@ declare class RhinestoneSDK {
|
|
|
67
68
|
private bundler?;
|
|
68
69
|
private paymaster?;
|
|
69
70
|
private useDevContracts?;
|
|
70
|
-
private
|
|
71
|
+
private headers?;
|
|
71
72
|
constructor(options: RhinestoneSDKConfig);
|
|
72
73
|
createAccount(config: RhinestoneAccountConfig): Promise<RhinestoneAccount>;
|
|
73
74
|
getIntentStatus(intentId: bigint): Promise<TransactionStatus & {
|
|
@@ -75,7 +76,7 @@ declare class RhinestoneSDK {
|
|
|
75
76
|
}>;
|
|
76
77
|
splitIntents(input: SplitIntentsInput): Promise<SplitIntentsResult>;
|
|
77
78
|
}
|
|
78
|
-
export { RhinestoneSDK, createRhinestoneAccount, deployAccountsForOwners, walletClientToAccount, wrapParaAccount, getSupportedTokens, getTokenAddress, getTokenDecimals, getAllSupportedChainsAndTokens, deployStandaloneWithEoaInternal as deployStandaloneWithEoa, checkERC20AllowanceDirect, getPermit2Address, signPermit2Batch, signPermit2Sequential, };
|
|
79
|
+
export { RhinestoneSDK, createRhinestoneAccount, deployAccountsForOwners, walletClientToAccount, wrapParaAccount, OWNABLE_VALIDATOR_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS, MULTI_FACTOR_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, getSupportedTokens, getTokenAddress, getTokenDecimals, getAllSupportedChainsAndTokens, deployStandaloneWithEoaInternal as deployStandaloneWithEoa, checkERC20AllowanceDirect, getPermit2Address, signPermit2Batch, signPermit2Sequential, };
|
|
79
80
|
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, };
|
|
80
81
|
export { generateCredentialId, getCredentialIds, hasCredentialById, hasCredential, addCredential, removeCredential, setThreshold, getCredentialInfo, getThreshold, getCredentials, WEBAUTHN_VALIDATOR_ABI, } from './modules/validators/webauthn-contract';
|
|
81
82
|
export { getOrchestrator } from './orchestrator';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,KAAK,EACL,uBAAuB,EACvB,GAAG,EACH,eAAe,EACf,uBAAuB,EACvB,SAAS,EACT,mBAAmB,EACnB,OAAO,EACR,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AACpE,OAAO,EAWL,uBAAuB,IAAI,+BAA+B,EAC3D,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAEzB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,KAAK,kBAAkB,EACvB,yBAAyB,EAEzB,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAG9B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAQ7B,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getOrchestrator = exports.WEBAUTHN_VALIDATOR_ABI = exports.getCredentials = exports.getThreshold = exports.getCredentialInfo = exports.setThreshold = exports.removeCredential = exports.addCredential = exports.hasCredential = exports.hasCredentialById = exports.getCredentialIds = exports.generateCredentialId = exports.signPermit2Sequential = exports.signPermit2Batch = exports.getPermit2Address = exports.checkERC20AllowanceDirect = exports.deployStandaloneWithEoa = exports.getAllSupportedChainsAndTokens = exports.getTokenDecimals = exports.getTokenAddress = exports.getSupportedTokens = exports.wrapParaAccount = exports.walletClientToAccount = exports.deployAccountsForOwners = exports.RhinestoneSDK = void 0;
|
|
3
|
+
exports.getOrchestrator = exports.WEBAUTHN_VALIDATOR_ABI = exports.getCredentials = exports.getThreshold = exports.getCredentialInfo = exports.setThreshold = exports.removeCredential = exports.addCredential = exports.hasCredential = exports.hasCredentialById = exports.getCredentialIds = exports.generateCredentialId = exports.signPermit2Sequential = exports.signPermit2Batch = exports.getPermit2Address = exports.checkERC20AllowanceDirect = exports.deployStandaloneWithEoa = exports.getAllSupportedChainsAndTokens = exports.getTokenDecimals = exports.getTokenAddress = exports.getSupportedTokens = exports.SMART_SESSION_EMISSARY_ADDRESS = exports.MULTI_FACTOR_VALIDATOR_ADDRESS = exports.WEBAUTHN_VALIDATOR_ADDRESS = exports.OWNABLE_VALIDATOR_ADDRESS = exports.wrapParaAccount = exports.walletClientToAccount = exports.deployAccountsForOwners = exports.RhinestoneSDK = void 0;
|
|
4
4
|
exports.createRhinestoneAccount = createRhinestoneAccount;
|
|
5
5
|
const accounts_1 = require("./accounts");
|
|
6
6
|
Object.defineProperty(exports, "deployStandaloneWithEoa", { enumerable: true, get: function () { return accounts_1.deployStandaloneWithEoa; } });
|
|
@@ -17,6 +17,10 @@ Object.defineProperty(exports, "signPermit2Batch", { enumerable: true, get: func
|
|
|
17
17
|
Object.defineProperty(exports, "signPermit2Sequential", { enumerable: true, get: function () { return permit2_1.signPermit2Sequential; } });
|
|
18
18
|
const utils_1 = require("./execution/utils");
|
|
19
19
|
const modules_1 = require("./modules");
|
|
20
|
+
Object.defineProperty(exports, "MULTI_FACTOR_VALIDATOR_ADDRESS", { enumerable: true, get: function () { return modules_1.MULTI_FACTOR_VALIDATOR_ADDRESS; } });
|
|
21
|
+
Object.defineProperty(exports, "OWNABLE_VALIDATOR_ADDRESS", { enumerable: true, get: function () { return modules_1.OWNABLE_VALIDATOR_ADDRESS; } });
|
|
22
|
+
Object.defineProperty(exports, "SMART_SESSION_EMISSARY_ADDRESS", { enumerable: true, get: function () { return modules_1.SMART_SESSION_EMISSARY_ADDRESS; } });
|
|
23
|
+
Object.defineProperty(exports, "WEBAUTHN_VALIDATOR_ADDRESS", { enumerable: true, get: function () { return modules_1.WEBAUTHN_VALIDATOR_ADDRESS; } });
|
|
20
24
|
const smart_sessions_1 = require("./modules/validators/smart-sessions");
|
|
21
25
|
const orchestrator_1 = require("./orchestrator");
|
|
22
26
|
Object.defineProperty(exports, "getAllSupportedChainsAndTokens", { enumerable: true, get: function () { return orchestrator_1.getAllSupportedChainsAndTokens; } });
|
|
@@ -240,7 +244,7 @@ async function createRhinestoneAccount(config) {
|
|
|
240
244
|
}
|
|
241
245
|
function experimental_getSessionDetails(sessions) {
|
|
242
246
|
const account = getAddress();
|
|
243
|
-
return (0, modules_1.getSessionDetails)(account, sessions, config.useDevContracts);
|
|
247
|
+
return (0, modules_1.getSessionDetails)(account, sessions, config.provider, config.useDevContracts);
|
|
244
248
|
}
|
|
245
249
|
function experimental_isSessionEnabled(session) {
|
|
246
250
|
const account = getAddress();
|
|
@@ -300,7 +304,7 @@ class RhinestoneSDK {
|
|
|
300
304
|
bundler;
|
|
301
305
|
paymaster;
|
|
302
306
|
useDevContracts;
|
|
303
|
-
|
|
307
|
+
headers;
|
|
304
308
|
constructor(options) {
|
|
305
309
|
this.apiKey = options.apiKey;
|
|
306
310
|
this.endpointUrl = options.endpointUrl;
|
|
@@ -308,7 +312,7 @@ class RhinestoneSDK {
|
|
|
308
312
|
this.bundler = options.bundler;
|
|
309
313
|
this.paymaster = options.paymaster;
|
|
310
314
|
this.useDevContracts = options.useDevContracts;
|
|
311
|
-
this.
|
|
315
|
+
this.headers = options.headers;
|
|
312
316
|
}
|
|
313
317
|
createAccount(config) {
|
|
314
318
|
const rhinestoneConfig = {
|
|
@@ -319,15 +323,15 @@ class RhinestoneSDK {
|
|
|
319
323
|
bundler: this.bundler,
|
|
320
324
|
paymaster: this.paymaster,
|
|
321
325
|
useDevContracts: this.useDevContracts,
|
|
322
|
-
|
|
326
|
+
headers: this.headers,
|
|
323
327
|
};
|
|
324
328
|
return createRhinestoneAccount(rhinestoneConfig);
|
|
325
329
|
}
|
|
326
330
|
getIntentStatus(intentId) {
|
|
327
|
-
return (0, execution_1.getIntentStatus)(this.apiKey, this.endpointUrl, intentId);
|
|
331
|
+
return (0, execution_1.getIntentStatus)(this.apiKey, this.endpointUrl, intentId, this.headers);
|
|
328
332
|
}
|
|
329
333
|
splitIntents(input) {
|
|
330
|
-
return (0, execution_1.splitIntents)(this.apiKey, this.endpointUrl, input);
|
|
334
|
+
return (0, execution_1.splitIntents)(this.apiKey, this.endpointUrl, input, this.headers);
|
|
331
335
|
}
|
|
332
336
|
}
|
|
333
337
|
exports.RhinestoneSDK = RhinestoneSDK;
|
|
@@ -2,10 +2,10 @@ import { type Chain } from 'viem';
|
|
|
2
2
|
import type { RhinestoneConfig } from '../types';
|
|
3
3
|
import { type ModeleSetup, type Module } from './common';
|
|
4
4
|
import { getExecutors, getOwners, getValidators } from './read';
|
|
5
|
-
import { getOwnerValidator } from './validators';
|
|
5
|
+
import { getOwnerValidator, MULTI_FACTOR_VALIDATOR_ADDRESS, OWNABLE_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS } from './validators';
|
|
6
6
|
import { getSessionDetails, signEnableSession } from './validators/smart-sessions';
|
|
7
7
|
declare function getSetup(config: RhinestoneConfig): ModeleSetup;
|
|
8
8
|
declare function getIntentExecutor(config: RhinestoneConfig): Module;
|
|
9
9
|
declare function isRip7212SupportedNetwork(chain: Chain): boolean;
|
|
10
|
-
export { getSetup, getOwnerValidator, getOwners, getExecutors, getIntentExecutor, getValidators, isRip7212SupportedNetwork, getSessionDetails, signEnableSession, };
|
|
10
|
+
export { OWNABLE_VALIDATOR_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS, MULTI_FACTOR_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, getSetup, getOwnerValidator, getOwners, getExecutors, getIntentExecutor, getValidators, isRip7212SupportedNetwork, getSessionDetails, signEnableSession, };
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,KAAK,EAAuB,MAAM,MAAM,CAAA;AAcpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAKhD,OAAO,EAQL,KAAK,WAAW,EAChB,KAAK,MAAM,EACZ,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,KAAK,EAAuB,MAAM,MAAM,CAAA;AAcpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAKhD,OAAO,EAQL,KAAK,WAAW,EAChB,KAAK,MAAM,EACZ,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAC/D,OAAO,EACL,iBAAiB,EAEjB,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAC9B,0BAA0B,EAC3B,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,6BAA6B,CAAA;AAKpC,iBAAS,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,WAAW,CA0EvD;AAED,iBAAS,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAY3D;AAED,iBAAS,yBAAyB,CAAC,KAAK,EAAE,KAAK,WAc9C;AAED,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,yBAAyB,EACzB,iBAAiB,EACjB,iBAAiB,GAClB,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.signEnableSession = exports.getSessionDetails = exports.getValidators = exports.getExecutors = exports.getOwners = exports.getOwnerValidator = void 0;
|
|
3
|
+
exports.signEnableSession = exports.getSessionDetails = exports.getValidators = exports.getExecutors = exports.getOwners = exports.getOwnerValidator = exports.SMART_SESSION_EMISSARY_ADDRESS = exports.MULTI_FACTOR_VALIDATOR_ADDRESS = exports.WEBAUTHN_VALIDATOR_ADDRESS = exports.OWNABLE_VALIDATOR_ADDRESS = void 0;
|
|
4
4
|
exports.getSetup = getSetup;
|
|
5
5
|
exports.getIntentExecutor = getIntentExecutor;
|
|
6
6
|
exports.isRip7212SupportedNetwork = isRip7212SupportedNetwork;
|
|
@@ -14,6 +14,10 @@ Object.defineProperty(exports, "getOwners", { enumerable: true, get: function ()
|
|
|
14
14
|
Object.defineProperty(exports, "getValidators", { enumerable: true, get: function () { return read_1.getValidators; } });
|
|
15
15
|
const validators_1 = require("./validators");
|
|
16
16
|
Object.defineProperty(exports, "getOwnerValidator", { enumerable: true, get: function () { return validators_1.getOwnerValidator; } });
|
|
17
|
+
Object.defineProperty(exports, "MULTI_FACTOR_VALIDATOR_ADDRESS", { enumerable: true, get: function () { return validators_1.MULTI_FACTOR_VALIDATOR_ADDRESS; } });
|
|
18
|
+
Object.defineProperty(exports, "OWNABLE_VALIDATOR_ADDRESS", { enumerable: true, get: function () { return validators_1.OWNABLE_VALIDATOR_ADDRESS; } });
|
|
19
|
+
Object.defineProperty(exports, "SMART_SESSION_EMISSARY_ADDRESS", { enumerable: true, get: function () { return validators_1.SMART_SESSION_EMISSARY_ADDRESS; } });
|
|
20
|
+
Object.defineProperty(exports, "WEBAUTHN_VALIDATOR_ADDRESS", { enumerable: true, get: function () { return validators_1.WEBAUTHN_VALIDATOR_ADDRESS; } });
|
|
17
21
|
const core_1 = require("./validators/core");
|
|
18
22
|
const smart_sessions_1 = require("./validators/smart-sessions");
|
|
19
23
|
Object.defineProperty(exports, "getSessionDetails", { enumerable: true, get: function () { return smart_sessions_1.getSessionDetails; } });
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getMockSignature, getOwnerValidator } from './core';
|
|
2
|
-
import { getEnableSessionCall, getPermissionId, getSmartSessionValidator } from './smart-sessions';
|
|
3
|
-
export { getOwnerValidator, getSmartSessionValidator, getEnableSessionCall, getPermissionId, getMockSignature, };
|
|
1
|
+
import { getMockSignature, getOwnerValidator, MULTI_FACTOR_VALIDATOR_ADDRESS, OWNABLE_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS } from './core';
|
|
2
|
+
import { buildMockSignature, getEnableSessionCall, getPermissionId, getSmartSessionValidator } 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, };
|
|
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,
|
|
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,EACzB,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,GACnB,CAAA"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getMockSignature = exports.getPermissionId = exports.getEnableSessionCall = exports.getSmartSessionValidator = exports.getOwnerValidator = void 0;
|
|
3
|
+
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; } });
|
|
7
|
+
Object.defineProperty(exports, "MULTI_FACTOR_VALIDATOR_ADDRESS", { enumerable: true, get: function () { return core_1.MULTI_FACTOR_VALIDATOR_ADDRESS; } });
|
|
8
|
+
Object.defineProperty(exports, "OWNABLE_VALIDATOR_ADDRESS", { enumerable: true, get: function () { return core_1.OWNABLE_VALIDATOR_ADDRESS; } });
|
|
9
|
+
Object.defineProperty(exports, "SMART_SESSION_EMISSARY_ADDRESS", { enumerable: true, get: function () { return core_1.SMART_SESSION_EMISSARY_ADDRESS; } });
|
|
10
|
+
Object.defineProperty(exports, "WEBAUTHN_VALIDATOR_ADDRESS", { enumerable: true, get: function () { return core_1.WEBAUTHN_VALIDATOR_ADDRESS; } });
|
|
7
11
|
const smart_sessions_1 = require("./smart-sessions");
|
|
12
|
+
Object.defineProperty(exports, "buildMockSignature", { enumerable: true, get: function () { return smart_sessions_1.buildMockSignature; } });
|
|
8
13
|
Object.defineProperty(exports, "getEnableSessionCall", { enumerable: true, get: function () { return smart_sessions_1.getEnableSessionCall; } });
|
|
9
14
|
Object.defineProperty(exports, "getPermissionId", { enumerable: true, get: function () { return smart_sessions_1.getPermissionId; } });
|
|
10
15
|
Object.defineProperty(exports, "getSmartSessionValidator", { enumerable: true, get: function () { return smart_sessions_1.getSmartSessionValidator; } });
|
|
@@ -167,7 +167,7 @@ declare const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMA
|
|
|
167
167
|
declare function packSignature(signers: SignerSet & {
|
|
168
168
|
type: 'experimental_session';
|
|
169
169
|
}, validatorSignature: Hex): Hex;
|
|
170
|
-
declare function getSessionDetails(account: Address, sessions: Session[], useDevContracts?: boolean): Promise<SessionDetails>;
|
|
170
|
+
declare function getSessionDetails(account: Address, sessions: Session[], provider: ProviderConfig | undefined, useDevContracts?: boolean): Promise<SessionDetails>;
|
|
171
171
|
declare function isSessionEnabled(account: Address, provider: ProviderConfig | undefined, session: Session, useDevContracts?: boolean): Promise<boolean>;
|
|
172
172
|
declare function signEnableSession(config: RhinestoneAccountConfig, details: SessionDetails): Promise<Hex>;
|
|
173
173
|
declare function getEnableSessionCall(account: Address, session: Session, enableSessionSignature: Hex, hashesAndChainIds: {
|
|
@@ -180,6 +180,15 @@ declare function getEnableSessionCall(account: Address, session: Session, enable
|
|
|
180
180
|
declare function getSessionData(session: Session): SessionData;
|
|
181
181
|
declare function getPermissionId(session: Session): `0x${string}`;
|
|
182
182
|
declare function getSmartSessionValidator(config: RhinestoneConfig): Module | null;
|
|
183
|
-
|
|
183
|
+
/**
|
|
184
|
+
* Builds a mockSignature for SSX validation gas estimation.
|
|
185
|
+
* Format: emissaryAddress (20 bytes) + enable-mode sigData.
|
|
186
|
+
* Uses real session data (policies/actions from the user's session config) with dummy
|
|
187
|
+
* sigs and hashes — the mock emissary skips sig verification and only writes storage.
|
|
188
|
+
* The orchestrator slices off the first 20 bytes to identify the validator, then
|
|
189
|
+
* simulates verifyExecution with the mock emissary to estimate gas before the user signs.
|
|
190
|
+
*/
|
|
191
|
+
declare function buildMockSignature(session: Session, useDevContracts?: boolean, chainCount?: number): Hex;
|
|
192
|
+
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, };
|
|
184
193
|
export type { ChainSession, ChainDigest, SessionData, SmartSessionModeType, SessionDetails, };
|
|
185
194
|
//# 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":"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"}
|