@charterlabs/rhinestone-sdk 0.2.7-dev.2 → 0.2.7-dev.4

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.
Files changed (130) hide show
  1. package/dist/src/accounts/error.d.ts +38 -3
  2. package/dist/src/accounts/error.d.ts.map +1 -1
  3. package/dist/src/accounts/error.js +55 -7
  4. package/dist/src/accounts/index.d.ts +28 -20
  5. package/dist/src/accounts/index.d.ts.map +1 -1
  6. package/dist/src/accounts/index.js +196 -21
  7. package/dist/src/accounts/index.test.js +2 -4
  8. package/dist/src/accounts/json-rpc/providers.d.ts.map +1 -1
  9. package/dist/src/accounts/json-rpc/providers.js +42 -4
  10. package/dist/src/accounts/kernel.d.ts +1 -1
  11. package/dist/src/accounts/kernel.d.ts.map +1 -1
  12. package/dist/src/accounts/kernel.js +29 -1
  13. package/dist/src/accounts/kernel.test.js +35 -8
  14. package/dist/src/accounts/nexus.d.ts +4 -3
  15. package/dist/src/accounts/nexus.d.ts.map +1 -1
  16. package/dist/src/accounts/nexus.js +82 -14
  17. package/dist/src/accounts/nexus.test.js +33 -6
  18. package/dist/src/accounts/safe.d.ts.map +1 -1
  19. package/dist/src/accounts/safe.js +85 -53
  20. package/dist/src/accounts/safe.test.js +33 -6
  21. package/dist/src/accounts/signing/common.d.ts +4 -4
  22. package/dist/src/accounts/signing/common.d.ts.map +1 -1
  23. package/dist/src/accounts/signing/common.js +21 -9
  24. package/dist/src/accounts/signing/message.d.ts +1 -1
  25. package/dist/src/accounts/signing/message.d.ts.map +1 -1
  26. package/dist/src/accounts/signing/message.js +6 -6
  27. package/dist/src/accounts/signing/passkeys.d.ts +8 -1
  28. package/dist/src/accounts/signing/passkeys.d.ts.map +1 -1
  29. package/dist/src/accounts/signing/passkeys.js +35 -0
  30. package/dist/src/accounts/signing/passkeys.test.js +15 -0
  31. package/dist/src/accounts/signing/typedData.d.ts.map +1 -1
  32. package/dist/src/accounts/signing/typedData.js +2 -2
  33. package/dist/src/accounts/startale.test.js +0 -4
  34. package/dist/src/accounts/utils.d.ts +2 -2
  35. package/dist/src/accounts/utils.d.ts.map +1 -1
  36. package/dist/src/accounts/walletClient.d.ts +7 -0
  37. package/dist/src/accounts/walletClient.d.ts.map +1 -0
  38. package/dist/src/accounts/walletClient.js +38 -0
  39. package/dist/src/actions/compact.d.ts +13 -0
  40. package/dist/src/actions/compact.d.ts.map +1 -0
  41. package/dist/src/actions/compact.js +210 -0
  42. package/dist/src/actions/ecdsa.d.ts +35 -0
  43. package/dist/src/actions/ecdsa.d.ts.map +1 -0
  44. package/dist/src/actions/ecdsa.js +114 -0
  45. package/dist/src/actions/ecdsa.test.d.ts +2 -0
  46. package/dist/src/actions/ecdsa.test.d.ts.map +1 -0
  47. package/dist/src/actions/ecdsa.test.js +99 -0
  48. package/dist/src/actions/index.d.ts +23 -166
  49. package/dist/src/actions/index.d.ts.map +1 -1
  50. package/dist/src/actions/index.js +25 -544
  51. package/dist/src/actions/mfa.d.ts +37 -0
  52. package/dist/src/actions/mfa.d.ts.map +1 -0
  53. package/dist/src/actions/mfa.js +133 -0
  54. package/dist/src/actions/passkeys.d.ts +37 -0
  55. package/dist/src/actions/passkeys.d.ts.map +1 -0
  56. package/dist/src/actions/passkeys.js +129 -0
  57. package/dist/src/actions/passkeys.test.d.ts +2 -0
  58. package/dist/src/actions/passkeys.test.d.ts.map +1 -0
  59. package/dist/src/actions/passkeys.test.js +54 -0
  60. package/dist/src/actions/recovery.d.ts +33 -0
  61. package/dist/src/actions/recovery.d.ts.map +1 -0
  62. package/dist/src/actions/recovery.js +193 -0
  63. package/dist/src/actions/recovery.test.d.ts +2 -0
  64. package/dist/src/actions/recovery.test.d.ts.map +1 -0
  65. package/dist/src/actions/recovery.test.js +168 -0
  66. package/dist/src/errors/index.d.ts +5 -0
  67. package/dist/src/errors/index.d.ts.map +1 -0
  68. package/dist/src/errors/index.js +35 -0
  69. package/dist/src/execution/compact.d.ts +24 -8
  70. package/dist/src/execution/compact.d.ts.map +1 -1
  71. package/dist/src/execution/compact.js +29 -103
  72. package/dist/src/execution/error.d.ts +2 -9
  73. package/dist/src/execution/error.d.ts.map +1 -1
  74. package/dist/src/execution/error.js +4 -13
  75. package/dist/src/execution/index.d.ts +33 -22
  76. package/dist/src/execution/index.d.ts.map +1 -1
  77. package/dist/src/execution/index.js +60 -41
  78. package/dist/src/execution/permit2.d.ts +148 -0
  79. package/dist/src/execution/permit2.d.ts.map +1 -0
  80. package/dist/src/execution/permit2.js +282 -0
  81. package/dist/src/execution/smart-session.d.ts +3 -3
  82. package/dist/src/execution/smart-session.d.ts.map +1 -1
  83. package/dist/src/execution/types.d.ts +35 -0
  84. package/dist/src/execution/types.d.ts.map +1 -0
  85. package/dist/src/execution/types.js +2 -0
  86. package/dist/src/execution/utils.d.ts +36 -28
  87. package/dist/src/execution/utils.d.ts.map +1 -1
  88. package/dist/src/execution/utils.js +248 -91
  89. package/dist/src/index.d.ts +37 -19
  90. package/dist/src/index.d.ts.map +1 -1
  91. package/dist/src/index.js +130 -66
  92. package/dist/src/modules/common.d.ts +10 -4
  93. package/dist/src/modules/common.d.ts.map +1 -1
  94. package/dist/src/modules/common.js +22 -1
  95. package/dist/src/modules/index.d.ts +3 -2
  96. package/dist/src/modules/index.d.ts.map +1 -1
  97. package/dist/src/modules/index.js +16 -13
  98. package/dist/src/modules/index.test.js +8 -11
  99. package/dist/src/modules/read.d.ts.map +1 -1
  100. package/dist/src/modules/read.js +4 -0
  101. package/dist/src/modules/validators/core.d.ts +5 -3
  102. package/dist/src/modules/validators/core.d.ts.map +1 -1
  103. package/dist/src/modules/validators/core.js +29 -10
  104. package/dist/src/modules/validators/core.test.js +4 -4
  105. package/dist/src/modules/validators/smart-sessions.test.js +0 -3
  106. package/dist/src/modules/validators/webauthn-contract.d.ts.map +1 -1
  107. package/dist/src/orchestrator/client.d.ts +2 -1
  108. package/dist/src/orchestrator/client.d.ts.map +1 -1
  109. package/dist/src/orchestrator/client.js +36 -14
  110. package/dist/src/orchestrator/consts.d.ts +1 -2
  111. package/dist/src/orchestrator/consts.d.ts.map +1 -1
  112. package/dist/src/orchestrator/consts.js +1 -3
  113. package/dist/src/orchestrator/registry.d.ts +2 -2
  114. package/dist/src/orchestrator/registry.d.ts.map +1 -1
  115. package/dist/src/orchestrator/registry.js +68 -30
  116. package/dist/src/orchestrator/registry.test.js +4 -4
  117. package/dist/src/orchestrator/types.d.ts +34 -25
  118. package/dist/src/orchestrator/types.d.ts.map +1 -1
  119. package/dist/src/types.d.ts +64 -9
  120. package/dist/src/types.d.ts.map +1 -1
  121. package/package.json +73 -2
  122. package/dist/src/accounts/json-rpc/index.test.d.ts +0 -2
  123. package/dist/src/accounts/json-rpc/index.test.d.ts.map +0 -1
  124. package/dist/src/accounts/json-rpc/index.test.js +0 -16
  125. package/dist/src/accounts/json-rpc/providers.test.d.ts +0 -2
  126. package/dist/src/accounts/json-rpc/providers.test.d.ts.map +0 -1
  127. package/dist/src/accounts/json-rpc/providers.test.js +0 -15
  128. package/dist/src/actions/index.test.d.ts +0 -2
  129. package/dist/src/actions/index.test.d.ts.map +0 -1
  130. package/dist/src/actions/index.test.js +0 -302
@@ -1,46 +1,54 @@
1
1
  import { type Address, type Chain, type HashTypedDataParameters, type Hex, type PublicClient, type SignableMessage, type SignedAuthorization, type SignedAuthorizationList, type TypedData } from 'viem';
2
2
  import { type UserOperation } from 'viem/account-abstraction';
3
3
  import { type IntentOp, type IntentRoute } from '../orchestrator';
4
- import type { Call, CallInput, RhinestoneAccountConfig, SignerSet, TokenRequest, Transaction } from '../types';
5
- type TransactionResult = {
4
+ import type { SettlementLayer } from '../orchestrator/types';
5
+ import type { Call, CalldataInput, CallInput, RhinestoneConfig, SignerSet, SourceAssetInput, TokenRequest, TokenSymbol, Transaction, UserOperationTransaction } from '../types';
6
+ interface UserOperationResult {
6
7
  type: 'userop';
7
8
  hash: Hex;
8
9
  chain: number;
9
- } | {
10
+ }
11
+ interface TransactionResult {
10
12
  type: 'intent';
11
13
  id: bigint;
12
14
  sourceChains?: number[];
13
15
  targetChain: number;
14
- };
15
- interface IntentData {
16
- type: 'intent';
17
- intentRoute: IntentRoute;
18
- }
19
- interface UserOpData {
20
- type: 'userop';
21
- hash: Hex;
22
- userOp: UserOperation;
23
16
  }
24
17
  interface PreparedTransactionData {
25
- data: IntentData | UserOpData;
18
+ intentRoute: IntentRoute;
26
19
  transaction: Transaction;
27
20
  }
21
+ interface PreparedUserOperationData {
22
+ userOperation: UserOperation;
23
+ hash: Hex;
24
+ transaction: UserOperationTransaction;
25
+ }
28
26
  interface SignedTransactionData extends PreparedTransactionData {
29
27
  signature: Hex;
30
28
  }
31
- declare function prepareTransaction(config: RhinestoneAccountConfig, transaction: Transaction): Promise<PreparedTransactionData>;
32
- declare function signTransaction(config: RhinestoneAccountConfig, preparedTransaction: PreparedTransactionData): Promise<SignedTransactionData>;
33
- declare function signAuthorizations(config: RhinestoneAccountConfig, preparedTransaction: PreparedTransactionData): Promise<SignedAuthorization[]>;
34
- declare function signMessage(config: RhinestoneAccountConfig, message: SignableMessage, chain: Chain, signers: SignerSet | undefined): Promise<`0x${string}`>;
35
- declare function signTypedData<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData>(config: RhinestoneAccountConfig, parameters: HashTypedDataParameters<typedData, primaryType>, chain: Chain, signers: SignerSet | undefined): Promise<`0x${string}`>;
36
- declare function signAuthorizationsInternal(config: RhinestoneAccountConfig, data: IntentData | UserOpData): Promise<SignedAuthorization[]>;
37
- declare function submitTransaction(config: RhinestoneAccountConfig, signedTransaction: SignedTransactionData, authorizations: SignedAuthorizationList): Promise<TransactionResult>;
38
- declare function prepareTransactionAsIntent(config: RhinestoneAccountConfig, sourceChains: Chain[] | undefined, targetChain: Chain, callInputs: CallInput[], gasLimit: bigint | undefined, tokenRequests: TokenRequest[], accountAddress: Address, isSponsored: boolean, eip7702InitSignature?: Hex): Promise<IntentData>;
39
- declare function signIntent(config: RhinestoneAccountConfig, targetChain: Chain, intentOp: IntentOp, signers?: SignerSet): Promise<`0x${string}`>;
40
- declare function getOrchestratorByChain(chainId: number, apiKey: string | undefined, useDev: boolean | undefined): import("../orchestrator").Orchestrator;
41
- declare function submitIntentInternal(config: RhinestoneAccountConfig, sourceChains: Chain[] | undefined, targetChain: Chain, intentOp: IntentOp, signature: Hex, authorizations: SignedAuthorizationList): Promise<TransactionResult>;
42
- declare function getValidatorAccount(config: RhinestoneAccountConfig, signers: SignerSet | undefined, publicClient: PublicClient, chain: Chain): Promise<import("viem/account-abstraction").SmartAccount<import("viem/account-abstraction").SmartAccountImplementation<import("viem").Abi, "0.7">> | null | undefined>;
43
- declare function parseCalls(calls: CallInput[], chainId: number): Call[];
44
- export { prepareTransaction, signTransaction, signAuthorizations, signAuthorizationsInternal, signMessage, signTypedData, submitTransaction, getOrchestratorByChain, signIntent, prepareTransactionAsIntent, submitIntentInternal, getValidatorAccount, parseCalls, };
45
- export type { IntentData, TransactionResult, PreparedTransactionData, SignedTransactionData, };
29
+ interface SignedUserOperationData extends PreparedUserOperationData {
30
+ signature: Hex;
31
+ }
32
+ declare function prepareTransaction(config: RhinestoneConfig, transaction: Transaction): Promise<PreparedTransactionData>;
33
+ declare function prepareUserOperation(config: RhinestoneConfig, transaction: UserOperationTransaction): Promise<PreparedUserOperationData>;
34
+ declare function resolveCallInputs(inputs: CallInput[], config: RhinestoneConfig, chain: Chain, accountAddress: Address): Promise<CalldataInput[]>;
35
+ declare function signTransaction(config: RhinestoneConfig, preparedTransaction: PreparedTransactionData): Promise<SignedTransactionData>;
36
+ declare function signUserOperation(config: RhinestoneConfig, preparedUserOperation: PreparedUserOperationData): Promise<SignedUserOperationData>;
37
+ declare function signAuthorizations(config: RhinestoneConfig, preparedTransaction: PreparedTransactionData): Promise<SignedAuthorization[]>;
38
+ declare function signMessage(config: RhinestoneConfig, message: SignableMessage, chain: Chain, signers: SignerSet | undefined): Promise<`0x${string}`>;
39
+ declare function signTypedData<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData>(config: RhinestoneConfig, parameters: HashTypedDataParameters<typedData, primaryType>, chain: Chain, signers: SignerSet | undefined): Promise<`0x${string}`>;
40
+ declare function signAuthorizationsInternal(config: RhinestoneConfig, data: IntentRoute | UserOperation): Promise<SignedAuthorization[]>;
41
+ declare function submitTransaction(config: RhinestoneConfig, signedTransaction: SignedTransactionData, authorizations: SignedAuthorizationList): Promise<TransactionResult>;
42
+ declare function submitUserOperation(config: RhinestoneConfig, signedUserOperation: SignedUserOperationData): Promise<UserOperationResult>;
43
+ declare function simulateTransaction(config: RhinestoneConfig, signedTransaction: SignedTransactionData, authorizations: SignedAuthorizationList): Promise<import("../orchestrator").IntentResult>;
44
+ declare function getTokenRequests(sourceChains: Chain[], targetChain: Chain, initialTokenRequests: TokenRequest[] | undefined, settlementLayers: SettlementLayer[] | undefined): TokenRequest[];
45
+ declare function prepareTransactionAsIntent(config: RhinestoneConfig, sourceChains: Chain[] | undefined, targetChain: Chain, callInputs: CalldataInput[], gasLimit: bigint | undefined, tokenRequests: TokenRequest[], accountAddress: Address, isSponsored: boolean, eip7702InitSignature: Hex | undefined, settlementLayers: SettlementLayer[] | undefined, sourceAssets: SourceAssetInput | undefined, feeAsset: Address | TokenSymbol | undefined, lockFunds?: boolean): Promise<IntentRoute>;
46
+ declare function signIntent(config: RhinestoneConfig, targetChain: Chain, intentOp: IntentOp, signers?: SignerSet): Promise<`0x${string}`>;
47
+ declare function getOrchestratorByChain(chainId: number, apiKey: string | undefined, orchestratorUrl?: string): import("../orchestrator").Orchestrator;
48
+ declare function submitIntentInternal(config: RhinestoneConfig, sourceChains: Chain[] | undefined, targetChain: Chain, intentOp: IntentOp, signature: Hex, authorizations: SignedAuthorizationList): Promise<TransactionResult>;
49
+ declare function simulateIntentInternal(config: RhinestoneConfig, _sourceChains: Chain[] | undefined, targetChain: Chain, intentOp: IntentOp, signature: Hex, authorizations: SignedAuthorizationList): Promise<import("../orchestrator").IntentResult>;
50
+ declare function getValidatorAccount(config: RhinestoneConfig, signers: SignerSet | undefined, publicClient: PublicClient, chain: Chain): Promise<import("viem/account-abstraction").SmartAccount<import("viem/account-abstraction").SmartAccountImplementation<import("viem").Abi, "0.7">> | null | undefined>;
51
+ declare function parseCalls(calls: CalldataInput[], chainId: number): Call[];
52
+ export { prepareTransaction, signTransaction, signAuthorizations, signAuthorizationsInternal, signMessage, signTypedData, submitTransaction, simulateTransaction, prepareUserOperation, signUserOperation, submitUserOperation, getOrchestratorByChain, signIntent, prepareTransactionAsIntent, submitIntentInternal, simulateIntentInternal, getValidatorAccount, parseCalls, getTokenRequests, resolveCallInputs, };
53
+ export type { IntentRoute, TransactionResult, PreparedTransactionData, PreparedUserOperationData, SignedTransactionData, SignedUserOperationData, UserOperationResult, };
46
54
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../execution/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../execution/utils.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,19 @@ exports.signAuthorizationsInternal = signAuthorizationsInternal;
7
7
  exports.signMessage = signMessage;
8
8
  exports.signTypedData = signTypedData;
9
9
  exports.submitTransaction = submitTransaction;
10
+ exports.simulateTransaction = simulateTransaction;
11
+ exports.prepareUserOperation = prepareUserOperation;
12
+ exports.signUserOperation = signUserOperation;
13
+ exports.submitUserOperation = submitUserOperation;
10
14
  exports.getOrchestratorByChain = getOrchestratorByChain;
11
15
  exports.signIntent = signIntent;
12
16
  exports.prepareTransactionAsIntent = prepareTransactionAsIntent;
13
17
  exports.submitIntentInternal = submitIntentInternal;
18
+ exports.simulateIntentInternal = simulateIntentInternal;
14
19
  exports.getValidatorAccount = getValidatorAccount;
15
20
  exports.parseCalls = parseCalls;
21
+ exports.getTokenRequests = getTokenRequests;
22
+ exports.resolveCallInputs = resolveCallInputs;
16
23
  const viem_1 = require("viem");
17
24
  const account_abstraction_1 = require("viem/account-abstraction");
18
25
  const accounts_1 = require("../accounts");
@@ -24,51 +31,74 @@ const consts_1 = require("../orchestrator/consts");
24
31
  const registry_1 = require("../orchestrator/registry");
25
32
  const compact_1 = require("./compact");
26
33
  const error_1 = require("./error");
34
+ const permit2_1 = require("./permit2");
27
35
  async function prepareTransaction(config, transaction) {
28
- const { sourceChains, targetChain, tokenRequests, signers, sponsored, eip7702InitSignature, } = getTransactionParams(transaction);
36
+ const { sourceChains, targetChain, tokenRequests, signers, sponsored, eip7702InitSignature, settlementLayers, sourceAssets, feeAsset, lockFunds, } = getTransactionParams(transaction);
29
37
  const accountAddress = (0, accounts_1.getAddress)(config);
30
- let data;
31
- const asUserOp = signers?.type === 'guardians' || signers?.type === 'session';
32
- if (asUserOp) {
33
- if (sourceChains && sourceChains.length > 0) {
34
- throw new error_1.SourceChainsNotAvailableForUserOpFlowError();
35
- }
36
- // Smart sessions require a UserOp flow
37
- data = await prepareTransactionAsUserOp(config, targetChain, transaction.calls, signers);
38
- }
39
- else {
40
- data = await prepareTransactionAsIntent(config, sourceChains, targetChain, transaction.calls, transaction.gasLimit, tokenRequests, accountAddress, sponsored ?? false, eip7702InitSignature);
38
+ const isUserOpSigner = signers?.type === 'guardians' || signers?.type === 'session';
39
+ if (isUserOpSigner) {
40
+ throw new error_1.SignerNotSupportedError();
41
41
  }
42
+ const intentRoute = await prepareTransactionAsIntent(config, sourceChains, targetChain, await resolveCallInputs(transaction.calls, config, targetChain, accountAddress), transaction.gasLimit, tokenRequests, accountAddress, sponsored ?? false, eip7702InitSignature, settlementLayers, sourceAssets, feeAsset, lockFunds);
42
43
  return {
43
- data,
44
+ intentRoute,
44
45
  transaction,
45
46
  };
46
47
  }
47
- async function signTransaction(config, preparedTransaction) {
48
- const { targetChain, signers } = getTransactionParams(preparedTransaction.transaction);
49
- const data = preparedTransaction.data;
50
- const asUserOp = data.type === 'userop';
51
- let signature;
52
- if (asUserOp) {
53
- const chain = targetChain;
54
- const userOp = data.userOp;
55
- if (!userOp) {
56
- throw new error_1.UserOperationRequiredForSmartSessionsError();
48
+ async function prepareUserOperation(config, transaction) {
49
+ const chain = transaction.chain;
50
+ const signers = transaction.signers;
51
+ const accountAddress = (0, accounts_1.getAddress)(config);
52
+ const data = await prepareTransactionAsUserOp(config, chain, await resolveCallInputs(transaction.calls, config, chain, accountAddress), signers, transaction.gasLimit);
53
+ return {
54
+ userOperation: data.userOp,
55
+ hash: data.hash,
56
+ transaction,
57
+ };
58
+ }
59
+ async function resolveCallInputs(inputs, config, chain, accountAddress) {
60
+ const resolved = [];
61
+ for (const intent of inputs) {
62
+ if ('resolve' in intent) {
63
+ const result = await intent.resolve({ config, chain, accountAddress });
64
+ if (Array.isArray(result)) {
65
+ resolved.push(...result);
66
+ }
67
+ else if (result) {
68
+ resolved.push(result);
69
+ }
70
+ }
71
+ else {
72
+ resolved.push(intent);
57
73
  }
58
- // Smart sessions require a UserOp flow
59
- signature = await signUserOp(config, chain, signers, userOp);
60
- }
61
- else {
62
- signature = await signIntent(config, targetChain, data.intentRoute.intentOp, signers);
63
74
  }
75
+ return resolved;
76
+ }
77
+ async function signTransaction(config, preparedTransaction) {
78
+ const { targetChain, signers } = getTransactionParams(preparedTransaction.transaction);
79
+ const intentRoute = preparedTransaction.intentRoute;
80
+ const signature = await signIntent(config, targetChain, intentRoute.intentOp, signers);
64
81
  return {
65
- data,
82
+ intentRoute,
66
83
  transaction: preparedTransaction.transaction,
67
84
  signature,
68
85
  };
69
86
  }
87
+ async function signUserOperation(config, preparedUserOperation) {
88
+ const chain = preparedUserOperation.transaction.chain;
89
+ const userOp = preparedUserOperation.userOperation;
90
+ const signers = preparedUserOperation.transaction.signers;
91
+ // Smart sessions require a UserOp flow
92
+ const signature = await signUserOp(config, chain, signers, userOp);
93
+ return {
94
+ userOperation: preparedUserOperation.userOperation,
95
+ hash: preparedUserOperation.hash,
96
+ transaction: preparedUserOperation.transaction,
97
+ signature,
98
+ };
99
+ }
70
100
  async function signAuthorizations(config, preparedTransaction) {
71
- return await signAuthorizationsInternal(config, preparedTransaction.data);
101
+ return await signAuthorizationsInternal(config, preparedTransaction.intentRoute);
72
102
  }
73
103
  async function signMessage(config, message, chain, signers) {
74
104
  const validator = getValidator(config, signers);
@@ -103,14 +133,16 @@ async function signAuthorizationsInternal(config, data) {
103
133
  throw new Error('EIP-7702 initialization is required for EOA accounts');
104
134
  }
105
135
  const accountAddress = (0, accounts_1.getAddress)(config);
106
- const requiredDelegations = data.type === 'intent'
107
- ? data.intentRoute.intentOp.signedMetadata.account.requiredDelegations ||
108
- {}
136
+ const requiredDelegations = 'intentOp' in data
137
+ ? data.intentOp.signedMetadata.account.requiredDelegations || {}
109
138
  : {};
110
139
  const authorizations = [];
111
140
  for (const chainId in requiredDelegations) {
112
141
  const delegation = requiredDelegations[chainId];
113
142
  const chain = (0, registry_1.getChainById)(Number(chainId));
143
+ if (!chain) {
144
+ throw new Error(`Chain not supported: ${chainId}`);
145
+ }
114
146
  const walletClient = (0, viem_1.createWalletClient)({
115
147
  chain,
116
148
  account: eoa,
@@ -132,25 +164,26 @@ async function signAuthorizationsInternal(config, data) {
132
164
  return authorizations;
133
165
  }
134
166
  async function submitTransaction(config, signedTransaction, authorizations) {
135
- const { data, transaction, signature } = signedTransaction;
167
+ const { intentRoute, transaction, signature } = signedTransaction;
136
168
  const { sourceChains, targetChain } = getTransactionParams(transaction);
137
- const asUserOp = data.type === 'userop';
138
- if (asUserOp) {
139
- const chain = targetChain;
140
- const userOp = data.userOp;
141
- if (!userOp) {
142
- throw new error_1.UserOperationRequiredForSmartSessionsError();
143
- }
144
- // Smart sessions require a UserOp flow
145
- return await submitUserOp(config, chain, userOp, signature);
146
- }
147
- else {
148
- const intentOp = data.intentRoute.intentOp;
149
- if (!intentOp) {
150
- throw new error_1.OrderPathRequiredForIntentsError();
151
- }
152
- return await submitIntent(config, sourceChains, targetChain, intentOp, signature, authorizations);
169
+ const intentOp = intentRoute.intentOp;
170
+ return await submitIntent(config, sourceChains, targetChain, intentOp, signature, authorizations);
171
+ }
172
+ async function submitUserOperation(config, signedUserOperation) {
173
+ const chain = signedUserOperation.transaction.chain;
174
+ const userOp = signedUserOperation.userOperation;
175
+ const signature = signedUserOperation.signature;
176
+ // Smart sessions require a UserOp flow
177
+ return await submitUserOp(config, chain, userOp, signature);
178
+ }
179
+ async function simulateTransaction(config, signedTransaction, authorizations) {
180
+ const { intentRoute, transaction, signature } = signedTransaction;
181
+ const { sourceChains, targetChain } = getTransactionParams(transaction);
182
+ const intentOp = intentRoute.intentOp;
183
+ if (!intentOp) {
184
+ throw new error_1.OrderPathRequiredForIntentsError();
153
185
  }
186
+ return await simulateIntent(config, sourceChains, targetChain, intentOp, signature, authorizations);
154
187
  }
155
188
  function getTransactionParams(transaction) {
156
189
  const sourceChains = 'chain' in transaction ? [transaction.chain] : transaction.sourceChains;
@@ -159,15 +192,12 @@ function getTransactionParams(transaction) {
159
192
  const signers = transaction.signers;
160
193
  const eip7702InitSignature = transaction.eip7702InitSignature;
161
194
  const sponsored = transaction.sponsored;
162
- // Across requires passing some value to repay the solvers
163
- const tokenRequests = !initialTokenRequests || initialTokenRequests.length === 0
164
- ? [
165
- {
166
- address: viem_1.zeroAddress,
167
- amount: 1n,
168
- },
169
- ]
170
- : initialTokenRequests;
195
+ const gasLimit = transaction.gasLimit;
196
+ const settlementLayers = transaction.settlementLayers;
197
+ const sourceAssets = transaction.sourceAssets;
198
+ const feeAsset = transaction.feeAsset;
199
+ const lockFunds = transaction.lockFunds;
200
+ const tokenRequests = getTokenRequests(sourceChains || [], targetChain, initialTokenRequests, settlementLayers);
171
201
  return {
172
202
  sourceChains,
173
203
  targetChain,
@@ -175,9 +205,32 @@ function getTransactionParams(transaction) {
175
205
  signers,
176
206
  sponsored,
177
207
  eip7702InitSignature,
208
+ gasLimit,
209
+ settlementLayers,
210
+ sourceAssets,
211
+ feeAsset,
212
+ lockFunds,
213
+ };
214
+ }
215
+ function getTokenRequests(sourceChains, targetChain, initialTokenRequests, settlementLayers) {
216
+ if (initialTokenRequests) {
217
+ validateTokenSymbols(targetChain, initialTokenRequests.map((tokenRequest) => tokenRequest.address));
218
+ }
219
+ // Across requires passing some value to repay the solvers
220
+ const defaultTokenRequest = {
221
+ address: viem_1.zeroAddress,
222
+ amount: 1n,
178
223
  };
224
+ const isSameChain = (settlementLayers?.length === 1 && settlementLayers[0] === 'SAME_CHAIN') ||
225
+ (sourceChains.length === 1 && sourceChains[0].id === targetChain.id);
226
+ const tokenRequests = !initialTokenRequests || initialTokenRequests.length === 0
227
+ ? isSameChain
228
+ ? []
229
+ : [defaultTokenRequest]
230
+ : initialTokenRequests;
231
+ return tokenRequests;
179
232
  }
180
- async function prepareTransactionAsUserOp(config, chain, callInputs, signers) {
233
+ async function prepareTransactionAsUserOp(config, chain, callInputs, signers, gasLimit) {
181
234
  const publicClient = (0, viem_1.createPublicClient)({
182
235
  chain,
183
236
  transport: (0, utils_1.createTransport)(chain, config.provider),
@@ -191,9 +244,9 @@ async function prepareTransactionAsUserOp(config, chain, callInputs, signers) {
191
244
  const userOp = await bundlerClient.prepareUserOperation({
192
245
  account: validatorAccount,
193
246
  calls,
247
+ callGasLimit: gasLimit,
194
248
  });
195
249
  return {
196
- type: 'userop',
197
250
  userOp,
198
251
  hash: (0, account_abstraction_1.getUserOperationHash)({
199
252
  userOperation: userOp,
@@ -203,14 +256,19 @@ async function prepareTransactionAsUserOp(config, chain, callInputs, signers) {
203
256
  }),
204
257
  };
205
258
  }
206
- async function prepareTransactionAsIntent(config, sourceChains, targetChain, callInputs, gasLimit, tokenRequests, accountAddress, isSponsored, eip7702InitSignature) {
259
+ async function prepareTransactionAsIntent(config, sourceChains, targetChain, callInputs, gasLimit, tokenRequests, accountAddress, isSponsored, eip7702InitSignature, settlementLayers, sourceAssets, feeAsset, lockFunds) {
207
260
  const calls = parseCalls(callInputs, targetChain.id);
208
- const accountAccessList = sourceChains && sourceChains.length > 0
209
- ? {
210
- chainIds: sourceChains.map((chain) => chain.id),
261
+ const accountAccessList = createAccountAccessList(sourceChains, sourceAssets);
262
+ const { setupOps, delegations } = await getSetupOperationsAndDelegations(config, targetChain, accountAddress, eip7702InitSignature);
263
+ const getAccountType = (config) => {
264
+ if (config.account?.type === 'eoa') {
265
+ return 'EOA';
211
266
  }
212
- : undefined;
213
- const { setupOps, delegations } = await getSetupOperationsAndDelegations(config, accountAddress, eip7702InitSignature);
267
+ else {
268
+ return 'ERC7579';
269
+ }
270
+ };
271
+ const accountType = getAccountType(config);
214
272
  const metaIntent = {
215
273
  destinationChainId: targetChain.id,
216
274
  tokenTransfers: tokenRequests.map((tokenRequest) => ({
@@ -219,7 +277,7 @@ async function prepareTransactionAsIntent(config, sourceChains, targetChain, cal
219
277
  })),
220
278
  account: {
221
279
  address: accountAddress,
222
- accountType: 'ERC7579',
280
+ accountType: accountType,
223
281
  setupOps,
224
282
  delegations,
225
283
  },
@@ -227,34 +285,79 @@ async function prepareTransactionAsIntent(config, sourceChains, targetChain, cal
227
285
  destinationGasUnits: gasLimit,
228
286
  accountAccessList,
229
287
  options: {
230
- topupCompact: false,
288
+ topupCompact: lockFunds ?? false,
289
+ feeToken: feeAsset,
231
290
  sponsorSettings: {
232
291
  gasSponsored: isSponsored,
233
292
  bridgeFeesSponsored: isSponsored,
234
293
  swapFeesSponsored: isSponsored,
235
294
  },
295
+ settlementLayers,
236
296
  },
237
297
  };
238
- const orchestrator = getOrchestratorByChain(targetChain.id, config.rhinestoneApiKey, config.useDev);
298
+ const orchestrator = getOrchestratorByChain(targetChain.id, config.apiKey, config.endpointUrl);
239
299
  const intentRoute = await orchestrator.getIntentRoute(metaIntent);
240
- return {
241
- type: 'intent',
242
- intentRoute,
243
- };
300
+ return intentRoute;
244
301
  }
245
302
  async function signIntent(config, targetChain, intentOp, signers) {
303
+ if (config.account?.type === 'eoa') {
304
+ let signature;
305
+ let digest;
306
+ if (config.eoa?.signTypedData) {
307
+ const typedData = (0, permit2_1.getTypedData)(intentOp);
308
+ signature = await config.eoa.signTypedData(typedData);
309
+ }
310
+ else if (config.eoa?.sign) {
311
+ digest = (0, compact_1.getPermit2Digest)(intentOp);
312
+ signature = await config.eoa.sign({ hash: digest });
313
+ }
314
+ else if (config.eoa?.signMessage) {
315
+ digest = (0, compact_1.getPermit2Digest)(intentOp);
316
+ signature = await config.eoa.signMessage({
317
+ message: { raw: digest },
318
+ });
319
+ }
320
+ else {
321
+ throw new accounts_1.EoaSigningMethodNotConfiguredError('signTypedData, sign, or signMessage');
322
+ }
323
+ return signature;
324
+ }
246
325
  const validator = getValidator(config, signers);
247
326
  if (!validator) {
248
327
  throw new Error('Validator not available');
249
328
  }
250
329
  const ownerValidator = (0, validators_1.getOwnerValidator)(config);
251
330
  const isRoot = validator.address === ownerValidator.address;
252
- const typedData = (0, compact_1.getIntentData)(intentOp);
253
- const signature = await (0, accounts_1.getTypedDataPackedSignature)(config, signers, targetChain, {
331
+ const signature = await getIntentSignature(config, intentOp, signers, targetChain, validator, isRoot);
332
+ return signature;
333
+ }
334
+ async function getIntentSignature(config, intentOp, signers, targetChain, validator, isRoot) {
335
+ const withJitFlow = intentOp.elements.some((element) => element.mandate.qualifier.settlementContext?.usingJIT);
336
+ if (withJitFlow) {
337
+ return await getPermit2Signature(config, intentOp, signers, targetChain, validator, isRoot);
338
+ }
339
+ return await getCompactSignature(config, intentOp, signers, targetChain, validator, isRoot);
340
+ }
341
+ async function getPermit2Signature(config, intentOp, signers, targetChain, validator, isRoot) {
342
+ const typedData = (0, permit2_1.getTypedData)(intentOp);
343
+ return await signIntentTypedData(config, signers, targetChain, validator, isRoot, typedData);
344
+ }
345
+ async function getCompactSignature(config, intentOp, signers, targetChain, validator, isRoot) {
346
+ const typedData = (0, compact_1.getCompactTypedData)(intentOp);
347
+ return await signIntentTypedData(config, signers, targetChain, validator, isRoot, typedData);
348
+ }
349
+ async function signIntentTypedData(config, signers, targetChain, validator, isRoot, parameters) {
350
+ if ((0, core_1.supportsEip712)(validator)) {
351
+ return await (0, accounts_1.getTypedDataPackedSignature)(config, signers, targetChain, {
352
+ address: validator.address,
353
+ isRoot,
354
+ }, parameters);
355
+ }
356
+ const hash = (0, viem_1.hashTypedData)(parameters);
357
+ return await (0, accounts_1.getPackedSignature)(config, signers, targetChain, {
254
358
  address: validator.address,
255
359
  isRoot,
256
- }, typedData);
257
- return signature;
360
+ }, hash);
258
361
  }
259
362
  async function signUserOp(config, chain, signers, userOp) {
260
363
  const validator = getValidator(config, signers);
@@ -313,16 +416,20 @@ async function submitUserOp(config, chain, userOp, signature) {
313
416
  async function submitIntent(config, sourceChains, targetChain, intentOp, signature, authorizations) {
314
417
  return submitIntentInternal(config, sourceChains, targetChain, intentOp, signature, authorizations);
315
418
  }
316
- function getOrchestratorByChain(chainId, apiKey, useDev) {
317
- const orchestratorUrl = (useDev ?? false)
318
- ? consts_1.DEV_ORCHESTRATOR_URL
319
- : (0, registry_1.isTestnet)(chainId)
320
- ? consts_1.STAGING_ORCHESTRATOR_URL
321
- : consts_1.PROD_ORCHESTRATOR_URL;
322
- return (0, orchestrator_1.getOrchestrator)(apiKey, orchestratorUrl);
419
+ function getOrchestratorByChain(chainId, apiKey, orchestratorUrl) {
420
+ if (orchestratorUrl) {
421
+ return (0, orchestrator_1.getOrchestrator)(apiKey, orchestratorUrl);
422
+ }
423
+ const defaultOrchestratorUrl = (0, registry_1.isTestnet)(chainId)
424
+ ? consts_1.STAGING_ORCHESTRATOR_URL
425
+ : consts_1.PROD_ORCHESTRATOR_URL;
426
+ return (0, orchestrator_1.getOrchestrator)(apiKey, defaultOrchestratorUrl);
323
427
  }
324
- async function submitIntentInternal(config, sourceChains, targetChain, intentOp, signature, authorizations) {
325
- const signedIntentOp = {
428
+ async function simulateIntent(config, sourceChains, targetChain, intentOp, signature, authorizations) {
429
+ return simulateIntentInternal(config, sourceChains, targetChain, intentOp, signature, authorizations);
430
+ }
431
+ function createSignedIntentOp(intentOp, signature, authorizations) {
432
+ return {
326
433
  ...intentOp,
327
434
  originSignatures: Array(intentOp.elements.length).fill(signature),
328
435
  destinationSignature: signature,
@@ -337,7 +444,10 @@ async function submitIntentInternal(config, sourceChains, targetChain, intentOp,
337
444
  }))
338
445
  : undefined,
339
446
  };
340
- const orchestrator = getOrchestratorByChain(targetChain.id, config.rhinestoneApiKey, config.useDev);
447
+ }
448
+ async function submitIntentInternal(config, sourceChains, targetChain, intentOp, signature, authorizations) {
449
+ const signedIntentOp = createSignedIntentOp(intentOp, signature, authorizations);
450
+ const orchestrator = getOrchestratorByChain(targetChain.id, config.apiKey, config.endpointUrl);
341
451
  const intentResults = await orchestrator.submitIntent(signedIntentOp);
342
452
  return {
343
453
  type: 'intent',
@@ -346,9 +456,15 @@ async function submitIntentInternal(config, sourceChains, targetChain, intentOp,
346
456
  targetChain: targetChain.id,
347
457
  };
348
458
  }
459
+ async function simulateIntentInternal(config, _sourceChains, targetChain, intentOp, signature, authorizations) {
460
+ const signedIntentOp = createSignedIntentOp(intentOp, signature, authorizations);
461
+ const orchestrator = getOrchestratorByChain(targetChain.id, config.apiKey, config.endpointUrl);
462
+ const simulationResults = await orchestrator.simulateIntent(signedIntentOp);
463
+ return simulationResults;
464
+ }
349
465
  async function getValidatorAccount(config, signers, publicClient, chain) {
350
466
  if (!signers) {
351
- return undefined;
467
+ return (0, accounts_1.getSmartAccount)(config, publicClient, chain);
352
468
  }
353
469
  // Owners
354
470
  const withOwner = signers.type === 'owner' ? signers : null;
@@ -409,9 +525,28 @@ function parseCalls(calls, chainId) {
409
525
  to: (0, registry_1.resolveTokenAddress)(call.to, chainId),
410
526
  }));
411
527
  }
412
- async function getSetupOperationsAndDelegations(config, accountAddress, eip7702InitSignature) {
528
+ function createAccountAccessList(sourceChains, sourceAssets) {
529
+ if (!sourceChains && !sourceAssets)
530
+ return undefined;
531
+ const chainIds = sourceChains?.map((chain) => chain.id);
532
+ if (!sourceAssets) {
533
+ return { chainIds };
534
+ }
535
+ if (Array.isArray(sourceAssets)) {
536
+ return chainIds
537
+ ? { chainIds, tokens: sourceAssets }
538
+ : { tokens: sourceAssets };
539
+ }
540
+ return { chainTokens: sourceAssets };
541
+ }
542
+ async function getSetupOperationsAndDelegations(config, chain, accountAddress, eip7702InitSignature) {
413
543
  const initCode = (0, accounts_1.getInitCode)(config);
414
- if (config.eoa) {
544
+ if (config.account?.type === 'eoa') {
545
+ return {
546
+ setupOps: [],
547
+ };
548
+ }
549
+ else if ((0, accounts_1.is7702)(config)) {
415
550
  // EIP-7702 initialization is only needed for EOA accounts
416
551
  if (!eip7702InitSignature || eip7702InitSignature === '0x') {
417
552
  throw new Error('EIP-7702 initialization signature is required for EOA accounts');
@@ -432,6 +567,12 @@ async function getSetupOperationsAndDelegations(config, accountAddress, eip7702I
432
567
  };
433
568
  }
434
569
  else if (initCode) {
570
+ const isAccountDeployed = await (0, accounts_1.isDeployed)(config, chain);
571
+ if (isAccountDeployed) {
572
+ return {
573
+ setupOps: [],
574
+ };
575
+ }
435
576
  // Contract account with init code
436
577
  return {
437
578
  setupOps: [
@@ -449,3 +590,19 @@ async function getSetupOperationsAndDelegations(config, accountAddress, eip7702I
449
590
  };
450
591
  }
451
592
  }
593
+ function validateTokenSymbols(chain, tokenAddressOrSymbols) {
594
+ function validateTokenSymbol(chain, addressOrSymbol) {
595
+ // Address
596
+ if ((0, viem_1.isAddress)(addressOrSymbol, { strict: false })) {
597
+ return true;
598
+ }
599
+ // Token symbol
600
+ const address = (0, registry_1.getTokenAddress)(addressOrSymbol, chain.id);
601
+ return (0, viem_1.isAddress)(address, { strict: false });
602
+ }
603
+ for (const addressOrSymbol of tokenAddressOrSymbols) {
604
+ if (!validateTokenSymbol(chain, addressOrSymbol)) {
605
+ throw new Error(`Invalid token symbol: ${addressOrSymbol}`);
606
+ }
607
+ }
608
+ }