@relayprotocol/relay-sdk 2.4.0

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 (308) hide show
  1. package/LICENSE +21 -0
  2. package/_cjs/package.json +1 -0
  3. package/_cjs/src/actions/claimAppFees.js +53 -0
  4. package/_cjs/src/actions/claimAppFees.js.map +1 -0
  5. package/_cjs/src/actions/execute.js +76 -0
  6. package/_cjs/src/actions/execute.js.map +1 -0
  7. package/_cjs/src/actions/getAppFees.js +24 -0
  8. package/_cjs/src/actions/getAppFees.js.map +1 -0
  9. package/_cjs/src/actions/getPrice.js +51 -0
  10. package/_cjs/src/actions/getPrice.js.map +1 -0
  11. package/_cjs/src/actions/getQuote.js +91 -0
  12. package/_cjs/src/actions/getQuote.js.map +1 -0
  13. package/_cjs/src/actions/getSolverCapacity.js +21 -0
  14. package/_cjs/src/actions/getSolverCapacity.js.map +1 -0
  15. package/_cjs/src/actions/index.js +10 -0
  16. package/_cjs/src/actions/index.js.map +1 -0
  17. package/_cjs/src/client.js +207 -0
  18. package/_cjs/src/client.js.map +1 -0
  19. package/_cjs/src/constants/address.js +48 -0
  20. package/_cjs/src/constants/address.js.map +1 -0
  21. package/_cjs/src/constants/bvm.js +5 -0
  22. package/_cjs/src/constants/bvm.js.map +1 -0
  23. package/_cjs/src/constants/index.js +6 -0
  24. package/_cjs/src/constants/index.js.map +1 -0
  25. package/_cjs/src/constants/servers.js +9 -0
  26. package/_cjs/src/constants/servers.js.map +1 -0
  27. package/_cjs/src/errors/DepositTransactionTimeoutError.js +18 -0
  28. package/_cjs/src/errors/DepositTransactionTimeoutError.js.map +1 -0
  29. package/_cjs/src/errors/SolverStatusTimeoutError.js +18 -0
  30. package/_cjs/src/errors/SolverStatusTimeoutError.js.map +1 -0
  31. package/_cjs/src/errors/TransactionConfirmationError.js +25 -0
  32. package/_cjs/src/errors/TransactionConfirmationError.js.map +1 -0
  33. package/_cjs/src/errors/index.js +10 -0
  34. package/_cjs/src/errors/index.js.map +1 -0
  35. package/_cjs/src/index.js +10 -0
  36. package/_cjs/src/index.js.map +1 -0
  37. package/_cjs/src/routes/index.js +46 -0
  38. package/_cjs/src/routes/index.js.map +1 -0
  39. package/_cjs/src/types/AdaptedWallet.js +3 -0
  40. package/_cjs/src/types/AdaptedWallet.js.map +1 -0
  41. package/_cjs/src/types/Execute.js +3 -0
  42. package/_cjs/src/types/Execute.js.map +1 -0
  43. package/_cjs/src/types/Progress.js +3 -0
  44. package/_cjs/src/types/Progress.js.map +1 -0
  45. package/_cjs/src/types/RelayChain.js +3 -0
  46. package/_cjs/src/types/RelayChain.js.map +1 -0
  47. package/_cjs/src/types/SignatureStepItem.js +3 -0
  48. package/_cjs/src/types/SignatureStepItem.js.map +1 -0
  49. package/_cjs/src/types/TransactionStepItem.js +3 -0
  50. package/_cjs/src/types/TransactionStepItem.js.map +1 -0
  51. package/_cjs/src/types/api.js +3 -0
  52. package/_cjs/src/types/api.js.map +1 -0
  53. package/_cjs/src/types/index.js +11 -0
  54. package/_cjs/src/types/index.js.map +1 -0
  55. package/_cjs/src/utils/axios.js +18 -0
  56. package/_cjs/src/utils/axios.js.map +1 -0
  57. package/_cjs/src/utils/chain.js +91 -0
  58. package/_cjs/src/utils/chain.js.map +1 -0
  59. package/_cjs/src/utils/executeSteps/index.js +298 -0
  60. package/_cjs/src/utils/executeSteps/index.js.map +1 -0
  61. package/_cjs/src/utils/executeSteps/signatureStep.js +186 -0
  62. package/_cjs/src/utils/executeSteps/signatureStep.js.map +1 -0
  63. package/_cjs/src/utils/executeSteps/transactionStep.js +74 -0
  64. package/_cjs/src/utils/executeSteps/transactionStep.js.map +1 -0
  65. package/_cjs/src/utils/executeSteps/websocketHandlers.js +112 -0
  66. package/_cjs/src/utils/executeSteps/websocketHandlers.js.map +1 -0
  67. package/_cjs/src/utils/fetchChainConfigs.js +20 -0
  68. package/_cjs/src/utils/fetchChainConfigs.js.map +1 -0
  69. package/_cjs/src/utils/getCurrentStepData.js +28 -0
  70. package/_cjs/src/utils/getCurrentStepData.js.map +1 -0
  71. package/_cjs/src/utils/getTenderlyDetails.js +24 -0
  72. package/_cjs/src/utils/getTenderlyDetails.js.map +1 -0
  73. package/_cjs/src/utils/hyperliquid.js +95 -0
  74. package/_cjs/src/utils/hyperliquid.js.map +1 -0
  75. package/_cjs/src/utils/index.js +39 -0
  76. package/_cjs/src/utils/index.js.map +1 -0
  77. package/_cjs/src/utils/logger.js +38 -0
  78. package/_cjs/src/utils/logger.js.map +1 -0
  79. package/_cjs/src/utils/params.js +21 -0
  80. package/_cjs/src/utils/params.js.map +1 -0
  81. package/_cjs/src/utils/pollApi.js +40 -0
  82. package/_cjs/src/utils/pollApi.js.map +1 -0
  83. package/_cjs/src/utils/prepareBatchTransaction.js +35 -0
  84. package/_cjs/src/utils/prepareBatchTransaction.js.map +1 -0
  85. package/_cjs/src/utils/prepareCallTransaction.js +14 -0
  86. package/_cjs/src/utils/prepareCallTransaction.js.map +1 -0
  87. package/_cjs/src/utils/repeatUntilOk.js +19 -0
  88. package/_cjs/src/utils/repeatUntilOk.js.map +1 -0
  89. package/_cjs/src/utils/request.js +48 -0
  90. package/_cjs/src/utils/request.js.map +1 -0
  91. package/_cjs/src/utils/simulateContract.js +8 -0
  92. package/_cjs/src/utils/simulateContract.js.map +1 -0
  93. package/_cjs/src/utils/structuredClone.js +11 -0
  94. package/_cjs/src/utils/structuredClone.js.map +1 -0
  95. package/_cjs/src/utils/transaction.js +351 -0
  96. package/_cjs/src/utils/transaction.js.map +1 -0
  97. package/_cjs/src/utils/viemWallet.js +211 -0
  98. package/_cjs/src/utils/viemWallet.js.map +1 -0
  99. package/_cjs/src/utils/websocket.js +76 -0
  100. package/_cjs/src/utils/websocket.js.map +1 -0
  101. package/_cjs/src/version.js +5 -0
  102. package/_cjs/src/version.js.map +1 -0
  103. package/_cjs/tsconfig.build.tsbuildinfo +1 -0
  104. package/_esm/package.json +1 -0
  105. package/_esm/src/actions/claimAppFees.js +54 -0
  106. package/_esm/src/actions/claimAppFees.js.map +1 -0
  107. package/_esm/src/actions/execute.js +83 -0
  108. package/_esm/src/actions/execute.js.map +1 -0
  109. package/_esm/src/actions/getAppFees.js +25 -0
  110. package/_esm/src/actions/getAppFees.js.map +1 -0
  111. package/_esm/src/actions/getPrice.js +53 -0
  112. package/_esm/src/actions/getPrice.js.map +1 -0
  113. package/_esm/src/actions/getQuote.js +92 -0
  114. package/_esm/src/actions/getQuote.js.map +1 -0
  115. package/_esm/src/actions/getSolverCapacity.js +18 -0
  116. package/_esm/src/actions/getSolverCapacity.js.map +1 -0
  117. package/_esm/src/actions/index.js +7 -0
  118. package/_esm/src/actions/index.js.map +1 -0
  119. package/_esm/src/client.js +217 -0
  120. package/_esm/src/client.js.map +1 -0
  121. package/_esm/src/constants/address.js +43 -0
  122. package/_esm/src/constants/address.js.map +1 -0
  123. package/_esm/src/constants/bvm.js +2 -0
  124. package/_esm/src/constants/bvm.js.map +1 -0
  125. package/_esm/src/constants/index.js +3 -0
  126. package/_esm/src/constants/index.js.map +1 -0
  127. package/_esm/src/constants/servers.js +7 -0
  128. package/_esm/src/constants/servers.js.map +1 -0
  129. package/_esm/src/errors/DepositTransactionTimeoutError.js +14 -0
  130. package/_esm/src/errors/DepositTransactionTimeoutError.js.map +1 -0
  131. package/_esm/src/errors/SolverStatusTimeoutError.js +14 -0
  132. package/_esm/src/errors/SolverStatusTimeoutError.js.map +1 -0
  133. package/_esm/src/errors/TransactionConfirmationError.js +21 -0
  134. package/_esm/src/errors/TransactionConfirmationError.js.map +1 -0
  135. package/_esm/src/errors/index.js +4 -0
  136. package/_esm/src/errors/index.js.map +1 -0
  137. package/_esm/src/index.js +7 -0
  138. package/_esm/src/index.js.map +1 -0
  139. package/_esm/src/routes/index.js +43 -0
  140. package/_esm/src/routes/index.js.map +1 -0
  141. package/_esm/src/types/AdaptedWallet.js +2 -0
  142. package/_esm/src/types/AdaptedWallet.js.map +1 -0
  143. package/_esm/src/types/Execute.js +2 -0
  144. package/_esm/src/types/Execute.js.map +1 -0
  145. package/_esm/src/types/Progress.js +2 -0
  146. package/_esm/src/types/Progress.js.map +1 -0
  147. package/_esm/src/types/RelayChain.js +2 -0
  148. package/_esm/src/types/RelayChain.js.map +1 -0
  149. package/_esm/src/types/SignatureStepItem.js +2 -0
  150. package/_esm/src/types/SignatureStepItem.js.map +1 -0
  151. package/_esm/src/types/TransactionStepItem.js +2 -0
  152. package/_esm/src/types/TransactionStepItem.js.map +1 -0
  153. package/_esm/src/types/api.js +6 -0
  154. package/_esm/src/types/api.js.map +1 -0
  155. package/_esm/src/types/index.js +8 -0
  156. package/_esm/src/types/index.js.map +1 -0
  157. package/_esm/src/utils/axios.js +15 -0
  158. package/_esm/src/utils/axios.js.map +1 -0
  159. package/_esm/src/utils/chain.js +86 -0
  160. package/_esm/src/utils/chain.js.map +1 -0
  161. package/_esm/src/utils/executeSteps/index.js +347 -0
  162. package/_esm/src/utils/executeSteps/index.js.map +1 -0
  163. package/_esm/src/utils/executeSteps/signatureStep.js +191 -0
  164. package/_esm/src/utils/executeSteps/signatureStep.js.map +1 -0
  165. package/_esm/src/utils/executeSteps/transactionStep.js +76 -0
  166. package/_esm/src/utils/executeSteps/transactionStep.js.map +1 -0
  167. package/_esm/src/utils/executeSteps/websocketHandlers.js +124 -0
  168. package/_esm/src/utils/executeSteps/websocketHandlers.js.map +1 -0
  169. package/_esm/src/utils/fetchChainConfigs.js +16 -0
  170. package/_esm/src/utils/fetchChainConfigs.js.map +1 -0
  171. package/_esm/src/utils/getCurrentStepData.js +24 -0
  172. package/_esm/src/utils/getCurrentStepData.js.map +1 -0
  173. package/_esm/src/utils/getTenderlyDetails.js +20 -0
  174. package/_esm/src/utils/getTenderlyDetails.js.map +1 -0
  175. package/_esm/src/utils/hyperliquid.js +90 -0
  176. package/_esm/src/utils/hyperliquid.js.map +1 -0
  177. package/_esm/src/utils/index.js +16 -0
  178. package/_esm/src/utils/index.js.map +1 -0
  179. package/_esm/src/utils/logger.js +34 -0
  180. package/_esm/src/utils/logger.js.map +1 -0
  181. package/_esm/src/utils/params.js +40 -0
  182. package/_esm/src/utils/params.js.map +1 -0
  183. package/_esm/src/utils/pollApi.js +57 -0
  184. package/_esm/src/utils/pollApi.js.map +1 -0
  185. package/_esm/src/utils/prepareBatchTransaction.js +31 -0
  186. package/_esm/src/utils/prepareBatchTransaction.js.map +1 -0
  187. package/_esm/src/utils/prepareCallTransaction.js +11 -0
  188. package/_esm/src/utils/prepareCallTransaction.js.map +1 -0
  189. package/_esm/src/utils/repeatUntilOk.js +23 -0
  190. package/_esm/src/utils/repeatUntilOk.js.map +1 -0
  191. package/_esm/src/utils/request.js +42 -0
  192. package/_esm/src/utils/request.js.map +1 -0
  193. package/_esm/src/utils/simulateContract.js +5 -0
  194. package/_esm/src/utils/simulateContract.js.map +1 -0
  195. package/_esm/src/utils/structuredClone.js +8 -0
  196. package/_esm/src/utils/structuredClone.js.map +1 -0
  197. package/_esm/src/utils/transaction.js +374 -0
  198. package/_esm/src/utils/transaction.js.map +1 -0
  199. package/_esm/src/utils/viemWallet.js +207 -0
  200. package/_esm/src/utils/viemWallet.js.map +1 -0
  201. package/_esm/src/utils/websocket.js +78 -0
  202. package/_esm/src/utils/websocket.js.map +1 -0
  203. package/_esm/src/version.js +2 -0
  204. package/_esm/src/version.js.map +1 -0
  205. package/_esm/tsconfig.build.tsbuildinfo +1 -0
  206. package/_types/src/actions/claimAppFees.d.ts +21 -0
  207. package/_types/src/actions/claimAppFees.d.ts.map +1 -0
  208. package/_types/src/actions/execute.d.ts +23 -0
  209. package/_types/src/actions/execute.d.ts.map +1 -0
  210. package/_types/src/actions/getAppFees.d.ts +12 -0
  211. package/_types/src/actions/getAppFees.d.ts.map +1 -0
  212. package/_types/src/actions/getPrice.d.ts +23 -0
  213. package/_types/src/actions/getPrice.d.ts.map +1 -0
  214. package/_types/src/actions/getQuote.d.ts +24 -0
  215. package/_types/src/actions/getQuote.d.ts.map +1 -0
  216. package/_types/src/actions/getSolverCapacity.d.ts +8 -0
  217. package/_types/src/actions/getSolverCapacity.d.ts.map +1 -0
  218. package/_types/src/actions/index.d.ts +7 -0
  219. package/_types/src/actions/index.d.ts.map +1 -0
  220. package/_types/src/client.d.ts +8039 -0
  221. package/_types/src/client.d.ts.map +1 -0
  222. package/_types/src/constants/address.d.ts +11 -0
  223. package/_types/src/constants/address.d.ts.map +1 -0
  224. package/_types/src/constants/bvm.d.ts +2 -0
  225. package/_types/src/constants/bvm.d.ts.map +1 -0
  226. package/_types/src/constants/index.d.ts +3 -0
  227. package/_types/src/constants/index.d.ts.map +1 -0
  228. package/_types/src/constants/servers.d.ts +6 -0
  229. package/_types/src/constants/servers.d.ts.map +1 -0
  230. package/_types/src/errors/DepositTransactionTimeoutError.d.ts +5 -0
  231. package/_types/src/errors/DepositTransactionTimeoutError.d.ts.map +1 -0
  232. package/_types/src/errors/SolverStatusTimeoutError.d.ts +5 -0
  233. package/_types/src/errors/SolverStatusTimeoutError.d.ts.map +1 -0
  234. package/_types/src/errors/TransactionConfirmationError.d.ts +9 -0
  235. package/_types/src/errors/TransactionConfirmationError.d.ts.map +1 -0
  236. package/_types/src/errors/index.d.ts +4 -0
  237. package/_types/src/errors/index.d.ts.map +1 -0
  238. package/_types/src/index.d.ts +7 -0
  239. package/_types/src/index.d.ts.map +1 -0
  240. package/_types/src/routes/index.d.ts +2 -0
  241. package/_types/src/routes/index.d.ts.map +1 -0
  242. package/_types/src/types/AdaptedWallet.d.ts +27 -0
  243. package/_types/src/types/AdaptedWallet.d.ts.map +1 -0
  244. package/_types/src/types/Execute.d.ts +64 -0
  245. package/_types/src/types/Execute.d.ts.map +1 -0
  246. package/_types/src/types/Progress.d.ts +17 -0
  247. package/_types/src/types/Progress.d.ts.map +1 -0
  248. package/_types/src/types/RelayChain.d.ts +47 -0
  249. package/_types/src/types/RelayChain.d.ts.map +1 -0
  250. package/_types/src/types/SignatureStepItem.d.ts +21 -0
  251. package/_types/src/types/SignatureStepItem.d.ts.map +1 -0
  252. package/_types/src/types/TransactionStepItem.d.ts +25 -0
  253. package/_types/src/types/TransactionStepItem.d.ts.map +1 -0
  254. package/_types/src/types/api.d.ts +4911 -0
  255. package/_types/src/types/api.d.ts.map +1 -0
  256. package/_types/src/types/index.d.ts +8 -0
  257. package/_types/src/types/index.d.ts.map +1 -0
  258. package/_types/src/utils/axios.d.ts +2 -0
  259. package/_types/src/utils/axios.d.ts.map +1 -0
  260. package/_types/src/utils/chain.d.ts +7 -0
  261. package/_types/src/utils/chain.d.ts.map +1 -0
  262. package/_types/src/utils/executeSteps/index.d.ts +34 -0
  263. package/_types/src/utils/executeSteps/index.d.ts.map +1 -0
  264. package/_types/src/utils/executeSteps/signatureStep.d.ts +21 -0
  265. package/_types/src/utils/executeSteps/signatureStep.d.ts.map +1 -0
  266. package/_types/src/utils/executeSteps/transactionStep.d.ts +25 -0
  267. package/_types/src/utils/executeSteps/transactionStep.d.ts.map +1 -0
  268. package/_types/src/utils/executeSteps/websocketHandlers.d.ts +21 -0
  269. package/_types/src/utils/executeSteps/websocketHandlers.d.ts.map +1 -0
  270. package/_types/src/utils/fetchChainConfigs.d.ts +3 -0
  271. package/_types/src/utils/fetchChainConfigs.d.ts.map +1 -0
  272. package/_types/src/utils/getCurrentStepData.d.ts +80 -0
  273. package/_types/src/utils/getCurrentStepData.d.ts.map +1 -0
  274. package/_types/src/utils/getTenderlyDetails.d.ts +6 -0
  275. package/_types/src/utils/getTenderlyDetails.d.ts.map +1 -0
  276. package/_types/src/utils/hyperliquid.d.ts +49 -0
  277. package/_types/src/utils/hyperliquid.d.ts.map +1 -0
  278. package/_types/src/utils/index.d.ts +16 -0
  279. package/_types/src/utils/index.d.ts.map +1 -0
  280. package/_types/src/utils/logger.d.ts +9 -0
  281. package/_types/src/utils/logger.d.ts.map +1 -0
  282. package/_types/src/utils/params.d.ts +27 -0
  283. package/_types/src/utils/params.d.ts.map +1 -0
  284. package/_types/src/utils/pollApi.d.ts +22 -0
  285. package/_types/src/utils/pollApi.d.ts.map +1 -0
  286. package/_types/src/utils/prepareBatchTransaction.d.ts +41 -0
  287. package/_types/src/utils/prepareBatchTransaction.d.ts.map +1 -0
  288. package/_types/src/utils/prepareCallTransaction.d.ts +6 -0
  289. package/_types/src/utils/prepareCallTransaction.d.ts.map +1 -0
  290. package/_types/src/utils/repeatUntilOk.d.ts +10 -0
  291. package/_types/src/utils/repeatUntilOk.d.ts.map +1 -0
  292. package/_types/src/utils/request.d.ts +11 -0
  293. package/_types/src/utils/request.d.ts.map +1 -0
  294. package/_types/src/utils/simulateContract.d.ts +4 -0
  295. package/_types/src/utils/simulateContract.d.ts.map +1 -0
  296. package/_types/src/utils/structuredClone.d.ts +2 -0
  297. package/_types/src/utils/structuredClone.d.ts.map +1 -0
  298. package/_types/src/utils/transaction.d.ts +12 -0
  299. package/_types/src/utils/transaction.d.ts.map +1 -0
  300. package/_types/src/utils/viemWallet.d.ts +5 -0
  301. package/_types/src/utils/viemWallet.d.ts.map +1 -0
  302. package/_types/src/utils/websocket.d.ts +30 -0
  303. package/_types/src/utils/websocket.d.ts.map +1 -0
  304. package/_types/src/version.d.ts +2 -0
  305. package/_types/src/version.d.ts.map +1 -0
  306. package/_types/tsconfig.build.tsbuildinfo +1 -0
  307. package/package.json +57 -0
  308. package/readme.md +37 -0
@@ -0,0 +1,347 @@
1
+ import { getClient, RelayClient } from '../../client.js';
2
+ import { LogLevel } from '../logger.js';
3
+ import { prepareHyperliquidSignatureStep } from '../../utils/index.js';
4
+ import { canBatchTransactions, prepareBatchTransaction } from '../prepareBatchTransaction.js';
5
+ import { handleSignatureStepItem } from './signatureStep.js';
6
+ import { handleTransactionStepItem } from './transactionStep.js';
7
+ import { trackRequestStatus, extractDepositRequestId } from '../websocket.js';
8
+ import { handleWebSocketUpdate } from './websocketHandlers.js';
9
+ /**
10
+ * This function orchestrates the execution of multi-step operations returned from the Relay Quote API,
11
+ * such as bridging, swapping tokens, or performing cross-chain calls. It handles transaction
12
+ * signing, submission, and validation while providing real-time progress updates through the setState callback.
13
+ *
14
+ * @param chainId - The origin chain ID for execution
15
+ * @param request - AxiosRequestConfig for API requests
16
+ * @param wallet - Wallet adapter implementing the {@link AdaptedWallet} interface
17
+ * @param setState - Callback function to update UI state during execution progress
18
+ * @param newJson - Execute object containing the steps, fees, and details from Relay Quote API
19
+ * @param stepOptions - Optional configuration for specific steps (e.g., gas limits)
20
+ * @param sharedStatusControl - Optional shared status control object for coordinating WebSocket/polling across recursive calls
21
+ * @returns Promise<Execute> - The final execution result with updated status
22
+ */
23
+ export async function executeSteps(chainId, request = {}, wallet, setState, newJson, stepOptions, sharedStatusControl) {
24
+ const client = getClient();
25
+ if (client?.baseApiUrl) {
26
+ request.baseURL = client.baseApiUrl;
27
+ }
28
+ const pollingInterval = client.pollingInterval ?? 5000;
29
+ const maximumAttempts = client.maxPollingAttemptsBeforeTimeout ??
30
+ (2.5 * 60 * 1000) / pollingInterval;
31
+ const chain = client.chains.find((chain) => chain.id === chainId);
32
+ if (!chain) {
33
+ throw `Unable to find chain: Chain id ${chainId}`;
34
+ }
35
+ let json = newJson;
36
+ let isAtomicBatchSupported = false;
37
+ // Manage WebSocket and polling coordination
38
+ const statusControl = sharedStatusControl || {
39
+ websocketActive: false,
40
+ websocketConnected: false,
41
+ closeWebSocket: undefined,
42
+ lastKnownStatus: undefined,
43
+ websocketFailureTimeoutId: null
44
+ };
45
+ // WebSocket terminal status promise - rejects when failure/refund status received
46
+ let terminalStatusPromise = null;
47
+ let rejectTerminalStatus = null;
48
+ // Promise-based approach for WebSocket failure handling
49
+ let websocketFailedPromise = null;
50
+ let resolveWebsocketFailed = null;
51
+ const onWebsocketFailed = () => {
52
+ if (!websocketFailedPromise) {
53
+ websocketFailedPromise = new Promise((resolve) => {
54
+ resolveWebsocketFailed = resolve;
55
+ });
56
+ }
57
+ return websocketFailedPromise;
58
+ };
59
+ try {
60
+ // Handle errors
61
+ if (json.error || !json.steps)
62
+ throw json;
63
+ // Check if step's transactions can be batched and if wallet supports atomic batch (EIP-5792)
64
+ // If so, manipulate steps to batch transactions
65
+ if (canBatchTransactions(json.steps)) {
66
+ isAtomicBatchSupported = Boolean(wallet?.supportsAtomicBatch &&
67
+ (await wallet?.supportsAtomicBatch(chainId)));
68
+ if (isAtomicBatchSupported) {
69
+ const batchedStep = prepareBatchTransaction(json.steps);
70
+ json.steps = [batchedStep];
71
+ }
72
+ }
73
+ // Check if Hyperliquid and if so, rewrite steps to become a signature step
74
+ if (chainId === 1337 &&
75
+ json.steps[0] &&
76
+ json.steps[0].id !== 'sign') {
77
+ const activeWalletChainId = await wallet?.getChainId();
78
+ const signatureStep = prepareHyperliquidSignatureStep(json.steps, activeWalletChainId);
79
+ json.steps = [signatureStep];
80
+ }
81
+ // Update state on first call or recursion
82
+ setState({
83
+ steps: [...json?.steps],
84
+ fees: { ...json?.fees },
85
+ breakdown: json?.breakdown,
86
+ details: json?.details
87
+ });
88
+ let incompleteStepIndex = -1;
89
+ let incompleteStepItemIndex = -1;
90
+ json.steps.find((step, i) => {
91
+ if (!step.items) {
92
+ return false;
93
+ }
94
+ incompleteStepItemIndex = step.items.findIndex((item) => item.status == 'incomplete');
95
+ if (incompleteStepItemIndex !== -1) {
96
+ incompleteStepIndex = i;
97
+ return true;
98
+ }
99
+ });
100
+ // There are no more incomplete steps
101
+ if (incompleteStepIndex === -1) {
102
+ client.log(['Execute Steps: all steps complete'], LogLevel.Verbose);
103
+ // Clean up WebSocket and failure timeout if execution is complete
104
+ statusControl.closeWebSocket?.();
105
+ clearFailureTimeout(statusControl, client);
106
+ return json;
107
+ }
108
+ const step = json.steps[incompleteStepIndex];
109
+ if (stepOptions && stepOptions[step.id]) {
110
+ const currentStepOptions = stepOptions[step.id];
111
+ step.items?.forEach((stepItem) => {
112
+ if (currentStepOptions.gasLimit) {
113
+ stepItem.data.gas = currentStepOptions.gasLimit;
114
+ }
115
+ });
116
+ }
117
+ let stepItems = json.steps[incompleteStepIndex].items;
118
+ if (!stepItems) {
119
+ client.log(['Execute Steps: skipping step, no items in step'], LogLevel.Verbose);
120
+ return json;
121
+ }
122
+ // =============================================
123
+ // WebSocket Setup for Real-Time Status Updates
124
+ // =============================================
125
+ // We initialize the WebSocket connection before awaiting the step execution promises.
126
+ //
127
+ // The WebSocket is only used when all of these conditions are met:
128
+ // - WebSocket is enabled in the client configuration
129
+ // - We have a valid requestId
130
+ // - We're on the last step of execution
131
+ // - The step has incomplete items
132
+ // - WebSocket isn't already active
133
+ // - The origin and destination chain is not bitcoin
134
+ const isLastStep = incompleteStepIndex === json.steps.length - 1;
135
+ const isStepIncomplete = stepItems.some((item) => item.status === 'incomplete');
136
+ const requestId = extractDepositRequestId(json.steps);
137
+ if (client.websocketEnabled &&
138
+ requestId &&
139
+ isLastStep &&
140
+ isStepIncomplete &&
141
+ !statusControl.websocketActive &&
142
+ chainId !== 8253038 &&
143
+ json?.details?.currencyOut?.currency?.chainId !== 8253038) {
144
+ statusControl.websocketActive = true;
145
+ // Create the promises immediately so they're available for early failures
146
+ websocketFailedPromise = new Promise((resolve) => {
147
+ resolveWebsocketFailed = resolve;
148
+ });
149
+ terminalStatusPromise = new Promise((_, reject) => {
150
+ rejectTerminalStatus = reject;
151
+ });
152
+ statusControl.closeWebSocket = trackRequestStatus({
153
+ event: 'request.status.updated',
154
+ requestId: requestId,
155
+ enabled: true,
156
+ url: client.websocketUrl,
157
+ onOpen: () => {
158
+ client.log(['Websocket open'], LogLevel.Verbose);
159
+ statusControl.websocketConnected = true;
160
+ },
161
+ onUpdate: (data) => {
162
+ handleWebSocketUpdate({
163
+ data,
164
+ stepItems,
165
+ chainId,
166
+ setState,
167
+ json,
168
+ client,
169
+ statusControl,
170
+ onTerminalError: (error) => {
171
+ // Immediately reject when terminal status received
172
+ rejectTerminalStatus?.(error);
173
+ }
174
+ });
175
+ },
176
+ onError: (err) => {
177
+ // Handle WebSocket connection/network errors by falling back to polling
178
+ if (!['success', 'refund'].includes(statusControl.lastKnownStatus || '')) {
179
+ client.log(['Websocket connection error, falling back to polling', err], LogLevel.Verbose);
180
+ statusControl.websocketActive = false;
181
+ statusControl.websocketConnected = false;
182
+ // Clean up any pending failure timeout when WebSocket errors
183
+ clearFailureTimeout(statusControl, client);
184
+ // Trigger the websocket failed promise to start polling fallback
185
+ resolveWebsocketFailed?.();
186
+ }
187
+ },
188
+ onClose: () => {
189
+ client.log(['Websocket closed'], LogLevel.Verbose);
190
+ // Clean up any pending failure timeout when WebSocket closes
191
+ clearFailureTimeout(statusControl, client);
192
+ // Only re-enable polling if we haven't reached a terminal state
193
+ if (!['success', 'refund'].includes(statusControl.lastKnownStatus || '') &&
194
+ !stepItems[0].error) {
195
+ client.log(['Re-enabling polling due to unexpected WebSocket closure'], LogLevel.Verbose);
196
+ // Trigger the websocket failed promise to start polling
197
+ resolveWebsocketFailed?.();
198
+ }
199
+ }
200
+ }).close;
201
+ }
202
+ let { kind } = step;
203
+ client.log([`Execute Steps: Begin processing step items for: ${step.action}`], LogLevel.Verbose);
204
+ const promises = stepItems
205
+ .filter((stepItem) => stepItem.status === 'incomplete')
206
+ .map((stepItem) => {
207
+ return new Promise(async (resolve, reject) => {
208
+ try {
209
+ // Create step execution promise
210
+ const stepExecutionPromise = (async () => {
211
+ // Handle each step based on it's kind
212
+ switch (kind) {
213
+ // Make an on-chain transaction
214
+ case 'transaction': {
215
+ await handleTransactionStepItem({
216
+ stepItem: stepItem,
217
+ step,
218
+ wallet,
219
+ setState,
220
+ request,
221
+ client,
222
+ json,
223
+ chainId,
224
+ isAtomicBatchSupported,
225
+ incompleteStepItemIndex,
226
+ stepItems,
227
+ onWebsocketFailed: statusControl.websocketActive
228
+ ? onWebsocketFailed
229
+ : null,
230
+ statusControl
231
+ });
232
+ break;
233
+ }
234
+ // Sign a message
235
+ case 'signature': {
236
+ await handleSignatureStepItem({
237
+ stepItem,
238
+ step,
239
+ wallet,
240
+ setState,
241
+ request,
242
+ client,
243
+ json,
244
+ maximumAttempts,
245
+ pollingInterval,
246
+ chain,
247
+ onWebsocketFailed: statusControl.websocketActive
248
+ ? onWebsocketFailed
249
+ : null
250
+ });
251
+ break;
252
+ }
253
+ default:
254
+ throw new Error(`Unknown step kind: ${kind}. Expected 'signature' or 'transaction'`);
255
+ }
256
+ })();
257
+ // Allow WebSocket terminal status (failure/refund) to immediately interrupt and stop step execution
258
+ if (statusControl.websocketActive && terminalStatusPromise) {
259
+ await Promise.race([stepExecutionPromise, terminalStatusPromise]);
260
+ }
261
+ else {
262
+ await stepExecutionPromise;
263
+ }
264
+ // Mark step item as complete
265
+ stepItem.status = 'complete';
266
+ stepItem.progressState = 'complete';
267
+ stepItem.isValidatingSignature = false;
268
+ setState({
269
+ steps: [...json?.steps],
270
+ fees: { ...json?.fees },
271
+ breakdown: json?.breakdown,
272
+ details: json?.details
273
+ });
274
+ resolve(stepItem);
275
+ }
276
+ catch (e) {
277
+ const error = e;
278
+ const errorMessage = error
279
+ ? error.message
280
+ : 'Error: something went wrong';
281
+ if (error && json?.steps) {
282
+ json.steps[incompleteStepIndex].error = errorMessage;
283
+ stepItem.error = errorMessage;
284
+ stepItem.errorData = e?.response?.data || e;
285
+ stepItem.isValidatingSignature = false;
286
+ setState({
287
+ steps: [...json?.steps],
288
+ fees: { ...json?.fees },
289
+ breakdown: json?.breakdown,
290
+ details: json?.details
291
+ });
292
+ }
293
+ reject(error);
294
+ }
295
+ });
296
+ });
297
+ await Promise.all(promises);
298
+ // Recursively call executeSteps()
299
+ const result = await executeSteps(chainId, request, wallet, setState, json, stepOptions, statusControl);
300
+ // Clean up WebSocket and failure timeout if execution completes
301
+ statusControl.closeWebSocket?.();
302
+ clearFailureTimeout(statusControl, client);
303
+ return result;
304
+ }
305
+ catch (err) {
306
+ client.log(['Execute Steps: An error occurred', err], LogLevel.Error);
307
+ // Clean up WebSocket and failure timeout on error
308
+ statusControl.closeWebSocket?.();
309
+ clearFailureTimeout(statusControl, client);
310
+ const error = err && err?.response?.data ? err.response.data : err;
311
+ let refunded = false;
312
+ if (error && error.message) {
313
+ refunded = error.message.includes('Refunded');
314
+ }
315
+ else if (error && error.includes) {
316
+ refunded = error.includes('Refunded');
317
+ }
318
+ if (json) {
319
+ json.error = error;
320
+ setState({
321
+ steps: json.steps ? [...json.steps] : [{}],
322
+ fees: { ...json?.fees },
323
+ breakdown: json?.breakdown,
324
+ details: json?.details,
325
+ refunded: refunded,
326
+ error
327
+ });
328
+ }
329
+ else {
330
+ json = {
331
+ error,
332
+ steps: [],
333
+ refunded
334
+ };
335
+ setState(json);
336
+ }
337
+ throw err;
338
+ }
339
+ }
340
+ function clearFailureTimeout(statusControl, client) {
341
+ if (statusControl.websocketFailureTimeoutId) {
342
+ clearTimeout(statusControl.websocketFailureTimeoutId);
343
+ statusControl.websocketFailureTimeoutId = null;
344
+ client.log(['Cleared failure timeout during cleanup'], LogLevel.Verbose);
345
+ }
346
+ }
347
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/executeSteps/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,191 @@
1
+ import { axios } from '../index.js';
2
+ import { LogLevel } from '../logger.js';
3
+ import { sendUsd } from '../hyperliquid.js';
4
+ /**
5
+ * Handles the execution of a signature step item, including signing, posting, and validation.
6
+ */
7
+ export async function handleSignatureStepItem({ stepItem, step, wallet, setState, request, client, json, maximumAttempts, pollingInterval, chain, onWebsocketFailed }) {
8
+ if (!stepItem.data) {
9
+ throw `Step item is missing data`;
10
+ }
11
+ let signature;
12
+ const signData = stepItem.data['sign'];
13
+ const postData = stepItem.data['post'];
14
+ client.log(['Execute Steps: Begin signature step'], LogLevel.Verbose);
15
+ if (signData) {
16
+ stepItem.progressState = 'signing';
17
+ setState({
18
+ steps: [...json.steps],
19
+ fees: { ...json?.fees },
20
+ breakdown: json?.breakdown,
21
+ details: json?.details
22
+ });
23
+ signature = await wallet.handleSignMessageStep(stepItem, step);
24
+ if (signature) {
25
+ request.params = {
26
+ ...request.params,
27
+ signature
28
+ };
29
+ }
30
+ }
31
+ if (chain.id === 1337 && signature) {
32
+ await sendUsd(client, signature, stepItem);
33
+ }
34
+ if (postData) {
35
+ client.log(['Execute Steps: Posting order'], LogLevel.Verbose);
36
+ stepItem.progressState = 'posting';
37
+ setState({
38
+ steps: [...json.steps],
39
+ fees: { ...json?.fees },
40
+ breakdown: json?.breakdown,
41
+ details: json?.details
42
+ });
43
+ const postOrderUrl = new URL(`${request.baseURL}${postData.endpoint}`);
44
+ const headers = {
45
+ 'Content-Type': 'application/json'
46
+ };
47
+ if (postData.body && !postData.body.referrer) {
48
+ postData.body.referrer = client.source;
49
+ }
50
+ try {
51
+ const getData = async function () {
52
+ let response = await axios.request({
53
+ url: postOrderUrl.href,
54
+ data: postData.body ? JSON.stringify(postData.body) : undefined,
55
+ method: postData.method,
56
+ params: request.params,
57
+ headers
58
+ });
59
+ return response;
60
+ };
61
+ const res = await getData();
62
+ // Append new steps if returned in response
63
+ if (res.data && res.data.steps && Array.isArray(res.data.steps)) {
64
+ json.steps = [...json.steps, ...res.data.steps];
65
+ setState({
66
+ steps: [...json.steps, ...res.data.steps],
67
+ fees: { ...json.fees },
68
+ breakdown: json.breakdown,
69
+ details: json.details
70
+ });
71
+ client.log([
72
+ `Execute Steps: New steps appended from ${postData.endpoint}`,
73
+ res.data.steps
74
+ ], LogLevel.Verbose);
75
+ return;
76
+ }
77
+ if (res.status > 299 || res.status < 200)
78
+ throw res.data;
79
+ if (res.data.results) {
80
+ stepItem.orderData = res.data.results;
81
+ }
82
+ else if (res.data && res.data.orderId) {
83
+ stepItem.orderData = [
84
+ {
85
+ orderId: res.data.orderId,
86
+ crossPostingOrderId: res.data.crossPostingOrderId,
87
+ orderIndex: res.data.orderIndex || 0
88
+ }
89
+ ];
90
+ }
91
+ setState({
92
+ steps: [...json?.steps],
93
+ fees: { ...json?.fees },
94
+ breakdown: json?.breakdown,
95
+ details: json?.details
96
+ });
97
+ }
98
+ catch (err) {
99
+ throw err;
100
+ }
101
+ }
102
+ // If check, poll check until validated
103
+ if (stepItem?.check) {
104
+ stepItem.progressState = 'validating';
105
+ setState({
106
+ steps: [...json.steps],
107
+ fees: { ...json?.fees },
108
+ breakdown: json?.breakdown,
109
+ details: json?.details
110
+ });
111
+ stepItem.isValidatingSignature = true;
112
+ setState({
113
+ steps: [...json?.steps],
114
+ fees: { ...json?.fees },
115
+ breakdown: json?.breakdown,
116
+ details: json?.details
117
+ });
118
+ const headers = {
119
+ 'Content-Type': 'application/json'
120
+ };
121
+ // If websocket is enabled, wait for it to fail before falling back to polling
122
+ if (onWebsocketFailed) {
123
+ client.log([
124
+ 'Waiting for WebSocket to fail before starting signature validation polling'
125
+ ], LogLevel.Verbose);
126
+ try {
127
+ await onWebsocketFailed();
128
+ client.log(['WebSocket failed, starting signature polling'], LogLevel.Verbose);
129
+ }
130
+ catch (e) {
131
+ client.log(['WebSocket failed promise rejected, skipping signature polling'], LogLevel.Verbose);
132
+ return;
133
+ }
134
+ }
135
+ // Start polling for signature validation
136
+ const pollWithCancellation = async () => {
137
+ let attemptCount = 0;
138
+ while (attemptCount < maximumAttempts) {
139
+ try {
140
+ const res = await axios.request({
141
+ url: `${request.baseURL}${stepItem?.check?.endpoint}`,
142
+ method: stepItem?.check?.method,
143
+ headers
144
+ });
145
+ client.log([`Execute Steps: Polling execute status to check if indexed`, res], LogLevel.Verbose);
146
+ // Check status
147
+ if (res?.data?.status === 'success' && res?.data?.txHashes) {
148
+ const chainTxHashes = res.data?.txHashes?.map((hash) => {
149
+ return {
150
+ txHash: hash,
151
+ chainId: res.data.destinationChainId ?? chain?.id
152
+ };
153
+ });
154
+ if (res?.data?.inTxHashes) {
155
+ const chainInTxHashes = res.data.inTxHashes.map((hash) => {
156
+ return {
157
+ txHash: hash,
158
+ chainId: chain?.id ?? res.data.originChainId
159
+ };
160
+ });
161
+ stepItem.internalTxHashes = chainInTxHashes;
162
+ }
163
+ stepItem.txHashes = chainTxHashes;
164
+ return; // Success - exit polling
165
+ }
166
+ else if (res?.data?.status === 'failure') {
167
+ throw Error(res?.data?.details || 'Transaction failed');
168
+ }
169
+ else if (res?.data?.status === 'delayed') {
170
+ stepItem.progressState = 'validating_delayed';
171
+ setState({
172
+ steps: [...json?.steps],
173
+ fees: { ...json?.fees },
174
+ breakdown: json?.breakdown,
175
+ details: json?.details
176
+ });
177
+ }
178
+ attemptCount++;
179
+ await new Promise((resolve) => setTimeout(resolve, pollingInterval));
180
+ }
181
+ catch (error) {
182
+ throw error;
183
+ }
184
+ }
185
+ // Max attempts reached
186
+ throw new Error(`Failed to get an ok response after ${attemptCount} attempt(s), aborting`);
187
+ };
188
+ await pollWithCancellation();
189
+ }
190
+ }
191
+ //# sourceMappingURL=signatureStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signatureStep.js","sourceRoot":"","sources":["../../../../src/utils/executeSteps/signatureStep.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import { sendTransactionSafely } from '../transaction.js';
2
+ import { LogLevel } from '../logger.js';
3
+ /**
4
+ * Handles the execution of a transaction step item, including transaction submission and validation.
5
+ */
6
+ export async function handleTransactionStepItem({ stepItem, step, wallet, setState, request, client, json, chainId, isAtomicBatchSupported, incompleteStepItemIndex, stepItems, onWebsocketFailed, statusControl }) {
7
+ if (!stepItem.data) {
8
+ throw `Step item is missing data`;
9
+ }
10
+ client.log(['Execute Steps: Begin transaction step for, sending transaction'], LogLevel.Verbose);
11
+ // if chainId is present in the tx data field then you should relay the tx on that chain
12
+ // otherwise, it's assumed the chain id matched the network the api request was made on
13
+ const transactionChainId = stepItem.data?.chainId ?? chainId;
14
+ const crossChainIntentChainId = chainId;
15
+ stepItem.progressState = 'confirming';
16
+ setState({
17
+ steps: [...json.steps],
18
+ fees: { ...json?.fees },
19
+ breakdown: json?.breakdown,
20
+ details: json?.details
21
+ });
22
+ // If atomic batch is supported and first item in step, batch all items in the step
23
+ const transactionStepItems = isAtomicBatchSupported && incompleteStepItemIndex === 0
24
+ ? stepItems
25
+ : stepItem;
26
+ await sendTransactionSafely(transactionChainId, transactionStepItems, step, wallet, (txHashes) => {
27
+ client.log(['Execute Steps: Transaction step, got transactions', txHashes], LogLevel.Verbose);
28
+ stepItem.txHashes = txHashes;
29
+ setState({
30
+ steps: [...json.steps],
31
+ fees: { ...json?.fees },
32
+ breakdown: json?.breakdown,
33
+ details: json?.details
34
+ });
35
+ }, (internalTxHashes) => {
36
+ stepItem.internalTxHashes = internalTxHashes;
37
+ setState({
38
+ steps: [...json.steps],
39
+ fees: { ...json?.fees },
40
+ breakdown: json?.breakdown,
41
+ details: json?.details
42
+ });
43
+ }, onWebsocketFailed, request, undefined, crossChainIntentChainId, (res) => {
44
+ if (res && res.data.status === 'delayed') {
45
+ stepItem.progressState = 'validating_delayed';
46
+ }
47
+ else {
48
+ stepItem.progressState = 'validating';
49
+ }
50
+ setState({
51
+ steps: [...json.steps],
52
+ fees: { ...json?.fees },
53
+ breakdown: json?.breakdown,
54
+ details: json?.details
55
+ });
56
+ }, json?.details, (receipt) => {
57
+ stepItem.receipt = receipt;
58
+ setState({
59
+ steps: [...json.steps],
60
+ fees: { ...json?.fees },
61
+ breakdown: json?.breakdown,
62
+ details: json?.details
63
+ });
64
+ }, (checkStatus) => {
65
+ if (checkStatus != stepItem.checkStatus) {
66
+ stepItem.checkStatus = checkStatus;
67
+ setState({
68
+ steps: [...json.steps],
69
+ fees: { ...json?.fees },
70
+ breakdown: json?.breakdown,
71
+ details: json?.details
72
+ });
73
+ }
74
+ }, statusControl);
75
+ }
76
+ //# sourceMappingURL=transactionStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionStep.js","sourceRoot":"","sources":["../../../../src/utils/executeSteps/transactionStep.ts"],"names":[],"mappings":"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"}