@charterlabs/rhinestone-sdk 0.2.7-dev.3 → 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/index.d.ts +5 -0
  9. package/dist/src/accounts/json-rpc/index.d.ts.map +1 -0
  10. package/dist/src/accounts/json-rpc/index.js +16 -0
  11. package/dist/src/accounts/json-rpc/providers.d.ts +4 -0
  12. package/dist/src/accounts/json-rpc/providers.d.ts.map +1 -0
  13. package/dist/src/accounts/json-rpc/providers.js +52 -0
  14. package/dist/src/accounts/kernel.d.ts +1 -1
  15. package/dist/src/accounts/kernel.d.ts.map +1 -1
  16. package/dist/src/accounts/kernel.js +29 -1
  17. package/dist/src/accounts/kernel.test.js +35 -8
  18. package/dist/src/accounts/nexus.d.ts +4 -3
  19. package/dist/src/accounts/nexus.d.ts.map +1 -1
  20. package/dist/src/accounts/nexus.js +82 -14
  21. package/dist/src/accounts/nexus.test.js +33 -6
  22. package/dist/src/accounts/safe.d.ts.map +1 -1
  23. package/dist/src/accounts/safe.js +85 -53
  24. package/dist/src/accounts/safe.test.js +33 -6
  25. package/dist/src/accounts/signing/common.d.ts +4 -4
  26. package/dist/src/accounts/signing/common.d.ts.map +1 -1
  27. package/dist/src/accounts/signing/common.js +21 -9
  28. package/dist/src/accounts/signing/message.d.ts +1 -1
  29. package/dist/src/accounts/signing/message.d.ts.map +1 -1
  30. package/dist/src/accounts/signing/message.js +6 -6
  31. package/dist/src/accounts/signing/passkeys.d.ts +8 -1
  32. package/dist/src/accounts/signing/passkeys.d.ts.map +1 -1
  33. package/dist/src/accounts/signing/passkeys.js +35 -0
  34. package/dist/src/accounts/signing/passkeys.test.js +15 -0
  35. package/dist/src/accounts/signing/typedData.d.ts.map +1 -1
  36. package/dist/src/accounts/signing/typedData.js +2 -2
  37. package/dist/src/accounts/startale.test.js +0 -4
  38. package/dist/src/accounts/utils.d.ts +4 -4
  39. package/dist/src/accounts/utils.d.ts.map +1 -1
  40. package/dist/src/accounts/utils.js +3 -40
  41. package/dist/src/accounts/walletClient.d.ts +7 -0
  42. package/dist/src/accounts/walletClient.d.ts.map +1 -0
  43. package/dist/src/accounts/walletClient.js +38 -0
  44. package/dist/src/actions/compact.d.ts +13 -0
  45. package/dist/src/actions/compact.d.ts.map +1 -0
  46. package/dist/src/actions/compact.js +210 -0
  47. package/dist/src/actions/ecdsa.d.ts +35 -0
  48. package/dist/src/actions/ecdsa.d.ts.map +1 -0
  49. package/dist/src/actions/ecdsa.js +114 -0
  50. package/dist/src/actions/ecdsa.test.d.ts +2 -0
  51. package/dist/src/actions/ecdsa.test.d.ts.map +1 -0
  52. package/dist/src/actions/ecdsa.test.js +99 -0
  53. package/dist/src/actions/index.d.ts +23 -166
  54. package/dist/src/actions/index.d.ts.map +1 -1
  55. package/dist/src/actions/index.js +25 -544
  56. package/dist/src/actions/mfa.d.ts +37 -0
  57. package/dist/src/actions/mfa.d.ts.map +1 -0
  58. package/dist/src/actions/mfa.js +133 -0
  59. package/dist/src/actions/passkeys.d.ts +37 -0
  60. package/dist/src/actions/passkeys.d.ts.map +1 -0
  61. package/dist/src/actions/passkeys.js +129 -0
  62. package/dist/src/actions/passkeys.test.d.ts +2 -0
  63. package/dist/src/actions/passkeys.test.d.ts.map +1 -0
  64. package/dist/src/actions/passkeys.test.js +54 -0
  65. package/dist/src/actions/recovery.d.ts +33 -0
  66. package/dist/src/actions/recovery.d.ts.map +1 -0
  67. package/dist/src/actions/recovery.js +193 -0
  68. package/dist/src/actions/recovery.test.d.ts +2 -0
  69. package/dist/src/actions/recovery.test.d.ts.map +1 -0
  70. package/dist/src/actions/recovery.test.js +168 -0
  71. package/dist/src/errors/index.d.ts +5 -0
  72. package/dist/src/errors/index.d.ts.map +1 -0
  73. package/dist/src/errors/index.js +35 -0
  74. package/dist/src/execution/compact.d.ts +24 -8
  75. package/dist/src/execution/compact.d.ts.map +1 -1
  76. package/dist/src/execution/compact.js +29 -103
  77. package/dist/src/execution/error.d.ts +2 -9
  78. package/dist/src/execution/error.d.ts.map +1 -1
  79. package/dist/src/execution/error.js +4 -13
  80. package/dist/src/execution/index.d.ts +33 -22
  81. package/dist/src/execution/index.d.ts.map +1 -1
  82. package/dist/src/execution/index.js +57 -41
  83. package/dist/src/execution/permit2.d.ts +148 -0
  84. package/dist/src/execution/permit2.d.ts.map +1 -0
  85. package/dist/src/execution/permit2.js +282 -0
  86. package/dist/src/execution/smart-session.d.ts +3 -3
  87. package/dist/src/execution/smart-session.d.ts.map +1 -1
  88. package/dist/src/execution/types.d.ts +35 -0
  89. package/dist/src/execution/types.d.ts.map +1 -0
  90. package/dist/src/execution/types.js +2 -0
  91. package/dist/src/execution/utils.d.ts +36 -28
  92. package/dist/src/execution/utils.d.ts.map +1 -1
  93. package/dist/src/execution/utils.js +245 -91
  94. package/dist/src/index.d.ts +37 -19
  95. package/dist/src/index.d.ts.map +1 -1
  96. package/dist/src/index.js +130 -66
  97. package/dist/src/modules/common.d.ts +10 -4
  98. package/dist/src/modules/common.d.ts.map +1 -1
  99. package/dist/src/modules/common.js +22 -1
  100. package/dist/src/modules/index.d.ts +3 -2
  101. package/dist/src/modules/index.d.ts.map +1 -1
  102. package/dist/src/modules/index.js +16 -13
  103. package/dist/src/modules/index.test.js +8 -11
  104. package/dist/src/modules/read.d.ts.map +1 -1
  105. package/dist/src/modules/read.js +4 -0
  106. package/dist/src/modules/validators/core.d.ts +5 -3
  107. package/dist/src/modules/validators/core.d.ts.map +1 -1
  108. package/dist/src/modules/validators/core.js +29 -10
  109. package/dist/src/modules/validators/core.test.js +4 -4
  110. package/dist/src/modules/validators/smart-sessions.test.js +0 -3
  111. package/dist/src/modules/validators/webauthn-contract.d.ts.map +1 -1
  112. package/dist/src/orchestrator/client.d.ts +2 -1
  113. package/dist/src/orchestrator/client.d.ts.map +1 -1
  114. package/dist/src/orchestrator/client.js +36 -14
  115. package/dist/src/orchestrator/consts.d.ts +1 -2
  116. package/dist/src/orchestrator/consts.d.ts.map +1 -1
  117. package/dist/src/orchestrator/consts.js +1 -3
  118. package/dist/src/orchestrator/registry.d.ts +3 -25
  119. package/dist/src/orchestrator/registry.d.ts.map +1 -1
  120. package/dist/src/orchestrator/registry.js +82 -46
  121. package/dist/src/orchestrator/registry.test.js +7 -7
  122. package/dist/src/orchestrator/types.d.ts +35 -31
  123. package/dist/src/orchestrator/types.d.ts.map +1 -1
  124. package/dist/src/types.d.ts +64 -9
  125. package/dist/src/types.d.ts.map +1 -1
  126. package/package.json +73 -2
  127. package/dist/src/actions/index.test.d.ts +0 -2
  128. package/dist/src/actions/index.test.d.ts.map +0 -1
  129. package/dist/src/actions/index.test.js +0 -302
  130. package/dist/src/orchestrator/registry.json +0 -365
@@ -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,9 +133,8 @@ 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) {
@@ -135,25 +164,26 @@ async function signAuthorizationsInternal(config, data) {
135
164
  return authorizations;
136
165
  }
137
166
  async function submitTransaction(config, signedTransaction, authorizations) {
138
- const { data, transaction, signature } = signedTransaction;
167
+ const { intentRoute, transaction, signature } = signedTransaction;
139
168
  const { sourceChains, targetChain } = getTransactionParams(transaction);
140
- const asUserOp = data.type === 'userop';
141
- if (asUserOp) {
142
- const chain = targetChain;
143
- const userOp = data.userOp;
144
- if (!userOp) {
145
- throw new error_1.UserOperationRequiredForSmartSessionsError();
146
- }
147
- // Smart sessions require a UserOp flow
148
- return await submitUserOp(config, chain, userOp, signature);
149
- }
150
- else {
151
- const intentOp = data.intentRoute.intentOp;
152
- if (!intentOp) {
153
- throw new error_1.OrderPathRequiredForIntentsError();
154
- }
155
- 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();
156
185
  }
186
+ return await simulateIntent(config, sourceChains, targetChain, intentOp, signature, authorizations);
157
187
  }
158
188
  function getTransactionParams(transaction) {
159
189
  const sourceChains = 'chain' in transaction ? [transaction.chain] : transaction.sourceChains;
@@ -162,15 +192,12 @@ function getTransactionParams(transaction) {
162
192
  const signers = transaction.signers;
163
193
  const eip7702InitSignature = transaction.eip7702InitSignature;
164
194
  const sponsored = transaction.sponsored;
165
- // Across requires passing some value to repay the solvers
166
- const tokenRequests = !initialTokenRequests || initialTokenRequests.length === 0
167
- ? [
168
- {
169
- address: viem_1.zeroAddress,
170
- amount: 1n,
171
- },
172
- ]
173
- : 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);
174
201
  return {
175
202
  sourceChains,
176
203
  targetChain,
@@ -178,9 +205,32 @@ function getTransactionParams(transaction) {
178
205
  signers,
179
206
  sponsored,
180
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,
181
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;
182
232
  }
183
- async function prepareTransactionAsUserOp(config, chain, callInputs, signers) {
233
+ async function prepareTransactionAsUserOp(config, chain, callInputs, signers, gasLimit) {
184
234
  const publicClient = (0, viem_1.createPublicClient)({
185
235
  chain,
186
236
  transport: (0, utils_1.createTransport)(chain, config.provider),
@@ -194,9 +244,9 @@ async function prepareTransactionAsUserOp(config, chain, callInputs, signers) {
194
244
  const userOp = await bundlerClient.prepareUserOperation({
195
245
  account: validatorAccount,
196
246
  calls,
247
+ callGasLimit: gasLimit,
197
248
  });
198
249
  return {
199
- type: 'userop',
200
250
  userOp,
201
251
  hash: (0, account_abstraction_1.getUserOperationHash)({
202
252
  userOperation: userOp,
@@ -206,14 +256,19 @@ async function prepareTransactionAsUserOp(config, chain, callInputs, signers) {
206
256
  }),
207
257
  };
208
258
  }
209
- 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) {
210
260
  const calls = parseCalls(callInputs, targetChain.id);
211
- const accountAccessList = sourceChains && sourceChains.length > 0
212
- ? {
213
- 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';
266
+ }
267
+ else {
268
+ return 'ERC7579';
214
269
  }
215
- : undefined;
216
- const { setupOps, delegations } = await getSetupOperationsAndDelegations(config, accountAddress, eip7702InitSignature);
270
+ };
271
+ const accountType = getAccountType(config);
217
272
  const metaIntent = {
218
273
  destinationChainId: targetChain.id,
219
274
  tokenTransfers: tokenRequests.map((tokenRequest) => ({
@@ -222,7 +277,7 @@ async function prepareTransactionAsIntent(config, sourceChains, targetChain, cal
222
277
  })),
223
278
  account: {
224
279
  address: accountAddress,
225
- accountType: 'ERC7579',
280
+ accountType: accountType,
226
281
  setupOps,
227
282
  delegations,
228
283
  },
@@ -230,34 +285,79 @@ async function prepareTransactionAsIntent(config, sourceChains, targetChain, cal
230
285
  destinationGasUnits: gasLimit,
231
286
  accountAccessList,
232
287
  options: {
233
- topupCompact: false,
288
+ topupCompact: lockFunds ?? false,
289
+ feeToken: feeAsset,
234
290
  sponsorSettings: {
235
291
  gasSponsored: isSponsored,
236
292
  bridgeFeesSponsored: isSponsored,
237
293
  swapFeesSponsored: isSponsored,
238
294
  },
295
+ settlementLayers,
239
296
  },
240
297
  };
241
- const orchestrator = getOrchestratorByChain(targetChain.id, config.rhinestoneApiKey, config.useDev);
298
+ const orchestrator = getOrchestratorByChain(targetChain.id, config.apiKey, config.endpointUrl);
242
299
  const intentRoute = await orchestrator.getIntentRoute(metaIntent);
243
- return {
244
- type: 'intent',
245
- intentRoute,
246
- };
300
+ return intentRoute;
247
301
  }
248
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
+ }
249
325
  const validator = getValidator(config, signers);
250
326
  if (!validator) {
251
327
  throw new Error('Validator not available');
252
328
  }
253
329
  const ownerValidator = (0, validators_1.getOwnerValidator)(config);
254
330
  const isRoot = validator.address === ownerValidator.address;
255
- const typedData = (0, compact_1.getIntentData)(intentOp);
256
- 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, {
257
358
  address: validator.address,
258
359
  isRoot,
259
- }, typedData);
260
- return signature;
360
+ }, hash);
261
361
  }
262
362
  async function signUserOp(config, chain, signers, userOp) {
263
363
  const validator = getValidator(config, signers);
@@ -316,16 +416,20 @@ async function submitUserOp(config, chain, userOp, signature) {
316
416
  async function submitIntent(config, sourceChains, targetChain, intentOp, signature, authorizations) {
317
417
  return submitIntentInternal(config, sourceChains, targetChain, intentOp, signature, authorizations);
318
418
  }
319
- function getOrchestratorByChain(chainId, apiKey, useDev) {
320
- const orchestratorUrl = (useDev ?? false)
321
- ? consts_1.DEV_ORCHESTRATOR_URL
322
- : (0, registry_1.isTestnet)(chainId)
323
- ? consts_1.STAGING_ORCHESTRATOR_URL
324
- : consts_1.PROD_ORCHESTRATOR_URL;
325
- 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);
326
427
  }
327
- async function submitIntentInternal(config, sourceChains, targetChain, intentOp, signature, authorizations) {
328
- 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 {
329
433
  ...intentOp,
330
434
  originSignatures: Array(intentOp.elements.length).fill(signature),
331
435
  destinationSignature: signature,
@@ -340,7 +444,10 @@ async function submitIntentInternal(config, sourceChains, targetChain, intentOp,
340
444
  }))
341
445
  : undefined,
342
446
  };
343
- 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);
344
451
  const intentResults = await orchestrator.submitIntent(signedIntentOp);
345
452
  return {
346
453
  type: 'intent',
@@ -349,9 +456,15 @@ async function submitIntentInternal(config, sourceChains, targetChain, intentOp,
349
456
  targetChain: targetChain.id,
350
457
  };
351
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
+ }
352
465
  async function getValidatorAccount(config, signers, publicClient, chain) {
353
466
  if (!signers) {
354
- return undefined;
467
+ return (0, accounts_1.getSmartAccount)(config, publicClient, chain);
355
468
  }
356
469
  // Owners
357
470
  const withOwner = signers.type === 'owner' ? signers : null;
@@ -412,9 +525,28 @@ function parseCalls(calls, chainId) {
412
525
  to: (0, registry_1.resolveTokenAddress)(call.to, chainId),
413
526
  }));
414
527
  }
415
- 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) {
416
543
  const initCode = (0, accounts_1.getInitCode)(config);
417
- if (config.eoa) {
544
+ if (config.account?.type === 'eoa') {
545
+ return {
546
+ setupOps: [],
547
+ };
548
+ }
549
+ else if ((0, accounts_1.is7702)(config)) {
418
550
  // EIP-7702 initialization is only needed for EOA accounts
419
551
  if (!eip7702InitSignature || eip7702InitSignature === '0x') {
420
552
  throw new Error('EIP-7702 initialization signature is required for EOA accounts');
@@ -435,6 +567,12 @@ async function getSetupOperationsAndDelegations(config, accountAddress, eip7702I
435
567
  };
436
568
  }
437
569
  else if (initCode) {
570
+ const isAccountDeployed = await (0, accounts_1.isDeployed)(config, chain);
571
+ if (isAccountDeployed) {
572
+ return {
573
+ setupOps: [],
574
+ };
575
+ }
438
576
  // Contract account with init code
439
577
  return {
440
578
  setupOps: [
@@ -452,3 +590,19 @@ async function getSetupOperationsAndDelegations(config, accountAddress, eip7702I
452
590
  };
453
591
  }
454
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
+ }