@rhinestone/sdk 1.0.0-alpha.2 → 1.0.0-alpha.21

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 (136) hide show
  1. package/dist/src/accounts/custom.d.ts +18 -0
  2. package/dist/src/accounts/custom.d.ts.map +1 -0
  3. package/dist/src/accounts/custom.js +121 -0
  4. package/dist/src/accounts/custom.test.d.ts +2 -0
  5. package/dist/src/accounts/custom.test.d.ts.map +1 -0
  6. package/dist/src/accounts/custom.test.js +64 -0
  7. package/dist/src/accounts/error.d.ts.map +1 -1
  8. package/dist/src/accounts/error.js +2 -0
  9. package/dist/src/accounts/index.d.ts +22 -13
  10. package/dist/src/accounts/index.d.ts.map +1 -1
  11. package/dist/src/accounts/index.js +192 -186
  12. package/dist/src/accounts/index.test.js +3 -3
  13. package/dist/src/accounts/json-rpc/index.d.ts +5 -0
  14. package/dist/src/accounts/json-rpc/index.d.ts.map +1 -0
  15. package/dist/src/accounts/json-rpc/index.js +16 -0
  16. package/dist/src/accounts/json-rpc/index.test.d.ts +2 -0
  17. package/dist/src/accounts/json-rpc/index.test.d.ts.map +1 -0
  18. package/dist/src/accounts/json-rpc/index.test.js +16 -0
  19. package/dist/src/accounts/json-rpc/providers.d.ts +4 -0
  20. package/dist/src/accounts/json-rpc/providers.d.ts.map +1 -0
  21. package/dist/src/accounts/json-rpc/providers.js +14 -0
  22. package/dist/src/accounts/json-rpc/providers.test.d.ts +2 -0
  23. package/dist/src/accounts/json-rpc/providers.test.d.ts.map +1 -0
  24. package/dist/src/accounts/json-rpc/providers.test.js +15 -0
  25. package/dist/src/accounts/kernel.d.ts +9 -10
  26. package/dist/src/accounts/kernel.d.ts.map +1 -1
  27. package/dist/src/accounts/kernel.js +3 -14
  28. package/dist/src/accounts/kernel.test.js +10 -15
  29. package/dist/src/accounts/nexus.d.ts +14 -13
  30. package/dist/src/accounts/nexus.d.ts.map +1 -1
  31. package/dist/src/accounts/nexus.js +121 -93
  32. package/dist/src/accounts/nexus.test.js +13 -14
  33. package/dist/src/accounts/safe.d.ts +5 -7
  34. package/dist/src/accounts/safe.d.ts.map +1 -1
  35. package/dist/src/accounts/safe.js +25 -35
  36. package/dist/src/accounts/safe.test.js +9 -10
  37. package/dist/src/accounts/signing/common.d.ts +27 -0
  38. package/dist/src/accounts/signing/common.d.ts.map +1 -0
  39. package/dist/src/accounts/signing/common.js +142 -0
  40. package/dist/src/accounts/signing/message.d.ts +5 -0
  41. package/dist/src/accounts/signing/message.d.ts.map +1 -0
  42. package/dist/src/accounts/signing/message.js +47 -0
  43. package/dist/src/accounts/signing/passkeys.d.ts +29 -0
  44. package/dist/src/accounts/signing/passkeys.d.ts.map +1 -0
  45. package/dist/src/accounts/signing/passkeys.js +90 -0
  46. package/dist/src/accounts/signing/passkeys.test.d.ts +2 -0
  47. package/dist/src/accounts/signing/passkeys.test.d.ts.map +1 -0
  48. package/dist/src/accounts/signing/passkeys.test.js +73 -0
  49. package/dist/src/accounts/signing/typedData.d.ts +5 -0
  50. package/dist/src/accounts/signing/typedData.d.ts.map +1 -0
  51. package/dist/src/accounts/signing/typedData.js +35 -0
  52. package/dist/src/accounts/startale.d.ts +20 -0
  53. package/dist/src/accounts/startale.d.ts.map +1 -0
  54. package/dist/src/accounts/startale.js +100 -0
  55. package/dist/src/accounts/startale.test.d.ts +2 -0
  56. package/dist/src/accounts/startale.test.d.ts.map +1 -0
  57. package/dist/src/accounts/startale.test.js +96 -0
  58. package/dist/src/accounts/utils.d.ts +2 -1
  59. package/dist/src/accounts/utils.d.ts.map +1 -1
  60. package/dist/src/accounts/utils.js +7 -0
  61. package/dist/src/actions/index.d.ts +145 -7
  62. package/dist/src/actions/index.d.ts.map +1 -1
  63. package/dist/src/actions/index.js +373 -23
  64. package/dist/src/actions/index.test.js +35 -17
  65. package/dist/src/actions/smart-session.d.ts +8 -2
  66. package/dist/src/actions/smart-session.d.ts.map +1 -1
  67. package/dist/src/actions/smart-session.js +6 -0
  68. package/dist/src/execution/compact.d.ts +130 -3
  69. package/dist/src/execution/compact.d.ts.map +1 -1
  70. package/dist/src/execution/compact.js +94 -1
  71. package/dist/src/execution/error.d.ts +2 -9
  72. package/dist/src/execution/error.d.ts.map +1 -1
  73. package/dist/src/execution/error.js +4 -13
  74. package/dist/src/execution/index.d.ts +3 -4
  75. package/dist/src/execution/index.d.ts.map +1 -1
  76. package/dist/src/execution/index.js +35 -80
  77. package/dist/src/execution/smart-session.d.ts +1 -1
  78. package/dist/src/execution/smart-session.d.ts.map +1 -1
  79. package/dist/src/execution/smart-session.js +12 -17
  80. package/dist/src/execution/utils.d.ts +19 -14
  81. package/dist/src/execution/utils.d.ts.map +1 -1
  82. package/dist/src/execution/utils.js +222 -97
  83. package/dist/src/index.d.ts +17 -15
  84. package/dist/src/index.d.ts.map +1 -1
  85. package/dist/src/index.js +108 -21
  86. package/dist/src/modules/index.d.ts +3 -22
  87. package/dist/src/modules/index.d.ts.map +1 -1
  88. package/dist/src/modules/index.js +5 -65
  89. package/dist/src/modules/index.test.js +3 -17
  90. package/dist/src/modules/omni-account.d.ts +2 -4
  91. package/dist/src/modules/omni-account.d.ts.map +1 -1
  92. package/dist/src/modules/omni-account.js +4 -8
  93. package/dist/src/modules/read.d.ts +5 -6
  94. package/dist/src/modules/read.d.ts.map +1 -1
  95. package/dist/src/modules/read.js +7 -37
  96. package/dist/src/modules/validators/core.d.ts +8 -8
  97. package/dist/src/modules/validators/core.d.ts.map +1 -1
  98. package/dist/src/modules/validators/core.js +126 -42
  99. package/dist/src/modules/validators/core.test.js +7 -7
  100. package/dist/src/modules/validators/smart-sessions.d.ts +3 -3
  101. package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
  102. package/dist/src/modules/validators/smart-sessions.js +10 -9
  103. package/dist/src/modules/validators/smart-sessions.test.js +4 -4
  104. package/dist/src/orchestrator/client.d.ts +5 -3
  105. package/dist/src/orchestrator/client.d.ts.map +1 -1
  106. package/dist/src/orchestrator/client.js +159 -95
  107. package/dist/src/orchestrator/consts.d.ts +3 -2
  108. package/dist/src/orchestrator/consts.d.ts.map +1 -1
  109. package/dist/src/orchestrator/consts.js +4 -2
  110. package/dist/src/orchestrator/index.d.ts +3 -4
  111. package/dist/src/orchestrator/index.d.ts.map +1 -1
  112. package/dist/src/orchestrator/index.js +1 -9
  113. package/dist/src/orchestrator/registry.d.ts +10 -13
  114. package/dist/src/orchestrator/registry.d.ts.map +1 -1
  115. package/dist/src/orchestrator/registry.js +75 -395
  116. package/dist/src/orchestrator/registry.test.d.ts.map +1 -0
  117. package/dist/src/orchestrator/registry.test.js +137 -0
  118. package/dist/src/orchestrator/types.d.ts +78 -16
  119. package/dist/src/orchestrator/types.d.ts.map +1 -1
  120. package/dist/src/orchestrator/utils.d.ts +1 -3
  121. package/dist/src/orchestrator/utils.d.ts.map +1 -1
  122. package/dist/src/orchestrator/utils.js +0 -102
  123. package/dist/src/types.d.ts +69 -26
  124. package/dist/src/types.d.ts.map +1 -1
  125. package/dist/test/consts.d.ts +2 -2
  126. package/dist/test/consts.d.ts.map +1 -1
  127. package/package.json +2 -1
  128. package/dist/src/actions/registry.d.ts +0 -7
  129. package/dist/src/actions/registry.d.ts.map +0 -1
  130. package/dist/src/actions/registry.js +0 -7
  131. package/dist/src/actions/registry.test.d.ts.map +0 -1
  132. package/dist/src/actions/registry.test.js +0 -25
  133. package/dist/src/modules/registry.d.ts +0 -13
  134. package/dist/src/modules/registry.d.ts.map +0 -1
  135. package/dist/src/modules/registry.js +0 -67
  136. /package/dist/src/{actions → orchestrator}/registry.test.d.ts +0 -0
@@ -1,26 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SessionChainRequiredError = exports.OrderPathRequiredForIntentsError = exports.UserOperationRequiredForSmartSessionsError = exports.SourceTargetChainMismatchError = exports.SourceChainRequiredForSmartSessionsError = exports.ExecutionError = exports.IntentFailedError = exports.isExecutionError = void 0;
3
+ exports.SessionChainRequiredError = exports.OrderPathRequiredForIntentsError = exports.UserOperationRequiredForSmartSessionsError = exports.SourceChainsNotAvailableForUserOpFlowError = exports.ExecutionError = exports.IntentFailedError = exports.isExecutionError = void 0;
4
4
  exports.sendTransaction = sendTransaction;
5
5
  exports.waitForExecution = waitForExecution;
6
6
  exports.getMaxSpendableAmount = getMaxSpendableAmount;
7
7
  exports.getPortfolio = getPortfolio;
8
- exports.deposit = deposit;
9
8
  const viem_1 = require("viem");
10
9
  const chains_1 = require("viem/chains");
11
10
  const accounts_1 = require("../accounts");
12
11
  const utils_1 = require("../accounts/utils");
13
12
  const orchestrator_1 = require("../orchestrator");
14
13
  const registry_1 = require("../orchestrator/registry");
15
- const compact_1 = require("./compact");
16
14
  const error_1 = require("./error");
17
15
  Object.defineProperty(exports, "ExecutionError", { enumerable: true, get: function () { return error_1.ExecutionError; } });
18
16
  Object.defineProperty(exports, "IntentFailedError", { enumerable: true, get: function () { return error_1.IntentFailedError; } });
19
17
  Object.defineProperty(exports, "isExecutionError", { enumerable: true, get: function () { return error_1.isExecutionError; } });
20
18
  Object.defineProperty(exports, "OrderPathRequiredForIntentsError", { enumerable: true, get: function () { return error_1.OrderPathRequiredForIntentsError; } });
21
19
  Object.defineProperty(exports, "SessionChainRequiredError", { enumerable: true, get: function () { return error_1.SessionChainRequiredError; } });
22
- Object.defineProperty(exports, "SourceChainRequiredForSmartSessionsError", { enumerable: true, get: function () { return error_1.SourceChainRequiredForSmartSessionsError; } });
23
- Object.defineProperty(exports, "SourceTargetChainMismatchError", { enumerable: true, get: function () { return error_1.SourceTargetChainMismatchError; } });
20
+ Object.defineProperty(exports, "SourceChainsNotAvailableForUserOpFlowError", { enumerable: true, get: function () { return error_1.SourceChainsNotAvailableForUserOpFlowError; } });
24
21
  Object.defineProperty(exports, "UserOperationRequiredForSmartSessionsError", { enumerable: true, get: function () { return error_1.UserOperationRequiredForSmartSessionsError; } });
25
22
  const smart_session_1 = require("./smart-session");
26
23
  const utils_2 = require("./utils");
@@ -28,23 +25,17 @@ const POLLING_INTERVAL = 500;
28
25
  async function sendTransaction(config, transaction) {
29
26
  if ('chain' in transaction) {
30
27
  // Same-chain transaction
31
- return await sendTransactionInternal(config, transaction.chain, transaction.chain, transaction.calls, transaction.gasLimit, transaction.tokenRequests, transaction.signers);
28
+ return await sendTransactionInternal(config, [transaction.chain], transaction.chain, transaction.calls, transaction.gasLimit, transaction.tokenRequests, transaction.signers, transaction.sponsored);
32
29
  }
33
30
  else {
34
31
  // Cross-chain transaction
35
- return await sendTransactionInternal(config, transaction.sourceChain, transaction.targetChain, transaction.calls, transaction.gasLimit, transaction.tokenRequests, transaction.signers);
32
+ return await sendTransactionInternal(config, transaction.sourceChains || [], transaction.targetChain, transaction.calls, transaction.gasLimit, transaction.tokenRequests, transaction.signers, transaction.sponsored);
36
33
  }
37
34
  }
38
- async function sendTransactionInternal(config, sourceChain, targetChain, calls, gasLimit, initialTokenRequests, signers) {
39
- if (sourceChain) {
40
- const isAccountDeployed = await (0, accounts_1.isDeployed)(sourceChain, config);
41
- if (!isAccountDeployed) {
42
- await (0, accounts_1.deploySource)(sourceChain, config);
43
- }
44
- }
35
+ async function sendTransactionInternal(config, sourceChains, targetChain, callInputs, gasLimit, initialTokenRequests, signers, sponsored) {
45
36
  const accountAddress = (0, accounts_1.getAddress)(config);
46
37
  // Across requires passing some value to repay the solvers
47
- const tokenRequests = initialTokenRequests.length === 0
38
+ const tokenRequests = !initialTokenRequests || initialTokenRequests.length === 0
48
39
  ? [
49
40
  {
50
41
  address: viem_1.zeroAddress,
@@ -54,34 +45,34 @@ async function sendTransactionInternal(config, sourceChain, targetChain, calls,
54
45
  : initialTokenRequests;
55
46
  const asUserOp = signers?.type === 'guardians' || signers?.type === 'session';
56
47
  if (asUserOp) {
57
- if (!sourceChain) {
58
- throw new error_1.SourceChainRequiredForSmartSessionsError();
59
- }
60
48
  const withSession = signers?.type === 'session' ? signers.session : null;
61
49
  if (withSession) {
62
- await (0, smart_session_1.enableSmartSession)(sourceChain, config, withSession);
50
+ await (0, smart_session_1.enableSmartSession)(targetChain, config, withSession);
63
51
  }
64
52
  // Smart sessions require a UserOp flow
65
- return await sendTransactionAsUserOp(config, sourceChain, targetChain, calls, signers);
53
+ return await sendTransactionAsUserOp(config, targetChain, callInputs, signers);
66
54
  }
67
55
  else {
68
- return await sendTransactionAsIntent(config, sourceChain, targetChain, calls, gasLimit, tokenRequests, accountAddress, signers);
56
+ return await sendTransactionAsIntent(config, sourceChains, targetChain, callInputs, gasLimit, tokenRequests, accountAddress, signers, sponsored);
69
57
  }
70
58
  }
71
- async function sendTransactionAsUserOp(config, sourceChain, targetChain, calls, signers) {
59
+ async function sendTransactionAsUserOp(config, chain, callInputs, signers) {
60
+ // Make sure the account is deployed
61
+ await (0, accounts_1.deploy)(config, chain);
72
62
  const withSession = signers?.type === 'session' ? signers.session : null;
73
63
  const publicClient = (0, viem_1.createPublicClient)({
74
- chain: sourceChain,
75
- transport: (0, viem_1.http)(),
64
+ chain,
65
+ transport: (0, utils_1.createTransport)(chain, config.provider),
76
66
  });
77
- const validatorAccount = await (0, utils_2.getValidatorAccount)(config, signers, publicClient, sourceChain);
67
+ const validatorAccount = await (0, utils_2.getValidatorAccount)(config, signers, publicClient, chain);
78
68
  if (!validatorAccount) {
79
69
  throw new Error('No validator account found');
80
70
  }
81
71
  const bundlerClient = (0, utils_1.getBundlerClient)(config, publicClient);
82
72
  if (withSession) {
83
- await (0, smart_session_1.enableSmartSession)(targetChain, config, withSession);
73
+ await (0, smart_session_1.enableSmartSession)(chain, config, withSession);
84
74
  }
75
+ const calls = (0, utils_2.parseCalls)(callInputs, chain.id);
85
76
  const hash = await bundlerClient.sendUserOperation({
86
77
  account: validatorAccount,
87
78
  calls,
@@ -89,17 +80,22 @@ async function sendTransactionAsUserOp(config, sourceChain, targetChain, calls,
89
80
  return {
90
81
  type: 'userop',
91
82
  hash,
92
- sourceChain: sourceChain.id,
93
- targetChain: targetChain.id,
83
+ chain: chain.id,
94
84
  };
95
85
  }
96
- async function sendTransactionAsIntent(config, sourceChain, targetChain, calls, gasLimit, tokenRequests, accountAddress, signers) {
97
- const { intentRoute, hash: intentHash } = await (0, utils_2.prepareTransactionAsIntent)(config, sourceChain, targetChain, calls, gasLimit, tokenRequests, accountAddress);
86
+ async function sendTransactionAsIntent(config, sourceChains, targetChain, callInputs, gasLimit, tokenRequests, accountAddress, signers, sponsored) {
87
+ const { intentRoute } = await (0, utils_2.prepareTransactionAsIntent)(config, sourceChains, targetChain, callInputs, gasLimit, tokenRequests, accountAddress, sponsored ?? false);
98
88
  if (!intentRoute) {
99
89
  throw new error_1.OrderPathRequiredForIntentsError();
100
90
  }
101
- const signature = await (0, utils_2.signIntent)(config, sourceChain, targetChain, intentHash, signers);
102
- return await (0, utils_2.submitIntentInternal)(config, sourceChain, targetChain, intentRoute.intentOp, signature, true);
91
+ const signature = await (0, utils_2.signIntent)(config, targetChain, intentRoute.intentOp, signers);
92
+ const authorizations = config.eoa
93
+ ? await (0, utils_2.signAuthorizationsInternal)(config, {
94
+ type: 'intent',
95
+ intentRoute,
96
+ })
97
+ : [];
98
+ return await (0, utils_2.submitIntentInternal)(config, sourceChains, targetChain, intentRoute.intentOp, signature, authorizations);
103
99
  }
104
100
  async function waitForExecution(config, result, acceptsPreconfirmations) {
105
101
  const validStatuses = new Set([
@@ -114,7 +110,7 @@ async function waitForExecution(config, result, acceptsPreconfirmations) {
114
110
  case 'intent': {
115
111
  let intentStatus = null;
116
112
  while (intentStatus === null || !validStatuses.has(intentStatus.status)) {
117
- const orchestrator = (0, utils_2.getOrchestratorByChain)(result.targetChain, config.rhinestoneApiKey);
113
+ const orchestrator = (0, utils_2.getOrchestratorByChain)(result.targetChain, config.rhinestoneApiKey, config.useDev);
118
114
  intentStatus = await orchestrator.getIntentOpStatus(result.id);
119
115
  await new Promise((resolve) => setTimeout(resolve, POLLING_INTERVAL));
120
116
  }
@@ -124,10 +120,10 @@ async function waitForExecution(config, result, acceptsPreconfirmations) {
124
120
  return intentStatus;
125
121
  }
126
122
  case 'userop': {
127
- const targetChain = (0, registry_1.getChainById)(result.targetChain);
123
+ const targetChain = (0, registry_1.getChainById)(result.chain);
128
124
  const publicClient = (0, viem_1.createPublicClient)({
129
125
  chain: targetChain,
130
- transport: (0, viem_1.http)(),
126
+ transport: (0, utils_1.createTransport)(targetChain, config.provider),
131
127
  });
132
128
  const bundlerClient = (0, utils_1.getBundlerClient)(config, publicClient);
133
129
  const receipt = await bundlerClient.waitForUserOperationReceipt({
@@ -137,55 +133,14 @@ async function waitForExecution(config, result, acceptsPreconfirmations) {
137
133
  }
138
134
  }
139
135
  }
140
- async function getMaxSpendableAmount(config, chain, tokenAddress, gasUnits) {
136
+ async function getMaxSpendableAmount(config, chain, tokenAddress, gasUnits, sponsored = false) {
141
137
  const address = (0, accounts_1.getAddress)(config);
142
- const orchestrator = (0, utils_2.getOrchestratorByChain)(chain.id, config.rhinestoneApiKey);
143
- return orchestrator.getMaxTokenAmount(address, chain.id, tokenAddress, gasUnits);
138
+ const orchestrator = (0, utils_2.getOrchestratorByChain)(chain.id, config.rhinestoneApiKey, config.useDev);
139
+ return orchestrator.getMaxTokenAmount(address, chain.id, tokenAddress, gasUnits, sponsored);
144
140
  }
145
141
  async function getPortfolio(config, onTestnets) {
146
142
  const address = (0, accounts_1.getAddress)(config);
147
143
  const chainId = onTestnets ? chains_1.sepolia.id : chains_1.mainnet.id;
148
- const orchestrator = (0, utils_2.getOrchestratorByChain)(chainId, config.rhinestoneApiKey);
144
+ const orchestrator = (0, utils_2.getOrchestratorByChain)(chainId, config.rhinestoneApiKey, config.useDev);
149
145
  return orchestrator.getPortfolio(address);
150
146
  }
151
- async function deposit(config, chain, amount, tokenAddress) {
152
- async function getCalls(address) {
153
- if (!tokenAddress || tokenAddress === viem_1.zeroAddress) {
154
- // ETH deposit
155
- return [(0, compact_1.getDepositEtherCall)(address, amount)];
156
- }
157
- else {
158
- // ERC20 deposit
159
- const publicClient = (0, viem_1.createPublicClient)({
160
- chain,
161
- transport: (0, viem_1.http)(),
162
- });
163
- const allowance = await publicClient.readContract({
164
- address: tokenAddress,
165
- abi: viem_1.erc20Abi,
166
- functionName: 'allowance',
167
- args: [address, compact_1.COMPACT_ADDRESS],
168
- });
169
- const calls = [];
170
- if (allowance < amount) {
171
- calls.push((0, compact_1.getApproveErc20Call)(tokenAddress, amount));
172
- }
173
- calls.push((0, compact_1.getDepositErc20Call)(address, tokenAddress, amount));
174
- return calls;
175
- }
176
- }
177
- const address = (0, accounts_1.getAddress)(config);
178
- const owners = config.owners;
179
- const calls = await getCalls(address);
180
- return await sendTransactionAsUserOp(config, chain, chain, calls, owners.type === 'ecdsa'
181
- ? {
182
- type: 'owner',
183
- kind: 'ecdsa',
184
- accounts: owners.accounts,
185
- }
186
- : {
187
- type: 'owner',
188
- kind: 'passkey',
189
- account: owners.account,
190
- });
191
- }
@@ -1,5 +1,5 @@
1
1
  import { type Chain, type Hex } from 'viem';
2
- import { ChainDigest, EnableSessionData, SmartSessionModeType } from '../modules/validators/smart-sessions';
2
+ import { type ChainDigest, type EnableSessionData, type SmartSessionModeType } from '../modules/validators/smart-sessions';
3
3
  import type { RhinestoneAccountConfig, Session } from '../types';
4
4
  interface SessionDetails {
5
5
  permissionEnableHash: Hex;
@@ -1 +1 @@
1
- {"version":3,"file":"smart-session.d.ts","sourceRoot":"","sources":["../../../execution/smart-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,KAAK,EAIV,KAAK,GAAG,EAIT,MAAM,MAAM,CAAA;AAgBb,OAAO,EACL,WAAW,EAEX,iBAAiB,EAGjB,oBAAoB,EACrB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,KAAK,EAAe,uBAAuB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAG7E,UAAU,cAAc;IACtB,oBAAoB,EAAE,GAAG,CAAA;IACzB,IAAI,EAAE,oBAAoB,CAAA;IAC1B,iBAAiB,EAAE,WAAW,EAAE,CAAA;IAChC,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED,iBAAe,iBAAiB,CAC9B,MAAM,EAAE,uBAAuB,EAC/B,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,GAAG,GACd,OAAO,CAAC,cAAc,CAAC,CA2BzB;AA2FD,iBAAS,mBAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,GAAG,CAgC7D;AAiLD,iBAAe,kBAAkB,CAC/B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,OAAO,iBAiCjB;AAED,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;AACrE,YAAY,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"smart-session.d.ts","sourceRoot":"","sources":["../../../execution/smart-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,KAAK,EAIV,KAAK,GAAG,EAGT,MAAM,MAAM,CAAA;AAmBb,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,iBAAiB,EAGtB,KAAK,oBAAoB,EAC1B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,KAAK,EAGV,uBAAuB,EACvB,OAAO,EACR,MAAM,UAAU,CAAA;AAGjB,UAAU,cAAc;IACtB,oBAAoB,EAAE,GAAG,CAAA;IACzB,IAAI,EAAE,oBAAoB,CAAA;IAC1B,iBAAiB,EAAE,WAAW,EAAE,CAAA;IAChC,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED,iBAAe,iBAAiB,CAC9B,MAAM,EAAE,uBAAuB,EAC/B,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,GAAG,GACd,OAAO,CAAC,cAAc,CAAC,CA4BzB;AAgGD,iBAAS,mBAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,GAAG,CAgC7D;AAiLD,iBAAe,kBAAkB,CAC/B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,OAAO,iBA+BjB;AAED,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;AACrE,YAAY,EAAE,cAAc,EAAE,CAAA"}
@@ -6,14 +6,13 @@ exports.getMultichainDigest = getMultichainDigest;
6
6
  const viem_1 = require("viem");
7
7
  const accounts_1 = require("../accounts");
8
8
  const utils_1 = require("../accounts/utils");
9
- const modules_1 = require("../modules");
10
9
  const validators_1 = require("../modules/validators");
11
10
  const smart_sessions_1 = require("../modules/validators/smart-sessions");
12
11
  const error_1 = require("./error");
13
12
  async function getSessionDetails(config, sessions, sessionIndex, signature) {
14
13
  const account = (0, accounts_1.getAccountProvider)(config);
15
14
  const accountAddress = (0, accounts_1.getAddress)(config);
16
- const sessionDetails = await getEnableSessionDetails(account.type, sessions, sessionIndex, accountAddress);
15
+ const sessionDetails = await getEnableSessionDetails(account.type, sessions, sessionIndex, accountAddress, config.provider);
17
16
  const chain = sessions[sessionIndex].chain;
18
17
  if (!chain) {
19
18
  throw new error_1.SessionChainRequiredError();
@@ -24,24 +23,24 @@ async function getSessionDetails(config, sessions, sessionIndex, signature) {
24
23
  };
25
24
  sessionDetails.enableSessionData.signature =
26
25
  signature ??
27
- (await (0, accounts_1.getPackedSignature)(config, config.owners, chain, validator, sessionDetails.permissionEnableHash));
26
+ (await (0, accounts_1.getPackedSignature)(config, undefined, chain, validator, sessionDetails.permissionEnableHash));
28
27
  return sessionDetails;
29
28
  }
30
- async function getEnableSessionDetails(accountType, sessions, sessionIndex, accountAddress) {
29
+ async function getEnableSessionDetails(accountType, sessions, sessionIndex, accountAddress, provider) {
31
30
  const chainDigests = [];
32
31
  const chainSessions = [];
33
32
  for (const session of sessions) {
34
33
  const permissionId = (0, validators_1.getPermissionId)(session);
35
- const publicClient = (0, viem_1.createPublicClient)({
36
- chain: session.chain,
37
- transport: (0, viem_1.http)(),
38
- });
39
34
  const sessionChain = session.chain;
40
35
  if (!sessionChain) {
41
36
  throw new error_1.SessionChainRequiredError();
42
37
  }
38
+ const publicClient = (0, viem_1.createPublicClient)({
39
+ chain: sessionChain,
40
+ transport: (0, utils_1.createTransport)(sessionChain, provider),
41
+ });
43
42
  const sessionNonce = await getSessionNonce(publicClient, accountAddress, permissionId);
44
- const sessionData = await (0, smart_sessions_1.getSessionData)(sessionChain, session);
43
+ const sessionData = await (0, smart_sessions_1.getSessionData)(sessionChain, session, provider);
45
44
  const sessionDigest = await getSessionDigest(publicClient, accountAddress, sessionData, permissionId, validators_1.SMART_SESSION_MODE_ENABLE);
46
45
  chainDigests.push({
47
46
  chainId: BigInt(sessionChain.id),
@@ -74,7 +73,7 @@ async function getEnableSessionDetails(accountType, sessions, sessionIndex, acco
74
73
  if (!sessionChain) {
75
74
  throw new error_1.SessionChainRequiredError();
76
75
  }
77
- const sessionData = await (0, smart_sessions_1.getSessionData)(sessionChain, sessionToEnable);
76
+ const sessionData = await (0, smart_sessions_1.getSessionData)(sessionChain, sessionToEnable, provider);
78
77
  return {
79
78
  permissionEnableHash,
80
79
  mode: validators_1.SMART_SESSION_MODE_ENABLE,
@@ -274,23 +273,19 @@ async function getSessionDigest(client, account, session, permissionId, mode) {
274
273
  async function enableSmartSession(chain, config, session) {
275
274
  const publicClient = (0, viem_1.createPublicClient)({
276
275
  chain,
277
- transport: (0, viem_1.http)(),
276
+ transport: (0, utils_1.createTransport)(chain, config.provider),
278
277
  });
279
278
  const address = (0, accounts_1.getAddress)(config);
280
279
  const isEnabled = await (0, validators_1.isSessionEnabled)(publicClient, address, (0, validators_1.getPermissionId)(session));
281
280
  if (isEnabled) {
282
281
  return;
283
282
  }
284
- const enableSessionCall = await (0, validators_1.getEnableSessionCall)(chain, session);
285
- const trustedAttesters = await (0, modules_1.getTrustedAttesters)(publicClient, address);
286
- const trustAttesterCall = trustedAttesters.length === 0 ? (0, modules_1.getTrustAttesterCall)(config) : undefined;
283
+ const enableSessionCall = await (0, validators_1.getEnableSessionCall)(chain, session, config.provider);
287
284
  const smartAccount = await (0, accounts_1.getSmartAccount)(config, publicClient, chain);
288
285
  const bundlerClient = (0, utils_1.getBundlerClient)(config, publicClient);
289
286
  const opHash = await bundlerClient.sendUserOperation({
290
287
  account: smartAccount,
291
- calls: trustAttesterCall
292
- ? [trustAttesterCall, enableSessionCall]
293
- : [enableSessionCall],
288
+ calls: [enableSessionCall],
294
289
  });
295
290
  await bundlerClient.waitForUserOperationReceipt({
296
291
  hash: opHash,
@@ -1,21 +1,19 @@
1
- import { Address, Chain, Hex, PublicClient } from 'viem';
2
- import { UserOperation } from 'viem/account-abstraction';
3
- import { IntentOp, IntentRoute } from '../orchestrator';
4
- import { Call, RhinestoneAccountConfig, SignerSet, TokenRequest, Transaction } from '../types';
1
+ import { type Address, type Chain, type HashTypedDataParameters, type Hex, type PublicClient, type SignableMessage, type SignedAuthorization, type SignedAuthorizationList, type TypedData } from 'viem';
2
+ import { type UserOperation } from 'viem/account-abstraction';
3
+ import { type IntentOp, type IntentRoute } from '../orchestrator';
4
+ import type { Call, CallInput, RhinestoneAccountConfig, SignerSet, TokenRequest, Transaction } from '../types';
5
5
  type TransactionResult = {
6
6
  type: 'userop';
7
7
  hash: Hex;
8
- sourceChain: number;
9
- targetChain: number;
8
+ chain: number;
10
9
  } | {
11
10
  type: 'intent';
12
11
  id: bigint;
13
- sourceChain?: number;
12
+ sourceChains?: number[];
14
13
  targetChain: number;
15
14
  };
16
15
  interface IntentData {
17
16
  type: 'intent';
18
- hash: Hex;
19
17
  intentRoute: IntentRoute;
20
18
  }
21
19
  interface UserOpData {
@@ -32,12 +30,19 @@ interface SignedTransactionData extends PreparedTransactionData {
32
30
  }
33
31
  declare function prepareTransaction(config: RhinestoneAccountConfig, transaction: Transaction): Promise<PreparedTransactionData>;
34
32
  declare function signTransaction(config: RhinestoneAccountConfig, preparedTransaction: PreparedTransactionData): Promise<SignedTransactionData>;
35
- declare function submitTransaction(config: RhinestoneAccountConfig, signedTransaction: SignedTransactionData): Promise<TransactionResult>;
36
- declare function prepareTransactionAsIntent(config: RhinestoneAccountConfig, sourceChain: Chain | undefined, targetChain: Chain, calls: Call[], gasLimit: bigint | undefined, tokenRequests: TokenRequest[], accountAddress: Address): Promise<IntentData>;
37
- declare function signIntent(config: RhinestoneAccountConfig, sourceChain: Chain | undefined, targetChain: Chain, intentHash: Hex, signers?: SignerSet): Promise<`0x${string}`>;
38
- declare function getOrchestratorByChain(chainId: number, apiKey: string): import("../orchestrator").Orchestrator;
39
- declare function submitIntentInternal(config: RhinestoneAccountConfig, sourceChain: Chain | undefined, targetChain: Chain, intentOp: IntentOp, signature: Hex, deploy: boolean): Promise<TransactionResult>;
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 simulateTransaction(config: RhinestoneAccountConfig, signedTransaction: SignedTransactionData, authorizations: SignedAuthorizationList): Promise<import("../orchestrator").IntentResult>;
39
+ 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>;
40
+ declare function signIntent(config: RhinestoneAccountConfig, targetChain: Chain, intentOp: IntentOp, signers?: SignerSet): Promise<`0x${string}`>;
41
+ declare function getOrchestratorByChain(chainId: number, apiKey: string | undefined, useDev: boolean | undefined): import("../orchestrator").Orchestrator;
42
+ declare function submitIntentInternal(config: RhinestoneAccountConfig, sourceChains: Chain[] | undefined, targetChain: Chain, intentOp: IntentOp, signature: Hex, authorizations: SignedAuthorizationList): Promise<TransactionResult>;
43
+ declare function simulateIntentInternal(config: RhinestoneAccountConfig, _sourceChains: Chain[] | undefined, targetChain: Chain, intentOp: IntentOp, signature: Hex, authorizations: SignedAuthorizationList): Promise<import("../orchestrator").IntentResult>;
40
44
  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>;
41
- export { prepareTransaction, signTransaction, submitTransaction, getOrchestratorByChain, signIntent, prepareTransactionAsIntent, submitIntentInternal, getValidatorAccount, };
45
+ declare function parseCalls(calls: CallInput[], chainId: number): Call[];
46
+ export { prepareTransaction, signTransaction, signAuthorizations, signAuthorizationsInternal, signMessage, signTypedData, submitTransaction, simulateTransaction, getOrchestratorByChain, signIntent, prepareTransactionAsIntent, submitIntentInternal, simulateIntentInternal, getValidatorAccount, parseCalls, };
42
47
  export type { IntentData, TransactionResult, PreparedTransactionData, SignedTransactionData, };
43
48
  //# 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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"}