@lifi/sdk 2.3.1 → 3.0.0-alpha.10

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 (379) hide show
  1. package/dist/cjs/LiFi.js +222 -250
  2. package/dist/cjs/LiFi.js.map +1 -0
  3. package/dist/cjs/allowance/getAllowance.js +82 -0
  4. package/dist/cjs/allowance/getAllowance.js.map +1 -0
  5. package/dist/cjs/allowance/index.js +5 -16
  6. package/dist/cjs/allowance/index.js.map +1 -0
  7. package/dist/cjs/allowance/setAllowance.js +71 -0
  8. package/dist/cjs/allowance/setAllowance.js.map +1 -0
  9. package/dist/cjs/{types/internal.types.js → allowance/types.js} +1 -0
  10. package/dist/cjs/allowance/types.js.map +1 -0
  11. package/dist/cjs/balance/getBalance.js +97 -0
  12. package/dist/cjs/balance/getBalance.js.map +1 -0
  13. package/dist/cjs/balance/getTokenBalance.js +7 -10
  14. package/dist/cjs/balance/getTokenBalance.js.map +1 -0
  15. package/dist/cjs/balance/index.js +4 -24
  16. package/dist/cjs/balance/index.js.map +1 -0
  17. package/dist/cjs/connectors.js +28 -48
  18. package/dist/cjs/connectors.js.map +1 -0
  19. package/dist/cjs/constants.js +7 -0
  20. package/dist/cjs/constants.js.map +1 -0
  21. package/dist/cjs/execution/BaseStepExecutor.js +54 -0
  22. package/dist/cjs/execution/BaseStepExecutor.js.map +1 -0
  23. package/dist/cjs/execution/EVMStepExecutor.js +271 -0
  24. package/dist/cjs/execution/EVMStepExecutor.js.map +1 -0
  25. package/dist/cjs/execution/RouteExecutionManager.js +196 -197
  26. package/dist/cjs/execution/RouteExecutionManager.js.map +1 -0
  27. package/dist/cjs/execution/StatusManager.js +142 -136
  28. package/dist/cjs/execution/StatusManager.js.map +1 -0
  29. package/dist/cjs/execution/StepExecutionManager.js +220 -233
  30. package/dist/cjs/execution/StepExecutionManager.js.map +1 -0
  31. package/dist/cjs/execution/checkAllowance.js +76 -0
  32. package/dist/cjs/execution/checkAllowance.js.map +1 -0
  33. package/dist/cjs/execution/checkBalance.js +42 -0
  34. package/dist/cjs/execution/checkBalance.js.map +1 -0
  35. package/dist/cjs/execution/index.js +4 -15
  36. package/dist/cjs/execution/index.js.map +1 -0
  37. package/dist/cjs/execution/multisig.js +13 -17
  38. package/dist/cjs/execution/multisig.js.map +1 -0
  39. package/dist/cjs/execution/prepareRestart.js +23 -0
  40. package/dist/cjs/execution/prepareRestart.js.map +1 -0
  41. package/dist/cjs/execution/stepComparison.js +5 -17
  42. package/dist/cjs/execution/stepComparison.js.map +1 -0
  43. package/dist/cjs/execution/switchChain.js +10 -22
  44. package/dist/cjs/execution/switchChain.js.map +1 -0
  45. package/dist/cjs/execution/types.js +3 -0
  46. package/dist/cjs/execution/types.js.map +1 -0
  47. package/dist/cjs/execution/utils.js +12 -67
  48. package/dist/cjs/execution/utils.js.map +1 -0
  49. package/dist/cjs/execution/waitForReceivingTransaction.js +56 -0
  50. package/dist/cjs/execution/waitForReceivingTransaction.js.map +1 -0
  51. package/dist/cjs/helpers.js +12 -58
  52. package/dist/cjs/helpers.js.map +1 -0
  53. package/dist/cjs/index.js +16 -22
  54. package/dist/cjs/index.js.map +1 -0
  55. package/dist/cjs/package.json +1 -0
  56. package/dist/cjs/providers/EVM.js +35 -0
  57. package/dist/cjs/providers/EVM.js.map +1 -0
  58. package/dist/cjs/providers/Solana.js +38 -0
  59. package/dist/cjs/providers/Solana.js.map +1 -0
  60. package/dist/cjs/providers/index.js +5 -0
  61. package/dist/cjs/providers/index.js.map +1 -0
  62. package/dist/cjs/providers/types.js +9 -0
  63. package/dist/cjs/providers/types.js.map +1 -0
  64. package/dist/cjs/request.js +10 -13
  65. package/dist/cjs/request.js.map +1 -0
  66. package/dist/cjs/services/ApiService.js +70 -86
  67. package/dist/cjs/services/ApiService.js.map +1 -0
  68. package/dist/cjs/services/ChainsService.js +19 -9
  69. package/dist/cjs/services/ChainsService.js.map +1 -0
  70. package/dist/cjs/services/ConfigService.js +94 -67
  71. package/dist/cjs/services/ConfigService.js.map +1 -0
  72. package/dist/cjs/typeguards.js +1 -0
  73. package/dist/cjs/typeguards.js.map +1 -0
  74. package/dist/cjs/types/abi.js +46 -0
  75. package/dist/cjs/types/abi.js.map +1 -0
  76. package/dist/cjs/types/index.js +4 -20
  77. package/dist/cjs/types/index.js.map +1 -0
  78. package/dist/cjs/types/internal.js +3 -0
  79. package/dist/cjs/types/internal.js.map +1 -0
  80. package/dist/cjs/utils/errors.js +63 -40
  81. package/dist/cjs/utils/errors.js.map +1 -0
  82. package/dist/cjs/utils/getMaxPriorityFeePerGas.js +23 -0
  83. package/dist/cjs/utils/getMaxPriorityFeePerGas.js.map +1 -0
  84. package/dist/cjs/utils/index.js +9 -0
  85. package/dist/cjs/utils/index.js.map +1 -0
  86. package/dist/cjs/utils/median.js +16 -0
  87. package/dist/cjs/utils/median.js.map +1 -0
  88. package/dist/cjs/utils/parseError.js +55 -92
  89. package/dist/cjs/utils/parseError.js.map +1 -0
  90. package/dist/cjs/utils/utils.js +10 -85
  91. package/dist/cjs/utils/utils.js.map +1 -0
  92. package/dist/cjs/version.js +2 -1
  93. package/dist/cjs/version.js.map +1 -0
  94. package/dist/esm/LiFi.js +375 -0
  95. package/dist/esm/LiFi.js.map +1 -0
  96. package/dist/esm/allowance/getAllowance.js +79 -0
  97. package/dist/esm/allowance/getAllowance.js.map +1 -0
  98. package/dist/esm/allowance/index.js +4 -0
  99. package/dist/esm/allowance/index.js.map +1 -0
  100. package/dist/esm/allowance/setAllowance.js +67 -0
  101. package/dist/esm/allowance/setAllowance.js.map +1 -0
  102. package/dist/esm/allowance/types.js +2 -0
  103. package/dist/esm/allowance/types.js.map +1 -0
  104. package/dist/esm/balance/getBalance.js +93 -0
  105. package/dist/esm/balance/getBalance.js.map +1 -0
  106. package/dist/{balance → esm/balance}/getTokenBalance.js +5 -4
  107. package/dist/esm/balance/getTokenBalance.js.map +1 -0
  108. package/dist/esm/balance/index.js +3 -0
  109. package/dist/esm/balance/index.js.map +1 -0
  110. package/dist/esm/connectors.js +42 -0
  111. package/dist/esm/connectors.js.map +1 -0
  112. package/dist/esm/constants.js +7 -0
  113. package/dist/esm/constants.js.map +1 -0
  114. package/dist/esm/execution/BaseStepExecutor.js +51 -0
  115. package/dist/esm/execution/BaseStepExecutor.js.map +1 -0
  116. package/dist/esm/execution/EVMStepExecutor.js +299 -0
  117. package/dist/esm/execution/EVMStepExecutor.js.map +1 -0
  118. package/dist/esm/execution/RouteExecutionManager.js +268 -0
  119. package/dist/esm/execution/RouteExecutionManager.js.map +1 -0
  120. package/dist/esm/execution/StatusManager.js +216 -0
  121. package/dist/esm/execution/StatusManager.js.map +1 -0
  122. package/dist/esm/execution/StepExecutionManager.js +280 -0
  123. package/dist/esm/execution/StepExecutionManager.js.map +1 -0
  124. package/dist/esm/execution/checkAllowance.js +74 -0
  125. package/dist/esm/execution/checkAllowance.js.map +1 -0
  126. package/dist/esm/execution/checkBalance.js +39 -0
  127. package/dist/esm/execution/checkBalance.js.map +1 -0
  128. package/dist/esm/execution/index.js +3 -0
  129. package/dist/esm/execution/index.js.map +1 -0
  130. package/dist/esm/execution/multisig.js +26 -0
  131. package/dist/esm/execution/multisig.js.map +1 -0
  132. package/dist/esm/execution/prepareRestart.js +64 -0
  133. package/dist/esm/execution/prepareRestart.js.map +1 -0
  134. package/dist/{execution → esm/execution}/stepComparison.js +5 -4
  135. package/dist/esm/execution/stepComparison.js.map +1 -0
  136. package/dist/{execution → esm/execution}/switchChain.js +19 -12
  137. package/dist/esm/execution/switchChain.js.map +1 -0
  138. package/dist/esm/execution/types.js +2 -0
  139. package/dist/esm/execution/types.js.map +1 -0
  140. package/dist/esm/execution/utils.js +80 -0
  141. package/dist/esm/execution/utils.js.map +1 -0
  142. package/dist/esm/execution/waitForReceivingTransaction.js +52 -0
  143. package/dist/esm/execution/waitForReceivingTransaction.js.map +1 -0
  144. package/dist/{helpers.js → esm/helpers.js} +9 -37
  145. package/dist/esm/helpers.js.map +1 -0
  146. package/dist/esm/index.js +10 -0
  147. package/dist/esm/index.js.map +1 -0
  148. package/dist/esm/package.json +1 -0
  149. package/dist/esm/providers/EVM.js +30 -0
  150. package/dist/esm/providers/EVM.js.map +1 -0
  151. package/dist/esm/providers/Solana.js +34 -0
  152. package/dist/esm/providers/Solana.js.map +1 -0
  153. package/dist/esm/providers/index.js +2 -0
  154. package/dist/esm/providers/index.js.map +1 -0
  155. package/dist/esm/providers/types.js +6 -0
  156. package/dist/esm/providers/types.js.map +1 -0
  157. package/dist/{request.js → esm/request.js} +6 -5
  158. package/dist/esm/request.js.map +1 -0
  159. package/dist/{services → esm/services}/ApiService.js +29 -26
  160. package/dist/esm/services/ApiService.js.map +1 -0
  161. package/dist/{services → esm/services}/ChainsService.js +16 -4
  162. package/dist/esm/services/ChainsService.js.map +1 -0
  163. package/dist/esm/services/ConfigService.js +143 -0
  164. package/dist/esm/services/ConfigService.js.map +1 -0
  165. package/dist/{typeguards.js → esm/typeguards.js} +1 -0
  166. package/dist/esm/typeguards.js.map +1 -0
  167. package/dist/esm/types/abi.js +43 -0
  168. package/dist/esm/types/abi.js.map +1 -0
  169. package/dist/esm/types/index.js +3 -0
  170. package/dist/esm/types/index.js.map +1 -0
  171. package/dist/esm/types/internal.js +2 -0
  172. package/dist/esm/types/internal.js.map +1 -0
  173. package/dist/{utils → esm/utils}/errors.js +61 -35
  174. package/dist/esm/utils/errors.js.map +1 -0
  175. package/dist/esm/utils/getMaxPriorityFeePerGas.js +19 -0
  176. package/dist/esm/utils/getMaxPriorityFeePerGas.js.map +1 -0
  177. package/dist/esm/utils/index.js +6 -0
  178. package/dist/esm/utils/index.js.map +1 -0
  179. package/dist/esm/utils/median.js +12 -0
  180. package/dist/esm/utils/median.js.map +1 -0
  181. package/dist/{utils → esm/utils}/parseError.js +45 -41
  182. package/dist/esm/utils/parseError.js.map +1 -0
  183. package/dist/esm/utils/utils.js +38 -0
  184. package/dist/esm/utils/utils.js.map +1 -0
  185. package/dist/esm/version.js +3 -0
  186. package/dist/esm/version.js.map +1 -0
  187. package/dist/types/LiFi.d.ts +179 -0
  188. package/dist/types/LiFi.d.ts.map +1 -0
  189. package/dist/types/allowance/getAllowance.d.ts +7 -0
  190. package/dist/types/allowance/getAllowance.d.ts.map +1 -0
  191. package/dist/types/allowance/index.d.ts +4 -0
  192. package/dist/types/allowance/index.d.ts.map +1 -0
  193. package/dist/types/allowance/setAllowance.d.ts +7 -0
  194. package/dist/types/allowance/setAllowance.d.ts.map +1 -0
  195. package/dist/types/allowance/types.d.ts +28 -0
  196. package/dist/types/allowance/types.d.ts.map +1 -0
  197. package/dist/types/balance/getBalance.d.ts +3 -0
  198. package/dist/types/balance/getBalance.d.ts.map +1 -0
  199. package/dist/{balance → types/balance}/getTokenBalance.d.ts +3 -2
  200. package/dist/types/balance/getTokenBalance.d.ts.map +1 -0
  201. package/dist/types/balance/index.d.ts +3 -0
  202. package/dist/types/balance/index.d.ts.map +1 -0
  203. package/dist/types/connectors.d.ts +9 -0
  204. package/dist/types/connectors.d.ts.map +1 -0
  205. package/dist/types/constants.d.ts +7 -0
  206. package/dist/types/constants.d.ts.map +1 -0
  207. package/dist/types/execution/BaseStepExecutor.d.ts +13 -0
  208. package/dist/types/execution/BaseStepExecutor.d.ts.map +1 -0
  209. package/dist/types/execution/EVMStepExecutor.d.ts +14 -0
  210. package/dist/types/execution/EVMStepExecutor.d.ts.map +1 -0
  211. package/dist/types/execution/RouteExecutionManager.d.ts +61 -0
  212. package/dist/types/execution/RouteExecutionManager.d.ts.map +1 -0
  213. package/dist/types/execution/StatusManager.d.ts +69 -0
  214. package/dist/types/execution/StatusManager.d.ts.map +1 -0
  215. package/dist/types/execution/StepExecutionManager.d.ts +8 -0
  216. package/dist/types/execution/StepExecutionManager.d.ts.map +1 -0
  217. package/dist/types/execution/checkAllowance.d.ts +6 -0
  218. package/dist/types/execution/checkAllowance.d.ts.map +1 -0
  219. package/dist/types/execution/checkBalance.d.ts +3 -0
  220. package/dist/types/execution/checkBalance.d.ts.map +1 -0
  221. package/dist/types/execution/index.d.ts +3 -0
  222. package/dist/types/execution/index.d.ts.map +1 -0
  223. package/dist/types/execution/multisig.d.ts +5 -0
  224. package/dist/types/execution/multisig.d.ts.map +1 -0
  225. package/dist/types/execution/prepareRestart.d.ts +3 -0
  226. package/dist/types/execution/prepareRestart.d.ts.map +1 -0
  227. package/dist/{execution → types/execution}/stepComparison.d.ts +6 -4
  228. package/dist/types/execution/stepComparison.d.ts.map +1 -0
  229. package/dist/types/execution/switchChain.d.ts +23 -0
  230. package/dist/types/execution/switchChain.d.ts.map +1 -0
  231. package/dist/types/execution/types.d.ts +83 -0
  232. package/dist/types/execution/types.d.ts.map +1 -0
  233. package/dist/types/execution/utils.d.ts +13 -0
  234. package/dist/types/execution/utils.d.ts.map +1 -0
  235. package/dist/types/execution/waitForReceivingTransaction.d.ts +4 -0
  236. package/dist/types/execution/waitForReceivingTransaction.d.ts.map +1 -0
  237. package/dist/types/helpers.d.ts +19 -0
  238. package/dist/types/helpers.d.ts.map +1 -0
  239. package/dist/types/index.d.ts +9 -3
  240. package/dist/types/index.d.ts.map +1 -0
  241. package/dist/types/providers/EVM.d.ts +11 -0
  242. package/dist/types/providers/EVM.d.ts.map +1 -0
  243. package/dist/types/providers/Solana.d.ts +10 -0
  244. package/dist/types/providers/Solana.d.ts.map +1 -0
  245. package/dist/types/providers/index.d.ts +2 -0
  246. package/dist/types/providers/index.d.ts.map +1 -0
  247. package/dist/types/providers/types.d.ts +13 -0
  248. package/dist/types/providers/types.d.ts.map +1 -0
  249. package/dist/{request.d.ts → types/request.d.ts} +1 -0
  250. package/dist/types/request.d.ts.map +1 -0
  251. package/dist/{cjs → types}/services/ApiService.d.ts +5 -5
  252. package/dist/types/services/ApiService.d.ts.map +1 -0
  253. package/dist/{services → types/services}/ChainsService.d.ts +3 -2
  254. package/dist/types/services/ChainsService.d.ts.map +1 -0
  255. package/dist/{services → types/services}/ConfigService.d.ts +10 -6
  256. package/dist/types/services/ConfigService.d.ts.map +1 -0
  257. package/dist/{cjs → types}/typeguards.d.ts +3 -2
  258. package/dist/types/typeguards.d.ts.map +1 -0
  259. package/dist/types/types/abi.d.ts +6 -0
  260. package/dist/types/types/abi.d.ts.map +1 -0
  261. package/dist/types/types/index.d.ts +3 -0
  262. package/dist/types/types/index.d.ts.map +1 -0
  263. package/dist/types/types/internal.d.ts +61 -0
  264. package/dist/types/types/internal.d.ts.map +1 -0
  265. package/dist/{cjs → types}/utils/errors.d.ts +16 -14
  266. package/dist/types/utils/errors.d.ts.map +1 -0
  267. package/dist/types/utils/getMaxPriorityFeePerGas.d.ts +3 -0
  268. package/dist/types/utils/getMaxPriorityFeePerGas.d.ts.map +1 -0
  269. package/dist/types/utils/index.d.ts +6 -0
  270. package/dist/types/utils/index.d.ts.map +1 -0
  271. package/dist/types/utils/median.d.ts +2 -0
  272. package/dist/types/utils/median.d.ts.map +1 -0
  273. package/dist/{utils → types/utils}/parseError.d.ts +7 -6
  274. package/dist/types/utils/parseError.d.ts.map +1 -0
  275. package/dist/types/utils/utils.d.ts +11 -0
  276. package/dist/types/utils/utils.d.ts.map +1 -0
  277. package/dist/types/version.d.ts +3 -0
  278. package/dist/types/version.d.ts.map +1 -0
  279. package/package.json +37 -95
  280. package/dist/LiFi.d.ts +0 -164
  281. package/dist/LiFi.js +0 -235
  282. package/dist/allowance/checkAllowance.d.ts +0 -4
  283. package/dist/allowance/checkAllowance.js +0 -96
  284. package/dist/allowance/index.d.ts +0 -2
  285. package/dist/allowance/index.js +0 -2
  286. package/dist/allowance/tokenApproval.d.ts +0 -22
  287. package/dist/allowance/tokenApproval.js +0 -59
  288. package/dist/allowance/utils.d.ts +0 -14
  289. package/dist/allowance/utils.js +0 -72
  290. package/dist/balance/checkBalance.d.ts +0 -3
  291. package/dist/balance/checkBalance.js +0 -38
  292. package/dist/balance/index.d.ts +0 -13
  293. package/dist/balance/index.js +0 -10
  294. package/dist/balance/utils.d.ts +0 -6
  295. package/dist/balance/utils.js +0 -143
  296. package/dist/cjs/LiFi.d.ts +0 -164
  297. package/dist/cjs/allowance/checkAllowance.d.ts +0 -4
  298. package/dist/cjs/allowance/checkAllowance.js +0 -103
  299. package/dist/cjs/allowance/index.d.ts +0 -2
  300. package/dist/cjs/allowance/tokenApproval.d.ts +0 -22
  301. package/dist/cjs/allowance/tokenApproval.js +0 -69
  302. package/dist/cjs/allowance/utils.d.ts +0 -14
  303. package/dist/cjs/allowance/utils.js +0 -82
  304. package/dist/cjs/balance/checkBalance.d.ts +0 -3
  305. package/dist/cjs/balance/checkBalance.js +0 -45
  306. package/dist/cjs/balance/getTokenBalance.d.ts +0 -8
  307. package/dist/cjs/balance/index.d.ts +0 -13
  308. package/dist/cjs/balance/utils.d.ts +0 -6
  309. package/dist/cjs/balance/utils.js +0 -150
  310. package/dist/cjs/connectors.d.ts +0 -6
  311. package/dist/cjs/execution/RouteExecutionManager.d.ts +0 -65
  312. package/dist/cjs/execution/StatusManager.d.ts +0 -68
  313. package/dist/cjs/execution/StepExecutionManager.d.ts +0 -7
  314. package/dist/cjs/execution/StepExecutor.d.ts +0 -15
  315. package/dist/cjs/execution/StepExecutor.js +0 -62
  316. package/dist/cjs/execution/index.d.ts +0 -1
  317. package/dist/cjs/execution/multisig.d.ts +0 -3
  318. package/dist/cjs/execution/stepComparison.d.ts +0 -14
  319. package/dist/cjs/execution/switchChain.d.ts +0 -16
  320. package/dist/cjs/execution/utils.d.ts +0 -6
  321. package/dist/cjs/helpers.d.ts +0 -28
  322. package/dist/cjs/index.d.ts +0 -5
  323. package/dist/cjs/request.d.ts +0 -9
  324. package/dist/cjs/services/ChainsService.d.ts +0 -11
  325. package/dist/cjs/services/ConfigService.d.ts +0 -23
  326. package/dist/cjs/types/ERC20.d.ts +0 -22
  327. package/dist/cjs/types/ERC20.js +0 -53
  328. package/dist/cjs/types/index.d.ts +0 -4
  329. package/dist/cjs/types/internal.types.d.ts +0 -151
  330. package/dist/cjs/utils/getProvider.d.ts +0 -3
  331. package/dist/cjs/utils/getProvider.js +0 -11
  332. package/dist/cjs/utils/multicall.d.ts +0 -10
  333. package/dist/cjs/utils/multicall.js +0 -68
  334. package/dist/cjs/utils/multicallAbi.json +0 -313
  335. package/dist/cjs/utils/parseError.d.ts +0 -37
  336. package/dist/cjs/utils/preRestart.d.ts +0 -3
  337. package/dist/cjs/utils/preRestart.js +0 -56
  338. package/dist/cjs/utils/utils.d.ts +0 -25
  339. package/dist/cjs/version.d.ts +0 -2
  340. package/dist/connectors.d.ts +0 -6
  341. package/dist/connectors.js +0 -57
  342. package/dist/execution/RouteExecutionManager.d.ts +0 -65
  343. package/dist/execution/RouteExecutionManager.js +0 -213
  344. package/dist/execution/StatusManager.d.ts +0 -68
  345. package/dist/execution/StatusManager.js +0 -168
  346. package/dist/execution/StepExecutionManager.d.ts +0 -7
  347. package/dist/execution/StepExecutionManager.js +0 -267
  348. package/dist/execution/StepExecutor.d.ts +0 -15
  349. package/dist/execution/StepExecutor.js +0 -58
  350. package/dist/execution/index.d.ts +0 -1
  351. package/dist/execution/index.js +0 -1
  352. package/dist/execution/multisig.d.ts +0 -3
  353. package/dist/execution/multisig.js +0 -27
  354. package/dist/execution/switchChain.d.ts +0 -16
  355. package/dist/execution/utils.d.ts +0 -6
  356. package/dist/execution/utils.js +0 -122
  357. package/dist/helpers.d.ts +0 -28
  358. package/dist/index.d.ts +0 -5
  359. package/dist/index.js +0 -6
  360. package/dist/services/ApiService.d.ts +0 -17
  361. package/dist/services/ConfigService.js +0 -101
  362. package/dist/typeguards.d.ts +0 -4
  363. package/dist/types/ERC20.d.ts +0 -22
  364. package/dist/types/ERC20.js +0 -50
  365. package/dist/types/index.js +0 -4
  366. package/dist/types/internal.types.d.ts +0 -151
  367. package/dist/types/internal.types.js +0 -1
  368. package/dist/utils/errors.d.ts +0 -106
  369. package/dist/utils/getProvider.d.ts +0 -3
  370. package/dist/utils/getProvider.js +0 -7
  371. package/dist/utils/multicall.d.ts +0 -10
  372. package/dist/utils/multicall.js +0 -61
  373. package/dist/utils/multicallAbi.json +0 -313
  374. package/dist/utils/preRestart.d.ts +0 -3
  375. package/dist/utils/preRestart.js +0 -52
  376. package/dist/utils/utils.d.ts +0 -25
  377. package/dist/utils/utils.js +0 -99
  378. package/dist/version.d.ts +0 -2
  379. package/dist/version.js +0 -2
@@ -0,0 +1,280 @@
1
+ import { publicActions } from 'viem';
2
+ import ApiService from '../services/ApiService.js';
3
+ import { ChainsService } from '../services/ChainsService.js';
4
+ import { ConfigService } from '../services/ConfigService.js';
5
+ import { LiFiErrorCode, TransactionError, ValidationError, getMaxPriorityFeePerGas, } from '../utils/index.js';
6
+ import { getTransactionFailedMessage, parseError } from '../utils/parseError.js';
7
+ import { isZeroAddress } from '../utils/utils.js';
8
+ import { checkAllowance } from './checkAllowance.js';
9
+ import { checkBalance } from './checkBalance.js';
10
+ import { updateMultisigRouteProcess } from './multisig.js';
11
+ import { stepComparison } from './stepComparison.js';
12
+ import { switchChain } from './switchChain.js';
13
+ import { getSubstatusMessage } from './utils.js';
14
+ import { waitForReceivingTransaction } from './waitForReceivingTransaction.js';
15
+ export class StepExecutionManager {
16
+ constructor() {
17
+ Object.defineProperty(this, "allowUserInteraction", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: true
22
+ });
23
+ Object.defineProperty(this, "allowInteraction", {
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true,
27
+ value: (value) => {
28
+ this.allowUserInteraction = value;
29
+ }
30
+ });
31
+ Object.defineProperty(this, "execute", {
32
+ enumerable: true,
33
+ configurable: true,
34
+ writable: true,
35
+ value: async ({ walletClient, step, statusManager, settings, }) => {
36
+ const client = walletClient.extend(publicActions);
37
+ const config = ConfigService.getInstance().getConfig();
38
+ const isMultisigWalletClient = !!config.multisig?.isMultisigWalletClient;
39
+ const multisigBatchTransactions = [];
40
+ const shouldBatchTransactions = config.multisig?.shouldBatchTransactions &&
41
+ !!config.multisig.sendBatchTransaction;
42
+ step.execution = statusManager.initExecutionObject(step);
43
+ const chainsService = ChainsService.getInstance();
44
+ const fromChain = await chainsService.getChainById(step.action.fromChainId);
45
+ const toChain = await chainsService.getChainById(step.action.toChainId);
46
+ const isBridgeExecution = fromChain.id !== toChain.id;
47
+ const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP';
48
+ // STEP 1: Check allowance
49
+ const existingProcess = step.execution.process.find((p) => p.type === currentProcessType);
50
+ // Check token approval only if fromToken is not the native token => no approval needed in that case
51
+ const checkForAllowance = !existingProcess?.txHash &&
52
+ !isZeroAddress(step.action.fromToken.address) &&
53
+ (shouldBatchTransactions || !isMultisigWalletClient);
54
+ if (checkForAllowance) {
55
+ const data = await checkAllowance(client, step, statusManager, settings, fromChain, this.allowUserInteraction, shouldBatchTransactions);
56
+ if (data) {
57
+ // allowance doesn't need value
58
+ const baseTransaction = {
59
+ to: step.action.fromToken.address,
60
+ data,
61
+ };
62
+ multisigBatchTransactions.push(baseTransaction);
63
+ }
64
+ }
65
+ // STEP 2: Get transaction
66
+ let process = statusManager.findOrCreateProcess(step, currentProcessType);
67
+ if (process.status !== 'DONE') {
68
+ const multisigProcess = step.execution.process.find((p) => !!p.multisigTxHash);
69
+ try {
70
+ if (isMultisigWalletClient && multisigProcess) {
71
+ const multisigTxHash = multisigProcess.multisigTxHash;
72
+ if (!multisigTxHash) {
73
+ throw new ValidationError('Multisig internal transaction hash is undefined.');
74
+ }
75
+ await updateMultisigRouteProcess(multisigTxHash, step, statusManager, process.type, fromChain);
76
+ }
77
+ let txHash;
78
+ if (process.txHash) {
79
+ // Make sure that the chain is still correct
80
+ const updatedWalletClient = await switchChain(walletClient, statusManager, step, settings.switchChainHook, this.allowUserInteraction);
81
+ if (!updatedWalletClient) {
82
+ // Chain switch was not successful, stop execution here
83
+ return step;
84
+ }
85
+ walletClient = updatedWalletClient;
86
+ // Load exiting transaction
87
+ txHash = process.txHash;
88
+ }
89
+ else {
90
+ process = statusManager.updateProcess(step, process.type, 'STARTED');
91
+ // Check balance
92
+ await checkBalance(client.account.address, step);
93
+ // Create new transaction
94
+ if (!step.transactionRequest) {
95
+ const updatedStep = await ApiService.getStepTransaction(step);
96
+ const comparedStep = await stepComparison(statusManager, step, updatedStep, settings, this.allowUserInteraction);
97
+ step = {
98
+ ...comparedStep,
99
+ execution: step.execution,
100
+ };
101
+ }
102
+ if (!step.transactionRequest) {
103
+ throw new TransactionError(LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
104
+ }
105
+ // STEP 3: Send the transaction
106
+ // Make sure that the chain is still correct
107
+ const updatedWalletClient = await switchChain(walletClient, statusManager, step, settings.switchChainHook, this.allowUserInteraction);
108
+ if (!updatedWalletClient) {
109
+ // Chain switch was not successful, stop execution here
110
+ return step;
111
+ }
112
+ walletClient = updatedWalletClient;
113
+ process = statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED');
114
+ if (!this.allowUserInteraction) {
115
+ return step;
116
+ }
117
+ let transactionRequest = {
118
+ to: step.transactionRequest.to,
119
+ from: step.transactionRequest.from,
120
+ data: step.transactionRequest.data,
121
+ value: step.transactionRequest.value
122
+ ? BigInt(step.transactionRequest.value)
123
+ : undefined,
124
+ gas: step.transactionRequest.gasLimit
125
+ ? BigInt(step.transactionRequest.gasLimit)
126
+ : undefined,
127
+ // gasPrice: step.transactionRequest.gasPrice
128
+ // ? BigInt(step.transactionRequest.gasPrice as string)
129
+ // : undefined,
130
+ // maxFeePerGas: step.transactionRequest.maxFeePerGas
131
+ // ? BigInt(step.transactionRequest.maxFeePerGas as string)
132
+ // : undefined,
133
+ maxPriorityFeePerGas: walletClient.account?.type === 'local'
134
+ ? await getMaxPriorityFeePerGas(client)
135
+ : step.transactionRequest.maxPriorityFeePerGas
136
+ ? BigInt(step.transactionRequest.maxPriorityFeePerGas)
137
+ : undefined,
138
+ };
139
+ if (settings.updateTransactionRequestHook) {
140
+ const customizedTransactionRequest = await settings.updateTransactionRequestHook({
141
+ requestType: 'transaction',
142
+ ...transactionRequest,
143
+ });
144
+ transactionRequest = {
145
+ ...transactionRequest,
146
+ ...customizedTransactionRequest,
147
+ };
148
+ }
149
+ if (shouldBatchTransactions &&
150
+ config.multisig?.sendBatchTransaction) {
151
+ if (transactionRequest.to && transactionRequest.data) {
152
+ const populatedTransaction = {
153
+ value: transactionRequest.value,
154
+ to: transactionRequest.to,
155
+ data: transactionRequest.data,
156
+ };
157
+ multisigBatchTransactions.push(populatedTransaction);
158
+ txHash = await config.multisig?.sendBatchTransaction(multisigBatchTransactions);
159
+ }
160
+ else {
161
+ throw new TransactionError(LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
162
+ }
163
+ }
164
+ else {
165
+ txHash = await walletClient.sendTransaction({
166
+ to: transactionRequest.to,
167
+ account: walletClient.account,
168
+ data: transactionRequest.data,
169
+ gas: transactionRequest.gas,
170
+ gasPrice: transactionRequest.gasPrice,
171
+ maxFeePerGas: transactionRequest.maxFeePerGas,
172
+ maxPriorityFeePerGas: transactionRequest.maxPriorityFeePerGas,
173
+ chain: null,
174
+ });
175
+ }
176
+ // STEP 4: Wait for the transaction
177
+ if (isMultisigWalletClient) {
178
+ process = statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED', {
179
+ multisigTxHash: txHash,
180
+ });
181
+ }
182
+ else {
183
+ process = statusManager.updateProcess(step, process.type, 'PENDING', {
184
+ txHash: txHash,
185
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
186
+ });
187
+ }
188
+ }
189
+ let replacementReason;
190
+ const transactionReceipt = await client.waitForTransactionReceipt({
191
+ hash: txHash,
192
+ onReplaced(response) {
193
+ replacementReason = response.reason;
194
+ statusManager.updateProcess(step, process.type, 'PENDING', {
195
+ txHash: response.transaction.hash,
196
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${response.transaction.hash}`,
197
+ });
198
+ },
199
+ });
200
+ if (replacementReason === 'cancelled') {
201
+ throw new TransactionError(LiFiErrorCode.TransactionCanceled, 'User canceled transaction.');
202
+ }
203
+ // if it's multisig wallet client and the process is in ACTION_REQUIRED
204
+ // then signatures are still needed
205
+ if (isMultisigWalletClient && process.status === 'ACTION_REQUIRED') {
206
+ await updateMultisigRouteProcess(transactionReceipt.transactionHash, step, statusManager, process.type, fromChain);
207
+ }
208
+ if (!isMultisigWalletClient) {
209
+ process = statusManager.updateProcess(step, process.type, 'PENDING', {
210
+ txHash: transactionReceipt.transactionHash,
211
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${transactionReceipt.transactionHash}`,
212
+ });
213
+ }
214
+ if (isBridgeExecution) {
215
+ process = statusManager.updateProcess(step, process.type, 'DONE');
216
+ }
217
+ }
218
+ catch (e) {
219
+ const error = await parseError(e, step, process);
220
+ process = statusManager.updateProcess(step, process.type, 'FAILED', {
221
+ error: {
222
+ message: error.message,
223
+ htmlMessage: error.htmlMessage,
224
+ code: error.code,
225
+ },
226
+ });
227
+ statusManager.updateExecution(step, 'FAILED');
228
+ throw error;
229
+ }
230
+ }
231
+ // STEP 5: Wait for the receiving chain
232
+ const processTxHash = process.txHash;
233
+ if (isBridgeExecution) {
234
+ process = statusManager.findOrCreateProcess(step, 'RECEIVING_CHAIN', 'PENDING');
235
+ }
236
+ let statusResponse;
237
+ try {
238
+ if (!processTxHash) {
239
+ throw new Error('Transaction hash is undefined.');
240
+ }
241
+ statusResponse = (await waitForReceivingTransaction(processTxHash, statusManager, process.type, step));
242
+ const statusReceiving = statusResponse.receiving;
243
+ process = statusManager.updateProcess(step, process.type, 'DONE', {
244
+ substatus: statusResponse.substatus,
245
+ substatusMessage: statusResponse.substatusMessage ||
246
+ getSubstatusMessage(statusResponse.status, statusResponse.substatus),
247
+ txHash: statusReceiving?.txHash,
248
+ txLink: `${toChain.metamask.blockExplorerUrls[0]}tx/${statusReceiving?.txHash}`,
249
+ });
250
+ statusManager.updateExecution(step, 'DONE', {
251
+ fromAmount: statusResponse.sending.amount,
252
+ toAmount: statusReceiving?.amount,
253
+ toToken: statusReceiving?.token,
254
+ gasAmount: statusResponse.sending.gasAmount,
255
+ gasAmountUSD: statusResponse.sending.gasAmountUSD,
256
+ gasPrice: statusResponse.sending.gasPrice,
257
+ gasToken: statusResponse.sending.gasToken,
258
+ gasUsed: statusResponse.sending.gasUsed,
259
+ });
260
+ }
261
+ catch (e) {
262
+ const htmlMessage = await getTransactionFailedMessage(step, process.txLink);
263
+ process = statusManager.updateProcess(step, process.type, 'FAILED', {
264
+ error: {
265
+ code: LiFiErrorCode.TransactionFailed,
266
+ message: 'Failed while waiting for receiving chain.',
267
+ htmlMessage,
268
+ },
269
+ });
270
+ statusManager.updateExecution(step, 'FAILED');
271
+ console.warn(e);
272
+ throw e;
273
+ }
274
+ // DONE
275
+ return step;
276
+ }
277
+ });
278
+ }
279
+ }
280
+ //# sourceMappingURL=StepExecutionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepExecutionManager.js","sourceRoot":"","sources":["../../../src/execution/StepExecutionManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { maxUint256, publicActions } from 'viem';
2
+ import { getAllowance, setAllowance } from '../allowance/index.js';
3
+ import { LiFiErrorCode, TransactionError } from '../utils/index.js';
4
+ import { parseError } from '../utils/parseError.js';
5
+ export const checkAllowance = async (walletClient, step, statusManager, settings, chain, allowUserInteraction = false, shouldBatchTransactions = false) => {
6
+ // Ask the user to set an allowance
7
+ let allowanceProcess = statusManager.findOrCreateProcess(step, 'TOKEN_ALLOWANCE');
8
+ // Check allowance
9
+ try {
10
+ if (allowanceProcess.txHash && allowanceProcess.status !== 'DONE') {
11
+ await waitForApprovalTransaction(walletClient, allowanceProcess.txHash, allowanceProcess.type, step, chain, statusManager);
12
+ }
13
+ else {
14
+ const approved = await getAllowance(chain.id, step.action.fromToken.address, walletClient.account.address, step.estimate.approvalAddress);
15
+ const fromAmount = BigInt(step.action.fromAmount);
16
+ if (fromAmount > approved) {
17
+ if (!allowUserInteraction) {
18
+ return;
19
+ }
20
+ const approvalAmount = settings.infiniteApproval
21
+ ? maxUint256
22
+ : fromAmount;
23
+ if (shouldBatchTransactions) {
24
+ const approveTxHash = await setAllowance(walletClient, step.action.fromToken.address, step.estimate.approvalAddress, approvalAmount, settings, true);
25
+ allowanceProcess = statusManager.updateProcess(step, allowanceProcess.type, 'DONE');
26
+ return approveTxHash;
27
+ }
28
+ const approveTxHash = await setAllowance(walletClient, step.action.fromToken.address, step.estimate.approvalAddress, approvalAmount);
29
+ await waitForApprovalTransaction(walletClient, approveTxHash, allowanceProcess.type, step, chain, statusManager);
30
+ }
31
+ else {
32
+ allowanceProcess = statusManager.updateProcess(step, allowanceProcess.type, 'DONE');
33
+ }
34
+ }
35
+ }
36
+ catch (e) {
37
+ const error = await parseError(e, step, allowanceProcess);
38
+ allowanceProcess = statusManager.updateProcess(step, allowanceProcess.type, 'FAILED', {
39
+ error: {
40
+ message: error.message,
41
+ htmlMessage: error.htmlMessage,
42
+ code: error.code,
43
+ },
44
+ });
45
+ statusManager.updateExecution(step, 'FAILED');
46
+ throw error;
47
+ }
48
+ };
49
+ const waitForApprovalTransaction = async (walletClient, txHash, processType, step, chain, statusManager) => {
50
+ const client = walletClient.extend(publicActions);
51
+ statusManager.updateProcess(step, processType, 'PENDING', {
52
+ txHash,
53
+ txLink: `${chain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
54
+ });
55
+ let replacementReason;
56
+ const transactionReceipt = await client.waitForTransactionReceipt({
57
+ hash: txHash,
58
+ onReplaced(response) {
59
+ replacementReason = response.reason;
60
+ statusManager.updateProcess(step, processType, 'PENDING', {
61
+ txHash: response.transaction.hash,
62
+ txLink: `${chain.metamask.blockExplorerUrls[0]}tx/${response.transaction.hash}`,
63
+ });
64
+ },
65
+ });
66
+ if (replacementReason === 'cancelled') {
67
+ throw new TransactionError(LiFiErrorCode.TransactionCanceled, 'User canceled transaction.');
68
+ }
69
+ statusManager.updateProcess(step, processType, 'DONE', {
70
+ txHash: transactionReceipt.transactionHash,
71
+ txLink: `${chain.metamask.blockExplorerUrls[0]}tx/${transactionReceipt.transactionHash}`,
72
+ });
73
+ };
74
+ //# sourceMappingURL=checkAllowance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkAllowance.js","sourceRoot":"","sources":["../../../src/execution/checkAllowance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { formatUnits } from 'viem';
2
+ import { getTokenBalance } from '../balance/index.js';
3
+ import { BalanceError } from '../utils/errors.js';
4
+ export const checkBalance = async (walletAddress, step, depth = 0) => {
5
+ const token = await getTokenBalance(walletAddress, step.action.fromToken);
6
+ if (token) {
7
+ const currentBalance = token.amount ?? 0n;
8
+ const neededBalance = BigInt(step.action.fromAmount);
9
+ if (currentBalance < neededBalance) {
10
+ if (depth <= 3) {
11
+ await new Promise((resolve) => {
12
+ setTimeout(resolve, 200);
13
+ });
14
+ await checkBalance(walletAddress, step, depth + 1);
15
+ }
16
+ else if ((neededBalance * BigInt((1 - step.action.slippage) * 1000000000)) /
17
+ 1000000000n <=
18
+ currentBalance) {
19
+ // adjust amount in slippage limits
20
+ step.action.fromAmount = currentBalance.toString();
21
+ }
22
+ else {
23
+ const neeeded = formatUnits(neededBalance, token.decimals);
24
+ const current = formatUnits(currentBalance, token.decimals);
25
+ let errorMessage = `Your ${token.symbol} balance is too low, ` +
26
+ `you try to transfer ${neeeded} ${token.symbol}, ` +
27
+ `but your wallet only holds ${current} ${token.symbol}. ` +
28
+ `No funds have been sent.`;
29
+ if (currentBalance !== 0n) {
30
+ errorMessage +=
31
+ `If the problem consists, please delete this transfer and ` +
32
+ `start a new one with a maximum of ${current} ${token.symbol}.`;
33
+ }
34
+ throw new BalanceError('The balance is too low.', errorMessage);
35
+ }
36
+ }
37
+ }
38
+ };
39
+ //# sourceMappingURL=checkBalance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkBalance.js","sourceRoot":"","sources":["../../../src/execution/checkBalance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,aAAqB,EACrB,IAAc,EACd,KAAK,GAAG,CAAC,EACM,EAAE;IACjB,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACzE,IAAI,KAAK,EAAE;QACT,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAA;QACzC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAEpD,IAAI,cAAc,GAAG,aAAa,EAAE;YAClC,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC5B,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;gBAC1B,CAAC,CAAC,CAAA;gBACF,MAAM,YAAY,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;aACnD;iBAAM,IACL,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,UAAa,CAAC,CAAC;gBAClE,WAAc;gBAChB,cAAc,EACd;gBACA,mCAAmC;gBACnC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAA;aACnD;iBAAM;gBACL,MAAM,OAAO,GAAG,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;gBAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;gBAC3D,IAAI,YAAY,GACd,QAAQ,KAAK,CAAC,MAAM,uBAAuB;oBAC3C,uBAAuB,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI;oBAClD,8BAA8B,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI;oBACzD,0BAA0B,CAAA;gBAE5B,IAAI,cAAc,KAAK,EAAE,EAAE;oBACzB,YAAY;wBACV,2DAA2D;4BAC3D,qCAAqC,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,CAAA;iBAClE;gBAED,MAAM,IAAI,YAAY,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAA;aAChE;SACF;KACF;AACH,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './StatusManager.js';
2
+ export * from './types.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/execution/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA"}
@@ -0,0 +1,26 @@
1
+ import { ConfigService } from '../services/ConfigService.js';
2
+ import { LiFiErrorCode, TransactionError } from '../utils/errors.js';
3
+ export const updateMultisigRouteProcess = async (internalTxHash, step, statusManager, processType, fromChain) => {
4
+ const config = ConfigService.getInstance().getConfig();
5
+ if (!config.multisig?.getMultisigTransactionDetails) {
6
+ throw new Error('getMultisigTransactionDetails is missing in multisig config.');
7
+ }
8
+ const updateIntermediateMultisigStatus = () => {
9
+ statusManager.updateProcess(step, processType, 'PENDING');
10
+ };
11
+ const multisigStatusResponse = await config.multisig?.getMultisigTransactionDetails(internalTxHash, fromChain.id, updateIntermediateMultisigStatus);
12
+ if (multisigStatusResponse.status === 'DONE') {
13
+ statusManager.updateProcess(step, processType, 'PENDING', {
14
+ txHash: multisigStatusResponse.txHash,
15
+ multisigTxHash: undefined,
16
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${multisigStatusResponse.txHash}`,
17
+ });
18
+ }
19
+ if (multisigStatusResponse.status === 'FAILED') {
20
+ throw new TransactionError(LiFiErrorCode.TransactionFailed, 'Multisig transaction failed.');
21
+ }
22
+ if (multisigStatusResponse.status === 'CANCELLED') {
23
+ throw new TransactionError(LiFiErrorCode.SignatureRejected, 'Transaction was rejected by user.');
24
+ }
25
+ };
26
+ //# sourceMappingURL=multisig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multisig.js","sourceRoot":"","sources":["../../../src/execution/multisig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAIpE,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAC7C,cAAoB,EACpB,IAAc,EACd,aAA4B,EAC5B,WAAwB,EACxB,SAAwB,EACxB,EAAE;IACF,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAA;IAEtD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,6BAA6B,EAAE;QACnD,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAA;KACF;IAED,MAAM,gCAAgC,GAAG,GAAG,EAAE;QAC5C,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;IAC3D,CAAC,CAAA;IAED,MAAM,sBAAsB,GAC1B,MAAM,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAClD,cAAc,EACd,SAAS,CAAC,EAAE,EACZ,gCAAgC,CACjC,CAAA;IAEH,IAAI,sBAAsB,CAAC,MAAM,KAAK,MAAM,EAAE;QAC5C,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE;YACxD,MAAM,EAAE,sBAAsB,CAAC,MAAM;YACrC,cAAc,EAAE,SAAS;YACzB,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,sBAAsB,CAAC,MAAM,EAAE;SACxF,CAAC,CAAA;KACH;IAED,IAAI,sBAAsB,CAAC,MAAM,KAAK,QAAQ,EAAE;QAC9C,MAAM,IAAI,gBAAgB,CACxB,aAAa,CAAC,iBAAiB,EAC/B,8BAA8B,CAC/B,CAAA;KACF;IAED,IAAI,sBAAsB,CAAC,MAAM,KAAK,WAAW,EAAE;QACjD,MAAM,IAAI,gBAAgB,CACxB,aAAa,CAAC,iBAAiB,EAC/B,mCAAmC,CACpC,CAAA;KACF;AACH,CAAC,CAAA"}
@@ -0,0 +1,64 @@
1
+ export const prepareRestart = async (route) => {
2
+ for (let index = 0; index < route.steps.length; index++) {
3
+ const step = route.steps[index];
4
+ const stepHasFailed = step.execution?.status === 'FAILED';
5
+ if (stepHasFailed) {
6
+ // await handleErrorType(walletClient, step)
7
+ deleteFailedProcesses(step);
8
+ deleteTransactionData(step);
9
+ }
10
+ }
11
+ };
12
+ // const handleErrorType = async (walletClient: WalletClient, step: LiFiStep) => {
13
+ // const client = walletClient.extend(publicActions)
14
+ // const isGasLimitError = step.execution?.process.some(
15
+ // (p) => p.error?.code === LiFiErrorCode.GasLimitError
16
+ // )
17
+ // const isGasPriceError = step.execution?.process.some(
18
+ // (p) => p.error?.code === LiFiErrorCode.TransactionUnderpriced
19
+ // )
20
+ // const { transactionRequest } = step
21
+ // if (isGasLimitError) {
22
+ // if (transactionRequest) {
23
+ // let gasLimit = transactionRequest.gasLimit
24
+ // try {
25
+ // gasLimit = await client.estimateGas(transactionRequest)
26
+ // } catch (error) {}
27
+ // if (gasLimit) {
28
+ // transactionRequest.gasLimit = BigNumber.from(
29
+ // `${(BigInt(gasLimit.toString()) * 125n) / 100n}`
30
+ // )
31
+ // }
32
+ // }
33
+ // step.estimate.gasCosts?.forEach(
34
+ // (gasCost) =>
35
+ // (gasCost.limit = `${Math.round(Number(gasCost.limit) * 1.25)}`)
36
+ // )
37
+ // }
38
+ // if (isGasPriceError) {
39
+ // if (transactionRequest) {
40
+ // let gasPrice = transactionRequest.gasPrice
41
+ // try {
42
+ // gasPrice = await client.getGasPrice()
43
+ // } catch (error) {}
44
+ // if (gasPrice) {
45
+ // transactionRequest.gasPrice = BigNumber.from(
46
+ // `${(BigInt(gasPrice.toString()) * 125n) / 100n}`
47
+ // )
48
+ // }
49
+ // }
50
+ // step.estimate.gasCosts?.forEach(
51
+ // (gasCost) =>
52
+ // (gasCost.price = `${Math.round(Number(gasCost.price) * 1.25)}`)
53
+ // )
54
+ // }
55
+ // }
56
+ const deleteFailedProcesses = (step) => {
57
+ if (step.execution) {
58
+ step.execution.process = step.execution.process.filter((process) => process.status === 'DONE');
59
+ }
60
+ };
61
+ const deleteTransactionData = (step) => {
62
+ step.transactionRequest = undefined;
63
+ };
64
+ //# sourceMappingURL=prepareRestart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareRestart.js","sourceRoot":"","sources":["../../../src/execution/prepareRestart.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,KAAY,EAAE,EAAE;IACnD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,KAAK,QAAQ,CAAA;QAEzD,IAAI,aAAa,EAAE;YACjB,4CAA4C;YAC5C,qBAAqB,CAAC,IAAI,CAAC,CAAA;YAC3B,qBAAqB,CAAC,IAAI,CAAC,CAAA;SAC5B;KACF;AACH,CAAC,CAAA;AAED,kFAAkF;AAClF,sDAAsD;AAEtD,0DAA0D;AAC1D,2DAA2D;AAC3D,MAAM;AACN,0DAA0D;AAC1D,oEAAoE;AACpE,MAAM;AAEN,wCAAwC;AAExC,yBAAyB;AACzB,8BAA8B;AAC9B,iDAAiD;AAEjD,YAAY;AACZ,gEAAgE;AAChE,yBAAyB;AAEzB,sBAAsB;AACtB,sDAAsD;AACtD,2DAA2D;AAC3D,UAAU;AACV,QAAQ;AACR,MAAM;AAEN,qCAAqC;AACrC,mBAAmB;AACnB,wEAAwE;AACxE,MAAM;AACN,IAAI;AAEJ,yBAAyB;AACzB,8BAA8B;AAC9B,iDAAiD;AAEjD,YAAY;AACZ,8CAA8C;AAC9C,yBAAyB;AAEzB,sBAAsB;AACtB,sDAAsD;AACtD,2DAA2D;AAC3D,UAAU;AACV,QAAQ;AACR,MAAM;AAEN,qCAAqC;AACrC,mBAAmB;AACnB,wEAAwE;AACxE,MAAM;AACN,IAAI;AACJ,IAAI;AAEJ,MAAM,qBAAqB,GAAG,CAAC,IAAc,EAAE,EAAE;IAC/C,IAAI,IAAI,CAAC,SAAS,EAAE;QAClB,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CACpD,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CACvC,CAAA;KACF;AACH,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,IAAc,EAAE,EAAE;IAC/C,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAA;AACrC,CAAC,CAAA"}
@@ -1,15 +1,15 @@
1
- import { LifiErrorCode, TransactionError } from '../utils/errors';
2
- import { checkStepSlippageThreshold } from './utils';
1
+ import { LiFiErrorCode, TransactionError } from '../utils/errors.js';
2
+ import { checkStepSlippageThreshold } from './utils.js';
3
3
  /**
4
4
  * This method checks whether the new and updated Step meets the required exchange rate conditions.
5
5
  * If yes it returns the updated Step.
6
6
  * If no and if user interaction is allowed it triggers the acceptExchangeRateUpdateHook. If no user interaction is allowed it aborts.
7
- *
8
7
  * @param statusManager
9
8
  * @param oldStep
10
9
  * @param newStep
11
10
  * @param settings
12
11
  * @param allowUserInteraction
12
+ * @returns Return LiFiStep
13
13
  */
14
14
  export const stepComparison = async (statusManager, oldStep, newStep, settings, allowUserInteraction) => {
15
15
  // Check if changed exchange rate is in the range of slippage threshold
@@ -26,8 +26,9 @@ export const stepComparison = async (statusManager, oldStep, newStep, settings,
26
26
  }
27
27
  if (!allowStepUpdate) {
28
28
  // The user declined the new exchange rate, so we are not going to proceed
29
- throw new TransactionError(LifiErrorCode.TransactionCanceled, 'Exchange rate has changed!', `Transaction was not sent, your funds are still in your wallet.
29
+ throw new TransactionError(LiFiErrorCode.ExchangeRateUpdateCanceled, 'Exchange rate has changed!', `Transaction was not sent, your funds are still in your wallet.
30
30
  The exchange rate has changed and the previous estimation can not be fulfilled due to value loss.`);
31
31
  }
32
32
  return statusManager.updateStepInRoute(newStep);
33
33
  };
34
+ //# sourceMappingURL=stepComparison.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stepComparison.js","sourceRoot":"","sources":["../../../src/execution/stepComparison.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAEvD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,aAA4B,EAC5B,OAAiB,EACjB,OAAiB,EACjB,QAAmC,EACnC,oBAA6B,EACV,EAAE;IACrB,uEAAuE;IACvE,IAAI,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;QAChD,OAAO,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;KAChD;IAED,IAAI,eAAoC,CAAA;IACxC,IAAI,oBAAoB,EAAE;QACxB,eAAe,GAAG,MAAM,QAAQ,CAAC,4BAA4B,CAAC;YAC5D,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;YACtC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;YACtC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO;SAChC,CAAC,CAAA;KACH;IAED,IAAI,CAAC,eAAe,EAAE;QACpB,0EAA0E;QAC1E,MAAM,IAAI,gBAAgB,CACxB,aAAa,CAAC,0BAA0B,EACxC,4BAA4B,EAC5B;wGACkG,CACnG,CAAA;KACF;IAED,OAAO,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;AACjD,CAAC,CAAA"}
@@ -1,19 +1,25 @@
1
- import { LifiErrorCode, ProviderError } from '../utils/errors';
1
+ import { LiFiErrorCode, ProviderError } from '../utils/errors.js';
2
2
  /**
3
- * This method checks whether the signer is configured for the correct chain.
4
- * If yes it returns the signer.
3
+ * This method checks whether the wallet client is configured for the correct chain.
4
+ * If yes it returns the wallet clien.
5
5
  * If no and if user interaction is allowed it triggers the switchChainHook. If no user interaction is allowed it aborts.
6
6
  *
7
- * @param signer
7
+ * Account Type: local -
8
+ * We need to create and return a new WalletClient from the switchChainHook in order to continue execution on a new chain.
9
+ *
10
+ * Account Type: json-rpc -
11
+ * We can switch chain and return existing WalletClient from the switchChainHook in order to continue execution on a new chain.
12
+ * @param walletClient
8
13
  * @param statusManager
9
14
  * @param step
10
15
  * @param switchChainHook
11
16
  * @param allowUserInteraction
17
+ * @returns New WalletClient
12
18
  */
13
- export const switchChain = async (signer, statusManager, step, switchChainHook, allowUserInteraction) => {
19
+ export const switchChain = async (walletClient, statusManager, step, switchChainHook, allowUserInteraction) => {
14
20
  // if we are already on the correct chain we can proceed directly
15
- if ((await signer.getChainId()) === step.action.fromChainId) {
16
- return signer;
21
+ if ((await walletClient.getChainId()) === step.action.fromChainId) {
22
+ return walletClient;
17
23
  }
18
24
  // -> set status message
19
25
  step.execution = statusManager.initExecutionObject(step);
@@ -23,23 +29,24 @@ export const switchChain = async (signer, statusManager, step, switchChainHook,
23
29
  return;
24
30
  }
25
31
  try {
26
- const updatedSigner = await switchChainHook(step.action.fromChainId);
27
- const updatedChainId = await updatedSigner?.getChainId();
32
+ const updatedWalletClient = await switchChainHook(step.action.fromChainId);
33
+ const updatedChainId = await updatedWalletClient?.getChainId();
28
34
  if (updatedChainId !== step.action.fromChainId) {
29
- throw new ProviderError(LifiErrorCode.ChainSwitchError, 'Chain switch required.');
35
+ throw new ProviderError(LiFiErrorCode.ChainSwitchError, 'Chain switch required.');
30
36
  }
31
37
  switchProcess = statusManager.updateProcess(step, switchProcess.type, 'DONE');
32
38
  statusManager.updateExecution(step, 'PENDING');
33
- return updatedSigner;
39
+ return updatedWalletClient;
34
40
  }
35
41
  catch (error) {
36
42
  statusManager.updateProcess(step, switchProcess.type, 'FAILED', {
37
43
  error: {
38
44
  message: error.message,
39
- code: LifiErrorCode.ChainSwitchError,
45
+ code: LiFiErrorCode.ChainSwitchError,
40
46
  },
41
47
  });
42
48
  statusManager.updateExecution(step, 'FAILED');
43
49
  throw error;
44
50
  }
45
51
  };
52
+ //# sourceMappingURL=switchChain.js.map