@charterlabs/rhinestone-sdk 0.3.4 → 0.3.6
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.map +1 -1
- package/dist/src/accounts/index.js +7 -7
- package/dist/src/actions/ecdsa.test.js +2 -2
- package/dist/src/actions/passkeys.test.js +2 -2
- package/dist/src/actions/recovery.test.js +2 -2
- package/dist/src/execution/error.d.ts +8 -1
- package/dist/src/execution/error.d.ts.map +1 -1
- package/dist/src/execution/error.js +10 -1
- package/dist/src/execution/index.d.ts +2 -1
- package/dist/src/execution/index.d.ts.map +1 -1
- package/dist/src/execution/index.js +21 -15
- package/dist/src/execution/singleChainOps.d.ts +6 -42
- package/dist/src/execution/singleChainOps.d.ts.map +1 -1
- package/dist/src/execution/singleChainOps.js +3 -52
- package/dist/src/execution/utils.d.ts +4 -5
- package/dist/src/execution/utils.d.ts.map +1 -1
- package/dist/src/execution/utils.js +24 -40
- package/dist/src/execution/utils.test.d.ts +2 -0
- package/dist/src/execution/utils.test.d.ts.map +1 -0
- package/dist/src/execution/utils.test.js +49 -0
- package/dist/src/index.d.ts +5 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -6
- 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/read.d.ts +2 -1
- package/dist/src/modules/read.d.ts.map +1 -1
- package/dist/src/modules/read.js +52 -0
- package/dist/src/orchestrator/client.d.ts.map +1 -1
- package/dist/src/orchestrator/client.js +2 -0
- package/dist/src/orchestrator/consts.d.ts +2 -2
- package/dist/src/orchestrator/consts.d.ts.map +1 -1
- package/dist/src/orchestrator/consts.js +3 -3
- package/dist/src/orchestrator/index.d.ts +2 -2
- package/dist/src/orchestrator/index.d.ts.map +1 -1
- package/dist/src/orchestrator/types.d.ts +41 -1
- package/dist/src/orchestrator/types.d.ts.map +1 -1
- package/dist/src/types.d.ts +4 -3
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +17 -2
|
@@ -11,7 +11,6 @@ exports.submitTransaction = submitTransaction;
|
|
|
11
11
|
exports.prepareUserOperation = prepareUserOperation;
|
|
12
12
|
exports.signUserOperation = signUserOperation;
|
|
13
13
|
exports.submitUserOperation = submitUserOperation;
|
|
14
|
-
exports.getOrchestratorByChain = getOrchestratorByChain;
|
|
15
14
|
exports.signIntent = signIntent;
|
|
16
15
|
exports.prepareTransactionAsIntent = prepareTransactionAsIntent;
|
|
17
16
|
exports.submitIntentInternal = submitIntentInternal;
|
|
@@ -30,7 +29,6 @@ const modules_1 = require("../modules");
|
|
|
30
29
|
const validators_1 = require("../modules/validators");
|
|
31
30
|
const core_1 = require("../modules/validators/core");
|
|
32
31
|
const orchestrator_1 = require("../orchestrator");
|
|
33
|
-
const consts_1 = require("../orchestrator/consts");
|
|
34
32
|
const registry_1 = require("../orchestrator/registry");
|
|
35
33
|
const types_1 = require("../orchestrator/types");
|
|
36
34
|
const compact_1 = require("./compact");
|
|
@@ -38,13 +36,13 @@ const error_1 = require("./error");
|
|
|
38
36
|
const permit2_1 = require("./permit2");
|
|
39
37
|
const singleChainOps_1 = require("./singleChainOps");
|
|
40
38
|
async function prepareTransaction(config, transaction) {
|
|
41
|
-
const { sourceChains, targetChain, tokenRequests, signers, sponsored, eip7702InitSignature, settlementLayers, sourceAssets, feeAsset, lockFunds, account, recipient, } = getTransactionParams(transaction);
|
|
39
|
+
const { sourceChains, targetChain, tokenRequests, signers, sponsored, eip7702InitSignature, settlementLayers, sourceAssets, feeAsset, lockFunds, auxiliaryFunds, account, recipient, } = getTransactionParams(transaction);
|
|
42
40
|
const accountAddress = (0, accounts_1.getAddress)(config);
|
|
43
41
|
const isUserOpSigner = signers?.type === 'guardians';
|
|
44
42
|
if (isUserOpSigner) {
|
|
45
43
|
throw new error_1.SignerNotSupportedError();
|
|
46
44
|
}
|
|
47
|
-
const intentRoute = await prepareTransactionAsIntent(config, sourceChains, targetChain, await resolveCallInputs(transaction.calls, config, targetChain, accountAddress), transaction.gasLimit, tokenRequests, recipient, sponsored, eip7702InitSignature, settlementLayers, sourceAssets, feeAsset, lockFunds, account, signers);
|
|
45
|
+
const intentRoute = await prepareTransactionAsIntent(config, sourceChains, targetChain, await resolveCallInputs(transaction.calls, config, targetChain, accountAddress), transaction.gasLimit, tokenRequests, recipient, sponsored, eip7702InitSignature, settlementLayers, sourceAssets, feeAsset, lockFunds, auxiliaryFunds, account, signers);
|
|
48
46
|
return {
|
|
49
47
|
intentRoute,
|
|
50
48
|
transaction,
|
|
@@ -83,7 +81,7 @@ async function resolveCallInputs(inputs, config, chain, accountAddress) {
|
|
|
83
81
|
return resolved;
|
|
84
82
|
}
|
|
85
83
|
function getTransactionMessages(config, preparedTransaction) {
|
|
86
|
-
return getIntentMessages(config, preparedTransaction.intentRoute.intentOp
|
|
84
|
+
return getIntentMessages(config, preparedTransaction.intentRoute.intentOp);
|
|
87
85
|
}
|
|
88
86
|
async function signTransaction(config, preparedTransaction) {
|
|
89
87
|
const { signers } = getTransactionParams(preparedTransaction.transaction);
|
|
@@ -261,9 +259,10 @@ function getTransactionParams(transaction) {
|
|
|
261
259
|
const sourceAssets = transaction.sourceAssets;
|
|
262
260
|
const feeAsset = transaction.feeAsset;
|
|
263
261
|
const lockFunds = transaction.lockFunds;
|
|
262
|
+
const auxiliaryFunds = transaction.auxiliaryFunds;
|
|
264
263
|
const account = transaction.experimental_accountOverride;
|
|
265
264
|
const recipient = transaction.recipient;
|
|
266
|
-
const tokenRequests = getTokenRequests(
|
|
265
|
+
const tokenRequests = getTokenRequests(targetChain, initialTokenRequests);
|
|
267
266
|
return {
|
|
268
267
|
sourceChains,
|
|
269
268
|
targetChain,
|
|
@@ -276,29 +275,16 @@ function getTransactionParams(transaction) {
|
|
|
276
275
|
sourceAssets,
|
|
277
276
|
feeAsset,
|
|
278
277
|
lockFunds,
|
|
278
|
+
auxiliaryFunds,
|
|
279
279
|
account,
|
|
280
280
|
recipient,
|
|
281
281
|
};
|
|
282
282
|
}
|
|
283
|
-
function getTokenRequests(
|
|
283
|
+
function getTokenRequests(targetChain, initialTokenRequests) {
|
|
284
284
|
if (initialTokenRequests) {
|
|
285
285
|
validateTokenSymbols(targetChain, initialTokenRequests.map((tokenRequest) => tokenRequest.address));
|
|
286
286
|
}
|
|
287
|
-
|
|
288
|
-
const defaultTokenRequest = {
|
|
289
|
-
address: viem_1.zeroAddress,
|
|
290
|
-
amount: 1n,
|
|
291
|
-
};
|
|
292
|
-
const isSameChain = (settlementLayers?.length === 1 && settlementLayers[0] === 'SAME_CHAIN') ||
|
|
293
|
-
(sourceChains &&
|
|
294
|
-
sourceChains.length === 1 &&
|
|
295
|
-
sourceChains[0].id === targetChain.id);
|
|
296
|
-
const tokenRequests = !initialTokenRequests || initialTokenRequests.length === 0
|
|
297
|
-
? isSameChain
|
|
298
|
-
? []
|
|
299
|
-
: [defaultTokenRequest]
|
|
300
|
-
: initialTokenRequests;
|
|
301
|
-
return tokenRequests;
|
|
287
|
+
return initialTokenRequests ?? [];
|
|
302
288
|
}
|
|
303
289
|
async function prepareTransactionAsUserOp(config, chain, callInputs, signers, gasLimit) {
|
|
304
290
|
const publicClient = (0, viem_1.createPublicClient)({
|
|
@@ -345,7 +331,7 @@ function getIntentAccount(config, eip7702InitSignature, account) {
|
|
|
345
331
|
delegations,
|
|
346
332
|
};
|
|
347
333
|
}
|
|
348
|
-
async function prepareTransactionAsIntent(config, sourceChains, targetChain, callInputs, gasLimit, tokenRequests, recipientInput, sponsored, eip7702InitSignature, settlementLayers, sourceAssets, feeAsset, lockFunds, account, signers) {
|
|
334
|
+
async function prepareTransactionAsIntent(config, sourceChains, targetChain, callInputs, gasLimit, tokenRequests, recipientInput, sponsored, eip7702InitSignature, settlementLayers, sourceAssets, feeAsset, lockFunds, auxiliaryFunds, account, signers) {
|
|
349
335
|
const calls = parseCalls(callInputs, targetChain.id);
|
|
350
336
|
const accountAccessList = createAccountAccessList(sourceChains, sourceAssets);
|
|
351
337
|
function getRecipient(recipient) {
|
|
@@ -397,14 +383,15 @@ async function prepareTransactionAsIntent(config, sourceChains, targetChain, cal
|
|
|
397
383
|
: undefined,
|
|
398
384
|
settlementLayers,
|
|
399
385
|
signatureMode,
|
|
386
|
+
auxiliaryFunds,
|
|
400
387
|
},
|
|
401
388
|
};
|
|
402
|
-
const orchestrator =
|
|
389
|
+
const orchestrator = (0, orchestrator_1.getOrchestrator)(config.apiKey, config.endpointUrl);
|
|
403
390
|
const intentRoute = await orchestrator.getIntentRoute(metaIntent);
|
|
404
391
|
return intentRoute;
|
|
405
392
|
}
|
|
406
393
|
async function signIntent(config, intentOp, targetChain, signers, targetExecution) {
|
|
407
|
-
const { origin, destination } = getIntentMessages(config, intentOp
|
|
394
|
+
const { origin, destination } = getIntentMessages(config, intentOp);
|
|
408
395
|
if (config.account?.type === 'eoa') {
|
|
409
396
|
const eoa = config.eoa;
|
|
410
397
|
if (!eoa) {
|
|
@@ -471,13 +458,12 @@ async function getDestinationSignature(config, signers, validator, isRoot, targe
|
|
|
471
458
|
? lastOriginSignature.preClaimSig
|
|
472
459
|
: (lastOriginSignature ?? '0x');
|
|
473
460
|
}
|
|
474
|
-
function getIntentMessages(config, intentOp
|
|
461
|
+
function getIntentMessages(config, intentOp) {
|
|
475
462
|
const address = (0, accounts_1.getAddress)(config);
|
|
476
463
|
const intentExecutor = (0, modules_1.getIntentExecutor)(config);
|
|
477
464
|
const withPermit2 = intentOp.elements.some((element) => element.mandate.qualifier.settlementContext.fundingMethod === 'PERMIT2');
|
|
478
|
-
const withIntentExecutorOps =
|
|
479
|
-
|
|
480
|
-
'INTENT_EXECUTOR');
|
|
465
|
+
const withIntentExecutorOps = intentOp.elements.some((element) => element.mandate.qualifier.settlementContext.settlementLayer ===
|
|
466
|
+
'INTENT_EXECUTOR');
|
|
481
467
|
const origin = [];
|
|
482
468
|
for (const element of intentOp.elements) {
|
|
483
469
|
if (withIntentExecutorOps) {
|
|
@@ -597,15 +583,6 @@ async function submitUserOp(config, chain, userOp, signature) {
|
|
|
597
583
|
async function submitIntent(config, sourceChains, targetChain, intentOp, originSignatures, destinationSignature, targetExecutionSignature, authorizations, dryRun) {
|
|
598
584
|
return submitIntentInternal(config, sourceChains, targetChain, intentOp, originSignatures, destinationSignature, targetExecutionSignature, authorizations, dryRun);
|
|
599
585
|
}
|
|
600
|
-
function getOrchestratorByChain(chainId, apiKey, orchestratorUrl) {
|
|
601
|
-
if (orchestratorUrl) {
|
|
602
|
-
return (0, orchestrator_1.getOrchestrator)(apiKey, orchestratorUrl);
|
|
603
|
-
}
|
|
604
|
-
const defaultOrchestratorUrl = (0, registry_1.isTestnet)(chainId)
|
|
605
|
-
? consts_1.STAGING_ORCHESTRATOR_URL
|
|
606
|
-
: consts_1.PROD_ORCHESTRATOR_URL;
|
|
607
|
-
return (0, orchestrator_1.getOrchestrator)(apiKey, defaultOrchestratorUrl);
|
|
608
|
-
}
|
|
609
586
|
function createSignedIntentOp(intentOp, originSignatures, destinationSignature, targetExecutionSignature, authorizations) {
|
|
610
587
|
return {
|
|
611
588
|
...intentOp,
|
|
@@ -626,7 +603,7 @@ function createSignedIntentOp(intentOp, originSignatures, destinationSignature,
|
|
|
626
603
|
}
|
|
627
604
|
async function submitIntentInternal(config, sourceChains, targetChain, intentOp, originSignatures, destinationSignature, targetExecutionSignature, authorizations, dryRun) {
|
|
628
605
|
const signedIntentOp = createSignedIntentOp(intentOp, originSignatures, destinationSignature, targetExecutionSignature, authorizations);
|
|
629
|
-
const orchestrator =
|
|
606
|
+
const orchestrator = (0, orchestrator_1.getOrchestrator)(config.apiKey, config.endpointUrl);
|
|
630
607
|
const intentResults = await orchestrator.submitIntent(signedIntentOp, dryRun);
|
|
631
608
|
return {
|
|
632
609
|
type: 'intent',
|
|
@@ -728,7 +705,7 @@ function getSetupOperationsAndDelegations(config, accountAddress, eip7702InitSig
|
|
|
728
705
|
else if ((0, accounts_1.is7702)(config)) {
|
|
729
706
|
// EIP-7702 initialization is only needed for EOA accounts
|
|
730
707
|
if (!eip7702InitSignature || eip7702InitSignature === '0x') {
|
|
731
|
-
throw new
|
|
708
|
+
throw new error_1.Eip7702InitSignatureRequiredError();
|
|
732
709
|
}
|
|
733
710
|
const { initData: eip7702InitData, contract: eip7702Contract } = (0, accounts_1.getEip7702InitCall)(config, eip7702InitSignature);
|
|
734
711
|
return {
|
|
@@ -749,6 +726,13 @@ function getSetupOperationsAndDelegations(config, accountAddress, eip7702InitSig
|
|
|
749
726
|
const to = 'factory' in initCode ? initCode.factory : undefined;
|
|
750
727
|
const data = 'factory' in initCode ? initCode.factoryData : undefined;
|
|
751
728
|
if (!to || !data) {
|
|
729
|
+
// Check if it's a migrated account with address-only initData
|
|
730
|
+
if (config.initData && !('factory' in config.initData)) {
|
|
731
|
+
// Assume the account is already deployed
|
|
732
|
+
return {
|
|
733
|
+
setupOps: [],
|
|
734
|
+
};
|
|
735
|
+
}
|
|
752
736
|
throw new accounts_1.FactoryArgsNotAvailableError();
|
|
753
737
|
}
|
|
754
738
|
// Contract account with init code
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../execution/utils.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const viem_1 = require("viem");
|
|
4
|
+
const chains_1 = require("viem/chains");
|
|
5
|
+
const vitest_1 = require("vitest");
|
|
6
|
+
const consts_1 = require("../../test/consts");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
const mockGetIntentRoute = vitest_1.vi.fn();
|
|
9
|
+
vitest_1.vi.mock('../orchestrator', () => ({
|
|
10
|
+
getOrchestrator: () => ({
|
|
11
|
+
getIntentRoute: mockGetIntentRoute,
|
|
12
|
+
}),
|
|
13
|
+
}));
|
|
14
|
+
(0, vitest_1.describe)('prepareTransactionAsIntent', () => {
|
|
15
|
+
(0, vitest_1.beforeEach)(() => {
|
|
16
|
+
mockGetIntentRoute.mockReset();
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.test)('includes auxiliaryFunds in options when provided', async () => {
|
|
19
|
+
const auxiliaryFunds = {
|
|
20
|
+
[chains_1.arbitrum.id]: {
|
|
21
|
+
'0xaf88d065e77c8cC2239327C5EDb3A432268e5831': 500000000n,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
mockGetIntentRoute.mockResolvedValue({
|
|
25
|
+
intentOp: {},
|
|
26
|
+
intentCost: {},
|
|
27
|
+
});
|
|
28
|
+
await (0, utils_1.prepareTransactionAsIntent)({
|
|
29
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA], threshold: 1 },
|
|
30
|
+
apiKey: 'test',
|
|
31
|
+
}, [chains_1.arbitrum], chains_1.base, [], undefined, [{ address: viem_1.zeroAddress, amount: 1n }], undefined, false, undefined, undefined, undefined, undefined, undefined, auxiliaryFunds, undefined, undefined);
|
|
32
|
+
(0, vitest_1.expect)(mockGetIntentRoute).toHaveBeenCalledOnce();
|
|
33
|
+
const intentInput = mockGetIntentRoute.mock.calls[0][0];
|
|
34
|
+
(0, vitest_1.expect)(intentInput.options.auxiliaryFunds).toEqual(auxiliaryFunds);
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.test)('does not include auxiliaryFunds in options when not provided', async () => {
|
|
37
|
+
mockGetIntentRoute.mockResolvedValue({
|
|
38
|
+
intentOp: {},
|
|
39
|
+
intentCost: {},
|
|
40
|
+
});
|
|
41
|
+
await (0, utils_1.prepareTransactionAsIntent)({
|
|
42
|
+
owners: { type: 'ecdsa', accounts: [consts_1.accountA], threshold: 1 },
|
|
43
|
+
apiKey: 'test',
|
|
44
|
+
}, [chains_1.arbitrum], chains_1.base, [], undefined, [{ address: viem_1.zeroAddress, amount: 1n }], undefined, false, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined);
|
|
45
|
+
(0, vitest_1.expect)(mockGetIntentRoute).toHaveBeenCalledOnce();
|
|
46
|
+
const intentInput = mockGetIntentRoute.mock.calls[0][0];
|
|
47
|
+
(0, vitest_1.expect)(intentInput.options.auxiliaryFunds).toBeUndefined();
|
|
48
|
+
});
|
|
49
|
+
});
|
package/dist/src/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { type TransactionResult, type TransactionStatus, type UserOperationResul
|
|
|
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
9
|
import { type SessionDetails } from './modules/validators/smart-sessions';
|
|
10
|
-
import { type ApprovalRequired, 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';
|
|
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
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';
|
|
12
12
|
interface RhinestoneAccount {
|
|
13
13
|
config: RhinestoneAccountConfig;
|
|
@@ -50,6 +50,7 @@ interface RhinestoneAccount {
|
|
|
50
50
|
threshold: number;
|
|
51
51
|
} | null>;
|
|
52
52
|
getValidators: (chain: Chain) => Promise<Address[]>;
|
|
53
|
+
getExecutors: (chain: Chain) => Promise<Address[]>;
|
|
53
54
|
checkERC20Allowance: (tokenAddress: Address, chain: Chain) => Promise<bigint>;
|
|
54
55
|
}
|
|
55
56
|
/**
|
|
@@ -60,13 +61,13 @@ interface RhinestoneAccount {
|
|
|
60
61
|
*/
|
|
61
62
|
declare function createRhinestoneAccount(config: RhinestoneConfig): Promise<RhinestoneAccount>;
|
|
62
63
|
declare class RhinestoneSDK {
|
|
63
|
-
private apiKey
|
|
64
|
+
private apiKey;
|
|
64
65
|
private endpointUrl?;
|
|
65
66
|
private provider?;
|
|
66
67
|
private bundler?;
|
|
67
68
|
private paymaster?;
|
|
68
69
|
private useDevContracts?;
|
|
69
|
-
constructor(options
|
|
70
|
+
constructor(options: RhinestoneSDKConfig);
|
|
70
71
|
createAccount(config: RhinestoneAccountConfig): Promise<RhinestoneAccount>;
|
|
71
72
|
getIntentStatus(intentId: bigint): Promise<TransactionStatus & {
|
|
72
73
|
status: IntentOpStatus["status"];
|
|
@@ -74,7 +75,7 @@ declare class RhinestoneSDK {
|
|
|
74
75
|
splitIntents(input: SplitIntentsInput): Promise<SplitIntentsResult>;
|
|
75
76
|
}
|
|
76
77
|
export { RhinestoneSDK, createRhinestoneAccount, deployAccountsForOwners, walletClientToAccount, wrapParaAccount, getSupportedTokens, getTokenAddress, getTokenDecimals, getAllSupportedChainsAndTokens, deployStandaloneWithEoaInternal as deployStandaloneWithEoa, checkERC20AllowanceDirect, getPermit2Address, signPermit2Batch, signPermit2Sequential, };
|
|
77
|
-
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, 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, 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
79
|
export { generateCredentialId, getCredentialIds, hasCredentialById, hasCredential, addCredential, removeCredential, setThreshold, getCredentialInfo, getThreshold, getCredentials, WEBAUTHN_VALIDATOR_ABI, } from './modules/validators/webauthn-contract';
|
|
79
80
|
export { getOrchestrator } from './orchestrator';
|
|
80
81
|
//# 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":"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
|
@@ -233,6 +233,11 @@ async function createRhinestoneAccount(config) {
|
|
|
233
233
|
const account = getAddress();
|
|
234
234
|
return (0, modules_1.getValidators)(accountType, account, chain, config.provider);
|
|
235
235
|
}
|
|
236
|
+
function getExecutors(chain) {
|
|
237
|
+
const accountType = (0, accounts_1.getAccountProvider)(config).type;
|
|
238
|
+
const account = getAddress();
|
|
239
|
+
return (0, modules_1.getExecutors)(accountType, account, chain, config.provider);
|
|
240
|
+
}
|
|
236
241
|
function experimental_getSessionDetails(sessions) {
|
|
237
242
|
const account = getAddress();
|
|
238
243
|
return (0, modules_1.getSessionDetails)(account, sessions, config.useDevContracts);
|
|
@@ -280,6 +285,7 @@ async function createRhinestoneAccount(config) {
|
|
|
280
285
|
getPortfolio,
|
|
281
286
|
getOwners,
|
|
282
287
|
getValidators,
|
|
288
|
+
getExecutors,
|
|
283
289
|
experimental_getSessionDetails,
|
|
284
290
|
experimental_isSessionEnabled,
|
|
285
291
|
experimental_signEnableSession,
|
|
@@ -295,12 +301,12 @@ class RhinestoneSDK {
|
|
|
295
301
|
paymaster;
|
|
296
302
|
useDevContracts;
|
|
297
303
|
constructor(options) {
|
|
298
|
-
this.apiKey = options
|
|
299
|
-
this.endpointUrl = options
|
|
300
|
-
this.provider = options
|
|
301
|
-
this.bundler = options
|
|
302
|
-
this.paymaster = options
|
|
303
|
-
this.useDevContracts = options
|
|
304
|
+
this.apiKey = options.apiKey;
|
|
305
|
+
this.endpointUrl = options.endpointUrl;
|
|
306
|
+
this.provider = options.provider;
|
|
307
|
+
this.bundler = options.bundler;
|
|
308
|
+
this.paymaster = options.paymaster;
|
|
309
|
+
this.useDevContracts = options.useDevContracts;
|
|
304
310
|
}
|
|
305
311
|
createAccount(config) {
|
|
306
312
|
const rhinestoneConfig = {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { type Chain } from 'viem';
|
|
2
2
|
import type { RhinestoneConfig } from '../types';
|
|
3
3
|
import { type ModeleSetup, type Module } from './common';
|
|
4
|
-
import { getOwners, getValidators } from './read';
|
|
4
|
+
import { getExecutors, getOwners, getValidators } from './read';
|
|
5
5
|
import { getOwnerValidator } 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, getIntentExecutor, getValidators, isRip7212SupportedNetwork, getSessionDetails, signEnableSession, };
|
|
10
|
+
export { 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;
|
|
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,EAAE,iBAAiB,EAA4B,MAAM,cAAc,CAAA;AAE1E,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,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.getOwners = exports.getOwnerValidator = void 0;
|
|
3
|
+
exports.signEnableSession = exports.getSessionDetails = exports.getValidators = exports.getExecutors = exports.getOwners = exports.getOwnerValidator = void 0;
|
|
4
4
|
exports.getSetup = getSetup;
|
|
5
5
|
exports.getIntentExecutor = getIntentExecutor;
|
|
6
6
|
exports.isRip7212SupportedNetwork = isRip7212SupportedNetwork;
|
|
@@ -9,6 +9,7 @@ const chains_1 = require("viem/chains");
|
|
|
9
9
|
const chain_abstraction_1 = require("./chain-abstraction");
|
|
10
10
|
const common_1 = require("./common");
|
|
11
11
|
const read_1 = require("./read");
|
|
12
|
+
Object.defineProperty(exports, "getExecutors", { enumerable: true, get: function () { return read_1.getExecutors; } });
|
|
12
13
|
Object.defineProperty(exports, "getOwners", { enumerable: true, get: function () { return read_1.getOwners; } });
|
|
13
14
|
Object.defineProperty(exports, "getValidators", { enumerable: true, get: function () { return read_1.getValidators; } });
|
|
14
15
|
const validators_1 = require("./validators");
|
|
@@ -85,6 +86,8 @@ function getIntentExecutor(config) {
|
|
|
85
86
|
}
|
|
86
87
|
function isRip7212SupportedNetwork(chain) {
|
|
87
88
|
const supportedChains = [
|
|
89
|
+
chains_1.mainnet,
|
|
90
|
+
chains_1.sepolia,
|
|
88
91
|
chains_1.optimism,
|
|
89
92
|
chains_1.optimismSepolia,
|
|
90
93
|
chains_1.polygon,
|
|
@@ -92,6 +95,7 @@ function isRip7212SupportedNetwork(chain) {
|
|
|
92
95
|
chains_1.baseSepolia,
|
|
93
96
|
chains_1.arbitrum,
|
|
94
97
|
chains_1.arbitrumSepolia,
|
|
98
|
+
chains_1.soneium,
|
|
95
99
|
];
|
|
96
100
|
return supportedChains.includes(chain);
|
|
97
101
|
}
|
|
@@ -5,5 +5,6 @@ declare function getOwners(account: Address, chain: Chain, provider?: ProviderCo
|
|
|
5
5
|
accounts: Address[];
|
|
6
6
|
threshold: number;
|
|
7
7
|
} | null>;
|
|
8
|
-
|
|
8
|
+
declare function getExecutors(accountType: AccountType, account: Address, chain: Chain, provider?: ProviderConfig): Promise<Address[]>;
|
|
9
|
+
export { getValidators, getExecutors, getOwners };
|
|
9
10
|
//# sourceMappingURL=read.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../modules/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAsB,MAAM,MAAM,CAAA;AAEnE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAG3D,iBAAe,aAAa,CAC1B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,OAAO,EAAE,CAAC,CAkDpB;AAED,iBAAe,SAAS,CACtB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC;IACT,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,IAAI,CAAC,CAkER;AAED,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../modules/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAsB,MAAM,MAAM,CAAA;AAEnE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAG3D,iBAAe,aAAa,CAC1B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,OAAO,EAAE,CAAC,CAkDpB;AAED,iBAAe,SAAS,CACtB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC;IACT,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,IAAI,CAAC,CAkER;AAED,iBAAe,YAAY,CACzB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,OAAO,EAAE,CAAC,CAkDpB;AAED,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,CAAA"}
|
package/dist/src/modules/read.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getValidators = getValidators;
|
|
4
|
+
exports.getExecutors = getExecutors;
|
|
4
5
|
exports.getOwners = getOwners;
|
|
5
6
|
const viem_1 = require("viem");
|
|
6
7
|
const utils_1 = require("../accounts/utils");
|
|
@@ -123,3 +124,54 @@ async function getOwners(account, chain, provider) {
|
|
|
123
124
|
threshold: thresholdResult.result,
|
|
124
125
|
};
|
|
125
126
|
}
|
|
127
|
+
async function getExecutors(accountType, account, chain, provider) {
|
|
128
|
+
const publicClient = (0, viem_1.createPublicClient)({
|
|
129
|
+
chain,
|
|
130
|
+
transport: (0, utils_1.createTransport)(chain, provider),
|
|
131
|
+
});
|
|
132
|
+
switch (accountType) {
|
|
133
|
+
case 'safe':
|
|
134
|
+
case 'startale':
|
|
135
|
+
case 'nexus':
|
|
136
|
+
case 'passport': {
|
|
137
|
+
const executors = await publicClient.readContract({
|
|
138
|
+
abi: [
|
|
139
|
+
{
|
|
140
|
+
name: 'getExecutorsPaginated',
|
|
141
|
+
type: 'function',
|
|
142
|
+
inputs: [
|
|
143
|
+
{
|
|
144
|
+
name: 'cursor',
|
|
145
|
+
type: 'address',
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
name: 'size',
|
|
149
|
+
type: 'uint256',
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
outputs: [
|
|
153
|
+
{
|
|
154
|
+
name: 'array',
|
|
155
|
+
type: 'address[]',
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: 'next',
|
|
159
|
+
type: 'address',
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
functionName: 'getExecutorsPaginated',
|
|
165
|
+
address: account,
|
|
166
|
+
args: ['0x0000000000000000000000000000000000000001', 100n],
|
|
167
|
+
});
|
|
168
|
+
return executors[0];
|
|
169
|
+
}
|
|
170
|
+
case 'eoa': {
|
|
171
|
+
return [];
|
|
172
|
+
}
|
|
173
|
+
case 'kernel': {
|
|
174
|
+
throw new Error('Kernel not supported');
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
@@ -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;AA2BnC,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,MAAM,CAAC,CAAQ;gBAEX,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAKxC,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;IAQxD,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwDnE,YAAY,CAChB,yBAAyB,EAAE,cAAc,EACzC,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,YAAY,CAAC;IAgBlB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IASlE,OAAO,CAAC,UAAU;YAWJ,KAAK;IA4BnB,OAAO,CAAC,UAAU;IA6GlB,OAAO,CAAC,iBAAiB;CAmG1B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Orchestrator = void 0;
|
|
4
|
+
const consts_1 = require("./consts");
|
|
4
5
|
const error_1 = require("./error");
|
|
5
6
|
const utils_1 = require("./utils");
|
|
6
7
|
function parseTokenAmountsRecord(record) {
|
|
@@ -123,6 +124,7 @@ class Orchestrator {
|
|
|
123
124
|
getHeaders() {
|
|
124
125
|
const headers = {
|
|
125
126
|
'Content-Type': 'application/json',
|
|
127
|
+
'x-sdk-version': consts_1.SDK_VERSION,
|
|
126
128
|
};
|
|
127
129
|
if (this.apiKey) {
|
|
128
130
|
headers['x-api-key'] = this.apiKey;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
declare const PROD_ORCHESTRATOR_URL = "https://v1.orchestrator.rhinestone.dev";
|
|
2
|
-
declare const STAGING_ORCHESTRATOR_URL = "https://staging.v1.orchestrator.rhinestone.dev";
|
|
3
2
|
declare const RHINESTONE_SPOKE_POOL_ADDRESS = "0x000000000060f6e853447881951574cdd0663530";
|
|
4
|
-
|
|
3
|
+
declare const SDK_VERSION = "1.2.13";
|
|
4
|
+
export { PROD_ORCHESTRATOR_URL, RHINESTONE_SPOKE_POOL_ADDRESS, SDK_VERSION };
|
|
5
5
|
//# sourceMappingURL=consts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../orchestrator/consts.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,qBAAqB,2CAA2C,CAAA;AACtE,QAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../orchestrator/consts.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,qBAAqB,2CAA2C,CAAA;AACtE,QAAA,MAAM,6BAA6B,+CACW,CAAA;AAE9C,QAAA,MAAM,WAAW,WAAW,CAAA;AAE5B,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.SDK_VERSION = exports.RHINESTONE_SPOKE_POOL_ADDRESS = exports.PROD_ORCHESTRATOR_URL = void 0;
|
|
4
4
|
const PROD_ORCHESTRATOR_URL = 'https://v1.orchestrator.rhinestone.dev';
|
|
5
5
|
exports.PROD_ORCHESTRATOR_URL = PROD_ORCHESTRATOR_URL;
|
|
6
|
-
const STAGING_ORCHESTRATOR_URL = 'https://staging.v1.orchestrator.rhinestone.dev';
|
|
7
|
-
exports.STAGING_ORCHESTRATOR_URL = STAGING_ORCHESTRATOR_URL;
|
|
8
6
|
const RHINESTONE_SPOKE_POOL_ADDRESS = '0x000000000060f6e853447881951574cdd0663530';
|
|
9
7
|
exports.RHINESTONE_SPOKE_POOL_ADDRESS = RHINESTONE_SPOKE_POOL_ADDRESS;
|
|
8
|
+
const SDK_VERSION = '1.2.13';
|
|
9
|
+
exports.SDK_VERSION = SDK_VERSION;
|
|
@@ -2,9 +2,9 @@ import { Orchestrator } from './client';
|
|
|
2
2
|
import { RHINESTONE_SPOKE_POOL_ADDRESS } from './consts';
|
|
3
3
|
import { AuthenticationRequiredError, BadRequestError, BodyParserError, ConflictError, ForbiddenError, InsufficientBalanceError, InsufficientLiquidityError, IntentNotFoundError, InternalServerError, InvalidApiKeyError, InvalidIntentSignatureError, isAuthError, isOrchestratorError, isRateLimited, isRetryable, isValidationError, NoPathFoundError, OnlyOneTargetTokenAmountCanBeUnsetError, OrchestratorError, RateLimitedError, ResourceNotFoundError, SchemaValidationError, ServiceUnavailableError, SimulationFailedError, TokenNotSupportedError, UnauthorizedError, UnprocessableEntityError, UnsupportedChainError, UnsupportedChainIdError, UnsupportedTokenError } from './error';
|
|
4
4
|
import { getAllSupportedChainsAndTokens, getSupportedTokens, getTokenAddress, getTokenDecimals, getTokenSymbol, getWethAddress, isTokenAddressSupported } from './registry';
|
|
5
|
-
import type { ApprovalRequired, IntentInput, IntentOp, IntentOpStatus, IntentResult, IntentRoute, Portfolio, SettlementLayer, SignedIntentOp, SplitIntentsInput, SplitIntentsResult, SupportedChain, TokenConfig, TokenRequirements, WrapRequired } from './types';
|
|
5
|
+
import type { ApprovalRequired, AuxiliaryFunds, IntentInput, IntentOp, IntentOpStatus, IntentResult, IntentRoute, Portfolio, SettlementLayer, SignedIntentOp, SplitIntentsInput, SplitIntentsResult, SupportedChain, TokenConfig, TokenRequirements, WrapRequired } from './types';
|
|
6
6
|
import { INTENT_STATUS_CLAIMED, INTENT_STATUS_COMPLETED, INTENT_STATUS_EXPIRED, INTENT_STATUS_FAILED, INTENT_STATUS_FILLED, INTENT_STATUS_PENDING, INTENT_STATUS_PRECONFIRMED } from './types';
|
|
7
7
|
declare function getOrchestrator(apiKey?: string, orchestratorUrl?: string): Orchestrator;
|
|
8
|
-
export type { IntentInput, IntentOp, IntentOpStatus, IntentResult, IntentRoute, SettlementLayer, SignedIntentOp, SplitIntentsInput, SplitIntentsResult, SupportedChain, TokenConfig, Portfolio, TokenRequirements, WrapRequired, ApprovalRequired, };
|
|
8
|
+
export type { AuxiliaryFunds, IntentInput, IntentOp, IntentOpStatus, IntentResult, IntentRoute, SettlementLayer, SignedIntentOp, SplitIntentsInput, SplitIntentsResult, SupportedChain, TokenConfig, Portfolio, TokenRequirements, WrapRequired, ApprovalRequired, };
|
|
9
9
|
export { INTENT_STATUS_PENDING, INTENT_STATUS_EXPIRED, INTENT_STATUS_COMPLETED, INTENT_STATUS_FILLED, INTENT_STATUS_FAILED, INTENT_STATUS_PRECONFIRMED, INTENT_STATUS_CLAIMED, RHINESTONE_SPOKE_POOL_ADDRESS, Orchestrator, AuthenticationRequiredError, BadRequestError, BodyParserError, ConflictError, ForbiddenError, InsufficientBalanceError, InsufficientLiquidityError, InvalidApiKeyError, InvalidIntentSignatureError, NoPathFoundError, OnlyOneTargetTokenAmountCanBeUnsetError, OrchestratorError, IntentNotFoundError, InternalServerError, ResourceNotFoundError, RateLimitedError, SchemaValidationError, ServiceUnavailableError, SimulationFailedError, UnprocessableEntityError, UnauthorizedError, TokenNotSupportedError, UnsupportedChainError, UnsupportedChainIdError, UnsupportedTokenError, getOrchestrator, getWethAddress, getTokenSymbol, getTokenAddress, getTokenDecimals, getSupportedTokens, getAllSupportedChainsAndTokens, isOrchestratorError, isRetryable, isAuthError, isValidationError, isRateLimited, isTokenAddressSupported, };
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../orchestrator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAyB,6BAA6B,EAAE,MAAM,UAAU,CAAA;AAC/E,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,2BAA2B,EAC3B,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,uCAAuC,EACvC,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,uBAAuB,EACxB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,WAAW,EACX,SAAS,EACT,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,YAAY,EACb,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,SAAS,CAAA;AAEhB,iBAAS,eAAe,CACtB,MAAM,CAAC,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,GACvB,YAAY,CAEd;AAED,YAAY,EACV,WAAW,EACX,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,GACjB,CAAA;AACD,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,EAC7B,YAAY,EACZ,2BAA2B,EAC3B,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,2BAA2B,EAC3B,gBAAgB,EAChB,uCAAuC,EACvC,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,8BAA8B,EAC9B,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,uBAAuB,GACxB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../orchestrator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAyB,6BAA6B,EAAE,MAAM,UAAU,CAAA;AAC/E,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,2BAA2B,EAC3B,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,uCAAuC,EACvC,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,uBAAuB,EACxB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,WAAW,EACX,SAAS,EACT,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,YAAY,EACb,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,SAAS,CAAA;AAEhB,iBAAS,eAAe,CACtB,MAAM,CAAC,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,GACvB,YAAY,CAEd;AAED,YAAY,EACV,cAAc,EACd,WAAW,EACX,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,GACjB,CAAA;AACD,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,EAC7B,YAAY,EACZ,2BAA2B,EAC3B,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,2BAA2B,EAC3B,gBAAgB,EAChB,uCAAuC,EACvC,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,8BAA8B,EAC9B,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,uBAAuB,GACxB,CAAA"}
|