@lifi/sdk 3.0.0-alpha.2 → 3.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 (446) hide show
  1. package/dist/_cjs/config.js +48 -0
  2. package/dist/_cjs/config.js.map +1 -0
  3. package/dist/{cjs → _cjs}/constants.js +2 -4
  4. package/dist/_cjs/constants.js.map +1 -0
  5. package/dist/_cjs/core/BaseStepExecutor.js +55 -0
  6. package/dist/_cjs/core/BaseStepExecutor.js.map +1 -0
  7. package/dist/_cjs/core/EVM/EVM.js +46 -0
  8. package/dist/_cjs/core/EVM/EVM.js.map +1 -0
  9. package/dist/_cjs/core/EVM/EVMStepExecutor.js +276 -0
  10. package/dist/_cjs/core/EVM/EVMStepExecutor.js.map +1 -0
  11. package/dist/{cjs/types → _cjs/core/EVM}/abi.js +1 -0
  12. package/dist/_cjs/core/EVM/abi.js.map +1 -0
  13. package/dist/{cjs/execution → _cjs/core/EVM}/checkAllowance.js +12 -12
  14. package/dist/_cjs/core/EVM/checkAllowance.js.map +1 -0
  15. package/dist/{cjs/allowance → _cjs/core/EVM}/getAllowance.js +15 -17
  16. package/dist/_cjs/core/EVM/getAllowance.js.map +1 -0
  17. package/dist/{cjs/balance/getBalance.js → _cjs/core/EVM/getEVMBalance.js} +22 -22
  18. package/dist/_cjs/core/EVM/getEVMBalance.js.map +1 -0
  19. package/dist/{cjs/execution → _cjs/core/EVM}/multisig.js +7 -11
  20. package/dist/_cjs/core/EVM/multisig.js.map +1 -0
  21. package/dist/_cjs/core/EVM/publicClient.js +35 -0
  22. package/dist/_cjs/core/EVM/publicClient.js.map +1 -0
  23. package/dist/_cjs/core/EVM/setAllowance.js +71 -0
  24. package/dist/_cjs/core/EVM/setAllowance.js.map +1 -0
  25. package/dist/_cjs/core/EVM/switchChain.js +37 -0
  26. package/dist/_cjs/core/EVM/switchChain.js.map +1 -0
  27. package/dist/_cjs/core/EVM/types.js +9 -0
  28. package/dist/_cjs/core/EVM/types.js.map +1 -0
  29. package/dist/{cjs/utils/getMaxPriorityFeePerGas.js → _cjs/core/EVM/utils.js} +11 -3
  30. package/dist/_cjs/core/EVM/utils.js.map +1 -0
  31. package/dist/_cjs/core/Solana/Solana.js +44 -0
  32. package/dist/_cjs/core/Solana/Solana.js.map +1 -0
  33. package/dist/_cjs/core/Solana/SolanaStepExecutor.js +157 -0
  34. package/dist/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -0
  35. package/dist/_cjs/core/Solana/connection.js +18 -0
  36. package/dist/_cjs/core/Solana/connection.js.map +1 -0
  37. package/dist/_cjs/core/Solana/getSolanaBalance.js +50 -0
  38. package/dist/_cjs/core/Solana/getSolanaBalance.js.map +1 -0
  39. package/dist/_cjs/core/Solana/types.js +10 -0
  40. package/dist/_cjs/core/Solana/types.js.map +1 -0
  41. package/dist/_cjs/core/StatusManager.js +167 -0
  42. package/dist/_cjs/core/StatusManager.js.map +1 -0
  43. package/dist/{cjs/execution → _cjs/core}/checkBalance.js +5 -5
  44. package/dist/_cjs/core/checkBalance.js.map +1 -0
  45. package/dist/_cjs/core/execution.js +134 -0
  46. package/dist/_cjs/core/execution.js.map +1 -0
  47. package/dist/_cjs/core/executionState.js +23 -0
  48. package/dist/_cjs/core/executionState.js.map +1 -0
  49. package/dist/_cjs/core/index.js +7 -0
  50. package/dist/_cjs/core/index.js.map +1 -0
  51. package/dist/_cjs/core/prepareRestart.js +23 -0
  52. package/dist/_cjs/core/prepareRestart.js.map +1 -0
  53. package/dist/_cjs/core/provider.js +15 -0
  54. package/dist/_cjs/core/provider.js.map +1 -0
  55. package/dist/_cjs/core/stepComparison.js +25 -0
  56. package/dist/_cjs/core/stepComparison.js.map +1 -0
  57. package/dist/{cjs/allowance → _cjs/core}/types.js +1 -0
  58. package/dist/_cjs/core/types.js.map +1 -0
  59. package/dist/{cjs/execution → _cjs/core}/utils.js +16 -10
  60. package/dist/_cjs/core/utils.js.map +1 -0
  61. package/dist/{cjs/execution → _cjs/core}/waitForReceivingTransaction.js +10 -12
  62. package/dist/_cjs/core/waitForReceivingTransaction.js.map +1 -0
  63. package/dist/_cjs/createConfig.js +48 -0
  64. package/dist/_cjs/createConfig.js.map +1 -0
  65. package/dist/{cjs → _cjs}/helpers.js +11 -25
  66. package/dist/_cjs/helpers.js.map +1 -0
  67. package/dist/_cjs/index.js +20 -0
  68. package/dist/_cjs/index.js.map +1 -0
  69. package/dist/_cjs/package.json +1 -0
  70. package/dist/{cjs → _cjs}/request.js +22 -16
  71. package/dist/_cjs/request.js.map +1 -0
  72. package/dist/_cjs/services/api.js +284 -0
  73. package/dist/_cjs/services/api.js.map +1 -0
  74. package/dist/_cjs/services/balance.js +49 -0
  75. package/dist/_cjs/services/balance.js.map +1 -0
  76. package/dist/{cjs → _cjs}/typeguards.js +1 -0
  77. package/dist/_cjs/typeguards.js.map +1 -0
  78. package/dist/_cjs/types/index.js +5 -0
  79. package/dist/_cjs/types/index.js.map +1 -0
  80. package/dist/{cjs/types/internal.types.js → _cjs/types/internal.js} +1 -0
  81. package/dist/_cjs/types/internal.js.map +1 -0
  82. package/dist/{cjs → _cjs}/utils/errors.js +25 -3
  83. package/dist/_cjs/utils/errors.js.map +1 -0
  84. package/dist/_cjs/utils/getTransactionMessage.js +31 -0
  85. package/dist/_cjs/utils/getTransactionMessage.js.map +1 -0
  86. package/dist/_cjs/utils/index.js +9 -0
  87. package/dist/_cjs/utils/index.js.map +1 -0
  88. package/dist/{cjs → _cjs}/utils/median.js +1 -0
  89. package/dist/_cjs/utils/median.js.map +1 -0
  90. package/dist/_cjs/utils/parseBackendError.js +27 -0
  91. package/dist/_cjs/utils/parseBackendError.js.map +1 -0
  92. package/dist/_cjs/utils/parseError.js +67 -0
  93. package/dist/_cjs/utils/parseError.js.map +1 -0
  94. package/dist/{cjs → _cjs}/utils/utils.js +5 -11
  95. package/dist/_cjs/utils/utils.js.map +1 -0
  96. package/dist/{cjs → _cjs}/version.js +2 -1
  97. package/dist/_cjs/version.js.map +1 -0
  98. package/dist/_esm/config.js +45 -0
  99. package/dist/_esm/config.js.map +1 -0
  100. package/dist/{constants.js → _esm/constants.js} +1 -0
  101. package/dist/_esm/constants.js.map +1 -0
  102. package/dist/_esm/core/BaseStepExecutor.js +52 -0
  103. package/dist/_esm/core/BaseStepExecutor.js.map +1 -0
  104. package/dist/_esm/core/EVM/EVM.js +42 -0
  105. package/dist/_esm/core/EVM/EVM.js.map +1 -0
  106. package/dist/_esm/core/EVM/EVMStepExecutor.js +304 -0
  107. package/dist/_esm/core/EVM/EVMStepExecutor.js.map +1 -0
  108. package/dist/{types → _esm/core/EVM}/abi.js +1 -0
  109. package/dist/_esm/core/EVM/abi.js.map +1 -0
  110. package/dist/{execution → _esm/core/EVM}/checkAllowance.js +8 -6
  111. package/dist/_esm/core/EVM/checkAllowance.js.map +1 -0
  112. package/dist/{allowance → _esm/core/EVM}/getAllowance.js +20 -5
  113. package/dist/_esm/core/EVM/getAllowance.js.map +1 -0
  114. package/dist/{balance/getBalance.js → _esm/core/EVM/getEVMBalance.js} +11 -11
  115. package/dist/_esm/core/EVM/getEVMBalance.js.map +1 -0
  116. package/dist/{execution → _esm/core/EVM}/multisig.js +5 -6
  117. package/dist/_esm/core/EVM/multisig.js.map +1 -0
  118. package/dist/_esm/core/EVM/publicClient.js +37 -0
  119. package/dist/_esm/core/EVM/publicClient.js.map +1 -0
  120. package/dist/{allowance → _esm/core/EVM}/setAllowance.js +46 -11
  121. package/dist/_esm/core/EVM/setAllowance.js.map +1 -0
  122. package/dist/{execution → _esm/core/EVM}/switchChain.js +5 -3
  123. package/dist/_esm/core/EVM/switchChain.js.map +1 -0
  124. package/dist/_esm/core/EVM/types.js +6 -0
  125. package/dist/_esm/core/EVM/types.js.map +1 -0
  126. package/dist/{utils/getMaxPriorityFeePerGas.js → _esm/core/EVM/utils.js} +9 -1
  127. package/dist/_esm/core/EVM/utils.js.map +1 -0
  128. package/dist/_esm/core/Solana/Solana.js +40 -0
  129. package/dist/_esm/core/Solana/Solana.js.map +1 -0
  130. package/dist/_esm/core/Solana/SolanaStepExecutor.js +158 -0
  131. package/dist/_esm/core/Solana/SolanaStepExecutor.js.map +1 -0
  132. package/dist/_esm/core/Solana/connection.js +19 -0
  133. package/dist/_esm/core/Solana/connection.js.map +1 -0
  134. package/dist/_esm/core/Solana/getSolanaBalance.js +46 -0
  135. package/dist/_esm/core/Solana/getSolanaBalance.js.map +1 -0
  136. package/dist/_esm/core/Solana/types.js +7 -0
  137. package/dist/_esm/core/Solana/types.js.map +1 -0
  138. package/dist/_esm/core/StatusManager.js +203 -0
  139. package/dist/_esm/core/StatusManager.js.map +1 -0
  140. package/dist/{execution → _esm/core}/checkBalance.js +3 -2
  141. package/dist/_esm/core/checkBalance.js.map +1 -0
  142. package/dist/_esm/core/execution.js +173 -0
  143. package/dist/_esm/core/execution.js.map +1 -0
  144. package/dist/_esm/core/executionState.js +20 -0
  145. package/dist/_esm/core/executionState.js.map +1 -0
  146. package/dist/_esm/core/index.js +4 -0
  147. package/dist/_esm/core/index.js.map +1 -0
  148. package/dist/_esm/core/prepareRestart.js +64 -0
  149. package/dist/_esm/core/prepareRestart.js.map +1 -0
  150. package/dist/_esm/core/provider.js +11 -0
  151. package/dist/_esm/core/provider.js.map +1 -0
  152. package/dist/{execution → _esm/core}/stepComparison.js +7 -5
  153. package/dist/_esm/core/stepComparison.js.map +1 -0
  154. package/dist/_esm/core/types.js +2 -0
  155. package/dist/_esm/core/types.js.map +1 -0
  156. package/dist/{execution → _esm/core}/utils.js +14 -0
  157. package/dist/_esm/core/utils.js.map +1 -0
  158. package/dist/{execution → _esm/core}/waitForReceivingTransaction.js +8 -7
  159. package/dist/_esm/core/waitForReceivingTransaction.js.map +1 -0
  160. package/dist/_esm/createConfig.js +45 -0
  161. package/dist/_esm/createConfig.js.map +1 -0
  162. package/dist/{helpers.js → _esm/helpers.js} +4 -3
  163. package/dist/_esm/helpers.js.map +1 -0
  164. package/dist/_esm/index.js +12 -0
  165. package/dist/_esm/index.js.map +1 -0
  166. package/dist/_esm/package.json +1 -0
  167. package/dist/{request.js → _esm/request.js} +19 -9
  168. package/dist/_esm/request.js.map +1 -0
  169. package/dist/_esm/services/api.js +353 -0
  170. package/dist/_esm/services/api.js.map +1 -0
  171. package/dist/_esm/services/balance.js +65 -0
  172. package/dist/_esm/services/balance.js.map +1 -0
  173. package/dist/{typeguards.js → _esm/typeguards.js} +1 -0
  174. package/dist/_esm/typeguards.js.map +1 -0
  175. package/dist/_esm/types/index.js +2 -0
  176. package/dist/_esm/types/index.js.map +1 -0
  177. package/dist/_esm/types/internal.js +2 -0
  178. package/dist/_esm/types/internal.js.map +1 -0
  179. package/dist/{utils → _esm/utils}/errors.js +25 -0
  180. package/dist/_esm/utils/errors.js.map +1 -0
  181. package/dist/_esm/utils/getTransactionMessage.js +28 -0
  182. package/dist/_esm/utils/getTransactionMessage.js.map +1 -0
  183. package/dist/_esm/utils/index.js +6 -0
  184. package/dist/_esm/utils/index.js.map +1 -0
  185. package/dist/{utils → _esm/utils}/median.js +1 -0
  186. package/dist/_esm/utils/median.js.map +1 -0
  187. package/dist/_esm/utils/parseBackendError.js +24 -0
  188. package/dist/_esm/utils/parseBackendError.js.map +1 -0
  189. package/dist/{utils → _esm/utils}/parseError.js +4 -53
  190. package/dist/_esm/utils/parseError.js.map +1 -0
  191. package/dist/{utils → _esm/utils}/utils.js +2 -1
  192. package/dist/_esm/utils/utils.js.map +1 -0
  193. package/dist/_esm/version.js +3 -0
  194. package/dist/_esm/version.js.map +1 -0
  195. package/dist/_types/config.d.ts +11 -0
  196. package/dist/_types/config.d.ts.map +1 -0
  197. package/dist/{cjs → _types}/constants.d.ts +1 -0
  198. package/dist/_types/constants.d.ts.map +1 -0
  199. package/dist/_types/core/BaseStepExecutor.d.ts +13 -0
  200. package/dist/_types/core/BaseStepExecutor.d.ts.map +1 -0
  201. package/dist/_types/core/EVM/EVM.d.ts +3 -0
  202. package/dist/_types/core/EVM/EVM.d.ts.map +1 -0
  203. package/dist/_types/core/EVM/EVMStepExecutor.d.ts +17 -0
  204. package/dist/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -0
  205. package/dist/{cjs/types → _types/core/EVM}/abi.d.ts +1 -0
  206. package/dist/_types/core/EVM/abi.d.ts.map +1 -0
  207. package/dist/_types/core/EVM/checkAllowance.d.ts +6 -0
  208. package/dist/_types/core/EVM/checkAllowance.d.ts.map +1 -0
  209. package/dist/{cjs/allowance → _types/core/EVM}/getAllowance.d.ts +15 -1
  210. package/dist/_types/core/EVM/getAllowance.d.ts.map +1 -0
  211. package/dist/_types/core/EVM/getEVMBalance.d.ts +3 -0
  212. package/dist/_types/core/EVM/getEVMBalance.d.ts.map +1 -0
  213. package/dist/_types/core/EVM/multisig.d.ts +6 -0
  214. package/dist/_types/core/EVM/multisig.d.ts.map +1 -0
  215. package/dist/_types/core/EVM/publicClient.d.ts +8 -0
  216. package/dist/_types/core/EVM/publicClient.d.ts.map +1 -0
  217. package/dist/_types/core/EVM/setAllowance.d.ts +25 -0
  218. package/dist/_types/core/EVM/setAllowance.d.ts.map +1 -0
  219. package/dist/{execution → _types/core/EVM}/switchChain.d.ts +6 -4
  220. package/dist/_types/core/EVM/switchChain.d.ts.map +1 -0
  221. package/dist/_types/core/EVM/types.d.ts +57 -0
  222. package/dist/_types/core/EVM/types.d.ts.map +1 -0
  223. package/dist/_types/core/EVM/utils.d.ts +5 -0
  224. package/dist/_types/core/EVM/utils.d.ts.map +1 -0
  225. package/dist/_types/core/Solana/Solana.d.ts +3 -0
  226. package/dist/_types/core/Solana/Solana.d.ts.map +1 -0
  227. package/dist/_types/core/Solana/SolanaStepExecutor.d.ts +13 -0
  228. package/dist/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -0
  229. package/dist/_types/core/Solana/connection.d.ts +8 -0
  230. package/dist/_types/core/Solana/connection.d.ts.map +1 -0
  231. package/dist/_types/core/Solana/getSolanaBalance.d.ts +3 -0
  232. package/dist/_types/core/Solana/getSolanaBalance.d.ts.map +1 -0
  233. package/dist/_types/core/Solana/types.d.ts +13 -0
  234. package/dist/_types/core/Solana/types.d.ts.map +1 -0
  235. package/dist/{cjs/execution → _types/core}/StatusManager.d.ts +12 -16
  236. package/dist/_types/core/StatusManager.d.ts.map +1 -0
  237. package/dist/_types/core/checkBalance.d.ts +3 -0
  238. package/dist/_types/core/checkBalance.d.ts.map +1 -0
  239. package/dist/_types/core/execution.d.ts +42 -0
  240. package/dist/_types/core/execution.d.ts.map +1 -0
  241. package/dist/_types/core/executionState.d.ts +16 -0
  242. package/dist/_types/core/executionState.d.ts.map +1 -0
  243. package/dist/_types/core/index.d.ts +4 -0
  244. package/dist/_types/core/index.d.ts.map +1 -0
  245. package/dist/_types/core/prepareRestart.d.ts +3 -0
  246. package/dist/_types/core/prepareRestart.d.ts.map +1 -0
  247. package/dist/_types/core/provider.d.ts +3 -0
  248. package/dist/_types/core/provider.d.ts.map +1 -0
  249. package/dist/{execution → _types/core}/stepComparison.d.ts +7 -4
  250. package/dist/_types/core/stepComparison.d.ts.map +1 -0
  251. package/dist/_types/core/types.d.ts +71 -0
  252. package/dist/_types/core/types.d.ts.map +1 -0
  253. package/dist/{execution → _types/core}/utils.d.ts +5 -2
  254. package/dist/_types/core/utils.d.ts.map +1 -0
  255. package/dist/_types/core/waitForReceivingTransaction.d.ts +4 -0
  256. package/dist/_types/core/waitForReceivingTransaction.d.ts.map +1 -0
  257. package/dist/_types/createConfig.d.ts +7 -0
  258. package/dist/_types/createConfig.d.ts.map +1 -0
  259. package/dist/{helpers.d.ts → _types/helpers.d.ts} +4 -3
  260. package/dist/_types/helpers.d.ts.map +1 -0
  261. package/dist/_types/index.d.ts +12 -0
  262. package/dist/_types/index.d.ts.map +1 -0
  263. package/dist/{request.d.ts → _types/request.d.ts} +1 -0
  264. package/dist/_types/request.d.ts.map +1 -0
  265. package/dist/_types/services/api.d.ts +87 -0
  266. package/dist/_types/services/api.d.ts.map +1 -0
  267. package/dist/_types/services/balance.d.ts +30 -0
  268. package/dist/_types/services/balance.d.ts.map +1 -0
  269. package/dist/{cjs → _types}/typeguards.d.ts +3 -2
  270. package/dist/_types/typeguards.d.ts.map +1 -0
  271. package/dist/_types/types/index.d.ts +2 -0
  272. package/dist/_types/types/index.d.ts.map +1 -0
  273. package/dist/_types/types/internal.d.ts +56 -0
  274. package/dist/_types/types/internal.d.ts.map +1 -0
  275. package/dist/{utils → _types/utils}/errors.d.ts +1 -0
  276. package/dist/_types/utils/errors.d.ts.map +1 -0
  277. package/dist/_types/utils/getTransactionMessage.d.ts +4 -0
  278. package/dist/_types/utils/getTransactionMessage.d.ts.map +1 -0
  279. package/dist/_types/utils/index.d.ts +6 -0
  280. package/dist/_types/utils/index.d.ts.map +1 -0
  281. package/dist/{cjs → _types}/utils/median.d.ts +1 -0
  282. package/dist/_types/utils/median.d.ts.map +1 -0
  283. package/dist/_types/utils/parseBackendError.d.ts +3 -0
  284. package/dist/_types/utils/parseBackendError.d.ts.map +1 -0
  285. package/dist/{utils → _types/utils}/parseError.d.ts +4 -6
  286. package/dist/_types/utils/parseError.d.ts.map +1 -0
  287. package/dist/{utils → _types/utils}/utils.d.ts +1 -0
  288. package/dist/_types/utils/utils.d.ts.map +1 -0
  289. package/dist/_types/version.d.ts +3 -0
  290. package/dist/_types/version.d.ts.map +1 -0
  291. package/dist/config.ts +47 -0
  292. package/dist/constants.ts +7 -0
  293. package/dist/core/BaseStepExecutor.ts +40 -0
  294. package/dist/core/EVM/EVM.ts +50 -0
  295. package/dist/core/EVM/EVMStepExecutor.ts +472 -0
  296. package/dist/core/EVM/abi.ts +47 -0
  297. package/dist/core/EVM/checkAllowance.ts +152 -0
  298. package/dist/core/EVM/getAllowance.ts +146 -0
  299. package/dist/core/EVM/getEVMBalance.ts +120 -0
  300. package/dist/core/EVM/multisig.ts +53 -0
  301. package/dist/core/EVM/publicClient.ts +46 -0
  302. package/dist/core/EVM/setAllowance.ts +144 -0
  303. package/dist/core/EVM/switchChain.ts +77 -0
  304. package/dist/core/EVM/types.ts +75 -0
  305. package/dist/core/EVM/utils.ts +43 -0
  306. package/dist/core/Solana/Solana.ts +46 -0
  307. package/dist/core/Solana/SolanaStepExecutor.ts +253 -0
  308. package/dist/core/Solana/connection.ts +19 -0
  309. package/dist/core/Solana/getSolanaBalance.ts +62 -0
  310. package/dist/core/Solana/types.ts +18 -0
  311. package/dist/core/StatusManager.ts +238 -0
  312. package/dist/core/checkBalance.ts +48 -0
  313. package/dist/core/execution.ts +218 -0
  314. package/dist/core/executionState.ts +40 -0
  315. package/dist/core/index.ts +3 -0
  316. package/dist/core/prepareRestart.ts +81 -0
  317. package/dist/core/provider.ts +12 -0
  318. package/dist/core/stepComparison.ts +51 -0
  319. package/dist/core/types.ts +103 -0
  320. package/dist/core/utils.ts +122 -0
  321. package/dist/core/waitForReceivingTransaction.ts +73 -0
  322. package/dist/createConfig.ts +54 -0
  323. package/dist/helpers.ts +97 -0
  324. package/dist/index.ts +11 -0
  325. package/dist/request.ts +79 -0
  326. package/dist/services/api.ts +472 -0
  327. package/dist/services/balance.ts +93 -0
  328. package/dist/typeguards.ts +89 -0
  329. package/dist/types/index.ts +1 -0
  330. package/dist/types/internal.ts +58 -0
  331. package/dist/utils/errors.ts +231 -0
  332. package/dist/utils/getTransactionMessage.ts +46 -0
  333. package/dist/utils/index.ts +5 -0
  334. package/dist/utils/median.ts +11 -0
  335. package/dist/utils/parseBackendError.ts +50 -0
  336. package/dist/utils/parseError.ts +204 -0
  337. package/dist/utils/utils.ts +48 -0
  338. package/dist/version.ts +2 -0
  339. package/package.json +27 -86
  340. package/dist/LiFi.d.ts +0 -171
  341. package/dist/LiFi.js +0 -246
  342. package/dist/allowance/getAllowance.d.ts +0 -6
  343. package/dist/allowance/index.d.ts +0 -3
  344. package/dist/allowance/index.js +0 -3
  345. package/dist/allowance/setAllowance.d.ts +0 -5
  346. package/dist/allowance/types.d.ts +0 -27
  347. package/dist/allowance/types.js +0 -1
  348. package/dist/balance/getBalance.d.ts +0 -2
  349. package/dist/balance/getTokenBalance.d.ts +0 -8
  350. package/dist/balance/getTokenBalance.js +0 -27
  351. package/dist/balance/index.d.ts +0 -2
  352. package/dist/balance/index.js +0 -2
  353. package/dist/cjs/LiFi.d.ts +0 -171
  354. package/dist/cjs/LiFi.js +0 -276
  355. package/dist/cjs/allowance/index.d.ts +0 -3
  356. package/dist/cjs/allowance/index.js +0 -19
  357. package/dist/cjs/allowance/setAllowance.d.ts +0 -5
  358. package/dist/cjs/allowance/setAllowance.js +0 -56
  359. package/dist/cjs/allowance/types.d.ts +0 -27
  360. package/dist/cjs/balance/getBalance.d.ts +0 -2
  361. package/dist/cjs/balance/getTokenBalance.d.ts +0 -8
  362. package/dist/cjs/balance/getTokenBalance.js +0 -33
  363. package/dist/cjs/balance/index.d.ts +0 -2
  364. package/dist/cjs/balance/index.js +0 -18
  365. package/dist/cjs/connectors.d.ts +0 -8
  366. package/dist/cjs/connectors.js +0 -75
  367. package/dist/cjs/execution/RouteExecutionManager.d.ts +0 -59
  368. package/dist/cjs/execution/RouteExecutionManager.js +0 -202
  369. package/dist/cjs/execution/StatusManager.js +0 -171
  370. package/dist/cjs/execution/StepExecutionManager.d.ts +0 -7
  371. package/dist/cjs/execution/StepExecutionManager.js +0 -267
  372. package/dist/cjs/execution/StepExecutor.d.ts +0 -15
  373. package/dist/cjs/execution/StepExecutor.js +0 -62
  374. package/dist/cjs/execution/checkAllowance.d.ts +0 -4
  375. package/dist/cjs/execution/checkBalance.d.ts +0 -2
  376. package/dist/cjs/execution/index.d.ts +0 -1
  377. package/dist/cjs/execution/index.js +0 -17
  378. package/dist/cjs/execution/multisig.d.ts +0 -4
  379. package/dist/cjs/execution/prepareRestart.d.ts +0 -3
  380. package/dist/cjs/execution/prepareRestart.js +0 -65
  381. package/dist/cjs/execution/stepComparison.d.ts +0 -14
  382. package/dist/cjs/execution/stepComparison.js +0 -37
  383. package/dist/cjs/execution/switchChain.d.ts +0 -21
  384. package/dist/cjs/execution/switchChain.js +0 -54
  385. package/dist/cjs/execution/utils.d.ts +0 -12
  386. package/dist/cjs/execution/waitForReceivingTransaction.d.ts +0 -3
  387. package/dist/cjs/helpers.d.ts +0 -18
  388. package/dist/cjs/index.d.ts +0 -5
  389. package/dist/cjs/index.js +0 -24
  390. package/dist/cjs/request.d.ts +0 -9
  391. package/dist/cjs/services/ApiService.d.ts +0 -17
  392. package/dist/cjs/services/ApiService.js +0 -326
  393. package/dist/cjs/services/ChainsService.d.ts +0 -11
  394. package/dist/cjs/services/ChainsService.js +0 -39
  395. package/dist/cjs/services/ConfigService.d.ts +0 -23
  396. package/dist/cjs/services/ConfigService.js +0 -101
  397. package/dist/cjs/types/index.d.ts +0 -4
  398. package/dist/cjs/types/index.js +0 -22
  399. package/dist/cjs/types/internal.types.d.ts +0 -142
  400. package/dist/cjs/utils/errors.d.ts +0 -107
  401. package/dist/cjs/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  402. package/dist/cjs/utils/index.d.ts +0 -5
  403. package/dist/cjs/utils/index.js +0 -21
  404. package/dist/cjs/utils/parseError.d.ts +0 -37
  405. package/dist/cjs/utils/parseError.js +0 -157
  406. package/dist/cjs/utils/utils.d.ts +0 -10
  407. package/dist/cjs/version.d.ts +0 -2
  408. package/dist/connectors.d.ts +0 -8
  409. package/dist/connectors.js +0 -41
  410. package/dist/constants.d.ts +0 -6
  411. package/dist/execution/RouteExecutionManager.d.ts +0 -59
  412. package/dist/execution/RouteExecutionManager.js +0 -195
  413. package/dist/execution/StatusManager.d.ts +0 -67
  414. package/dist/execution/StatusManager.js +0 -167
  415. package/dist/execution/StepExecutionManager.d.ts +0 -7
  416. package/dist/execution/StepExecutionManager.js +0 -260
  417. package/dist/execution/StepExecutor.d.ts +0 -15
  418. package/dist/execution/StepExecutor.js +0 -58
  419. package/dist/execution/checkAllowance.d.ts +0 -4
  420. package/dist/execution/checkBalance.d.ts +0 -2
  421. package/dist/execution/index.d.ts +0 -1
  422. package/dist/execution/index.js +0 -1
  423. package/dist/execution/multisig.d.ts +0 -4
  424. package/dist/execution/prepareRestart.d.ts +0 -3
  425. package/dist/execution/prepareRestart.js +0 -61
  426. package/dist/execution/waitForReceivingTransaction.d.ts +0 -3
  427. package/dist/index.d.ts +0 -5
  428. package/dist/index.js +0 -6
  429. package/dist/services/ApiService.d.ts +0 -17
  430. package/dist/services/ApiService.js +0 -321
  431. package/dist/services/ChainsService.d.ts +0 -11
  432. package/dist/services/ChainsService.js +0 -33
  433. package/dist/services/ConfigService.d.ts +0 -23
  434. package/dist/services/ConfigService.js +0 -99
  435. package/dist/typeguards.d.ts +0 -4
  436. package/dist/types/abi.d.ts +0 -5
  437. package/dist/types/index.d.ts +0 -4
  438. package/dist/types/index.js +0 -4
  439. package/dist/types/internal.types.d.ts +0 -142
  440. package/dist/types/internal.types.js +0 -1
  441. package/dist/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  442. package/dist/utils/index.d.ts +0 -5
  443. package/dist/utils/index.js +0 -5
  444. package/dist/utils/median.d.ts +0 -1
  445. package/dist/version.d.ts +0 -2
  446. package/dist/version.js +0 -2
@@ -0,0 +1,6 @@
1
+ export * from './errors.js';
2
+ export * from './getTransactionMessage.js';
3
+ export * from './median.js';
4
+ export * from './parseError.js';
5
+ export * from './utils.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"./dist/","sources":["utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA"}
@@ -1 +1,2 @@
1
1
  export declare const median: (arr: bigint[]) => bigint | undefined;
2
+ //# sourceMappingURL=median.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"median.d.ts","sourceRoot":"./dist/","sources":["utils/median.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,QAAS,MAAM,EAAE,KAAG,MAAM,GAAG,SAU/C,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { LiFiError } from './errors.js';
2
+ export declare const parseBackendError: (e: any) => Promise<LiFiError>;
3
+ //# sourceMappingURL=parseBackendError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseBackendError.d.ts","sourceRoot":"./dist/","sources":["utils/parseBackendError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAS5C,eAAO,MAAM,iBAAiB,MAAa,GAAG,KAAG,QAAQ,SAAS,CAwCjE,CAAA"}
@@ -1,5 +1,5 @@
1
- import type { LifiStep, Process } from '@lifi/types';
2
- import { LiFiError } from './errors';
1
+ import type { LiFiStep, Process } from '@lifi/types';
2
+ import { LiFiError } from './errors.js';
3
3
  /**
4
4
  * Available MetaMask error codes:
5
5
  *
@@ -31,7 +31,5 @@ import { LiFiError } from './errors';
31
31
  * https://eips.ethereum.org/EIPS/eip-1474#error-codes
32
32
  * https://eips.ethereum.org/EIPS/eip-1193#provider-errors
33
33
  */
34
- export declare const getTransactionNotSentMessage: (step?: LifiStep, process?: Process) => Promise<string>;
35
- export declare const getTransactionFailedMessage: (step: LifiStep, txLink?: string) => Promise<string>;
36
- export declare const parseError: (e: any, step?: LifiStep, process?: Process) => Promise<LiFiError>;
37
- export declare const parseBackendError: (e: any) => Promise<LiFiError>;
34
+ export declare const parseError: (e: any, step?: LiFiStep, process?: Process) => Promise<LiFiError>;
35
+ //# sourceMappingURL=parseError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseError.d.ts","sourceRoot":"./dist/","sources":["utils/parseError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAMpD,OAAO,EAIL,SAAS,EAOV,MAAM,aAAa,CAAA;AAGpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,eAAO,MAAM,UAAU,MAClB,GAAG,SACC,QAAQ,YACL,OAAO,KAChB,QAAQ,SAAS,CAmJnB,CAAA"}
@@ -8,3 +8,4 @@ export declare const wait: (ms: number) => Promise<undefined>;
8
8
  export declare const repeatUntilDone: <T>(toRepeat: () => Promise<T | undefined>, timeout?: number) => Promise<T>;
9
9
  export declare const isZeroAddress: (address: string) => boolean;
10
10
  export declare const isNativeTokenAddress: (address: string) => boolean;
11
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"./dist/","sources":["utils/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,OAAQ,MAAM,KAAG,QAAQ,SAAS,CAIlD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,6EAc3B,CAAA;AAED,eAAO,MAAM,aAAa,YAAa,MAAM,KAAG,OAK/C,CAAA;AAED,eAAO,MAAM,oBAAoB,YAAa,MAAM,KAAG,OAUtD,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const name = "@lifi/sdk";
2
+ export declare const version = "3.0.0-alpha.21";
3
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"./dist/","sources":["version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,cAAc,CAAA;AAC/B,eAAO,MAAM,OAAO,mBAAmB,CAAA"}
package/dist/config.ts ADDED
@@ -0,0 +1,47 @@
1
+ import type { ChainId, ExtendedChain } from '@lifi/types'
2
+ import type { SDKConfig, SDKOptions } from './types/index.js'
3
+
4
+ export const config = (() => {
5
+ const _config: SDKConfig = {
6
+ integrator: 'lifi-sdk',
7
+ apiUrl: 'https://li.quest/v1',
8
+ rpcUrls: {},
9
+ }
10
+ let _chains: ExtendedChain[]
11
+ let _loading: Promise<void> | undefined
12
+ return {
13
+ get chains() {
14
+ return _chains
15
+ },
16
+ set chains(chains: ExtendedChain[]) {
17
+ _chains = chains
18
+ _loading = undefined
19
+ },
20
+ set loading(loading: Promise<void>) {
21
+ _loading = loading
22
+ },
23
+ async getRPCUrls() {
24
+ if (_loading) {
25
+ await _loading
26
+ }
27
+ return _config.rpcUrls
28
+ },
29
+ async getChainById(chainId: ChainId) {
30
+ if (_loading) {
31
+ await _loading
32
+ }
33
+ const chain = this.chains?.find((chain) => chain.id === chainId)
34
+ if (!chain) {
35
+ throw new Error(`ChainId ${chainId} not found`)
36
+ }
37
+ return chain
38
+ },
39
+ set(options: SDKOptions) {
40
+ Object.assign(_config, options)
41
+ return _config
42
+ },
43
+ get() {
44
+ return _config
45
+ },
46
+ }
47
+ })()
@@ -0,0 +1,7 @@
1
+ export const AddressZero = '0x0000000000000000000000000000000000000000'
2
+ export const AlternativeAddressZero =
3
+ '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'
4
+ /**
5
+ * Cronos require bigger multicall chunks than default 1024 (1 KB)
6
+ */
7
+ export const MulticallBatchSize = 16_384 // 16 Kilobytes (KB)
@@ -0,0 +1,40 @@
1
+ import type { LiFiStep } from '@lifi/types'
2
+ import { StatusManager } from './StatusManager.js'
3
+ import type {
4
+ ExecutionOptions,
5
+ InteractionSettings,
6
+ StepExecutor,
7
+ StepExecutorOptions,
8
+ } from './types.js'
9
+
10
+ // Please be careful when changing the defaults as it may break the behavior (e.g., background execution)
11
+ const defaultInteractionSettings = {
12
+ allowInteraction: true,
13
+ allowUpdates: true,
14
+ allowExecution: true,
15
+ }
16
+
17
+ export abstract class BaseStepExecutor implements StepExecutor {
18
+ protected executionOptions?: ExecutionOptions
19
+ protected statusManager: StatusManager
20
+
21
+ public allowUserInteraction = true
22
+ public allowExecution = true
23
+
24
+ constructor(options: StepExecutorOptions) {
25
+ this.statusManager = new StatusManager(options.routeId)
26
+ this.executionOptions = options.executionOptions
27
+ }
28
+
29
+ setInteraction = (settings?: InteractionSettings): void => {
30
+ const interactionSettings = {
31
+ ...defaultInteractionSettings,
32
+ ...settings,
33
+ }
34
+ this.allowUserInteraction = interactionSettings.allowInteraction
35
+ this.statusManager.allowUpdates(interactionSettings.allowUpdates)
36
+ this.allowExecution = interactionSettings.allowExecution
37
+ }
38
+
39
+ abstract executeStep(step: LiFiStep): Promise<LiFiStep>
40
+ }
@@ -0,0 +1,50 @@
1
+ import { ChainType } from '@lifi/types'
2
+ import { isAddress } from 'viem'
3
+ import type { StepExecutorOptions } from '../types.js'
4
+ import { EVMStepExecutor } from './EVMStepExecutor.js'
5
+ import { getEVMBalance } from './getEVMBalance.js'
6
+ import type { EVMProvider, EVMProviderOptions } from './types.js'
7
+
8
+ export function EVM(options?: EVMProviderOptions): EVMProvider {
9
+ const _options: EVMProviderOptions = options ?? {}
10
+ return {
11
+ get type() {
12
+ return ChainType.EVM
13
+ },
14
+ get multicall() {
15
+ return _options.multicall
16
+ },
17
+ get multisig() {
18
+ return _options.multisig
19
+ },
20
+ isAddress(address: string): boolean {
21
+ return isAddress(address)
22
+ },
23
+ getBalance: getEVMBalance,
24
+ async getStepExecutor(
25
+ options: StepExecutorOptions
26
+ ): Promise<EVMStepExecutor> {
27
+ if (!_options.getWalletClient) {
28
+ throw new Error(`getWalletClient is not provided.`)
29
+ }
30
+
31
+ const walletClient = await _options.getWalletClient()
32
+
33
+ const executor = new EVMStepExecutor({
34
+ walletClient,
35
+ multisig: _options.multisig,
36
+ routeId: options.routeId,
37
+ executionOptions: {
38
+ ...options.executionOptions,
39
+ switchChainHook:
40
+ _options.switchChain ?? options.executionOptions?.switchChainHook,
41
+ },
42
+ })
43
+
44
+ return executor
45
+ },
46
+ setOptions(options: EVMProviderOptions) {
47
+ Object.assign(_options, options)
48
+ },
49
+ }
50
+ }
@@ -0,0 +1,472 @@
1
+ import type {
2
+ ExtendedTransactionInfo,
3
+ FullStatusData,
4
+ LiFiStep,
5
+ } from '@lifi/types'
6
+ import type {
7
+ Address,
8
+ Hash,
9
+ PublicClient,
10
+ ReplacementReason,
11
+ SendTransactionParameters,
12
+ WalletClient,
13
+ } from 'viem'
14
+ import { publicActions } from 'viem'
15
+ import { config } from '../../config.js'
16
+ import { getStepTransaction } from '../../services/api.js'
17
+ import {
18
+ LiFiErrorCode,
19
+ TransactionError,
20
+ ValidationError,
21
+ getTransactionFailedMessage,
22
+ isZeroAddress,
23
+ parseError,
24
+ } from '../../utils/index.js'
25
+ import { BaseStepExecutor } from '../BaseStepExecutor.js'
26
+ import { checkBalance } from '../checkBalance.js'
27
+ import { stepComparison } from '../stepComparison.js'
28
+ import type { StepExecutorOptions, TransactionParameters } from '../types.js'
29
+ import { getSubstatusMessage } from '../utils.js'
30
+ import { waitForReceivingTransaction } from '../waitForReceivingTransaction.js'
31
+ import { checkAllowance } from './checkAllowance.js'
32
+ import { updateMultisigRouteProcess } from './multisig.js'
33
+ import { switchChain } from './switchChain.js'
34
+ import type { MultisigConfig, MultisigTransaction } from './types.js'
35
+ import { getMaxPriorityFeePerGas } from './utils.js'
36
+
37
+ export interface EVMStepExecutorOptions extends StepExecutorOptions {
38
+ walletClient: WalletClient
39
+ multisig?: MultisigConfig
40
+ }
41
+
42
+ export class EVMStepExecutor extends BaseStepExecutor {
43
+ private walletClient: WalletClient
44
+ private multisig?: MultisigConfig
45
+
46
+ constructor(options: EVMStepExecutorOptions) {
47
+ super(options)
48
+ this.walletClient = options.walletClient
49
+ this.multisig = options.multisig
50
+ }
51
+
52
+ // TODO: add checkChain method and update wallet client inside executors
53
+ // This can come in handy when we execute multiple routes simultaneously and
54
+ // should be sure that we are on the right chain when waiting for transactions.
55
+ checkChain = () => {
56
+ throw new Error('checkChain is not implemented.')
57
+ }
58
+
59
+ executeStep = async (step: LiFiStep): Promise<LiFiStep> => {
60
+ // Make sure that the chain is still correct
61
+
62
+ // Find if it's bridging and the step is waiting for a transaction on the receiving chain
63
+ const recievingChainProcess = step.execution?.process.find(
64
+ (process) => process.type === 'RECEIVING_CHAIN'
65
+ )
66
+
67
+ // If the step is waiting for a transaction on the receiving chain, we do not switch the chain
68
+ // All changes are already done from the source chain
69
+ // Return the step
70
+ if (
71
+ recievingChainProcess?.substatus !== 'WAIT_DESTINATION_TRANSACTION' ||
72
+ !recievingChainProcess
73
+ ) {
74
+ const updatedWalletClient = await switchChain(
75
+ this.walletClient,
76
+ this.statusManager,
77
+ step,
78
+ this.allowUserInteraction,
79
+ this.executionOptions?.switchChainHook
80
+ )
81
+
82
+ if (!updatedWalletClient) {
83
+ // Chain switch was not successful, stop execution here
84
+ return step
85
+ }
86
+
87
+ this.walletClient = updatedWalletClient
88
+ }
89
+
90
+ const client = this.walletClient.extend(publicActions)
91
+
92
+ const isMultisigWalletClient = !!this.multisig?.isMultisigWalletClient
93
+ const multisigBatchTransactions: MultisigTransaction[] = []
94
+
95
+ const shouldBatchTransactions =
96
+ this.multisig?.shouldBatchTransactions &&
97
+ !!this.multisig.sendBatchTransaction
98
+
99
+ step.execution = this.statusManager.initExecutionObject(step)
100
+
101
+ const fromChain = await config.getChainById(step.action.fromChainId)
102
+ const toChain = await config.getChainById(step.action.toChainId)
103
+
104
+ const isBridgeExecution = fromChain.id !== toChain.id
105
+ const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'
106
+
107
+ // STEP 1: Check allowance
108
+ const existingProcess = step.execution.process.find(
109
+ (p) => p.type === currentProcessType
110
+ )
111
+
112
+ // Check token approval only if fromToken is not the native token => no approval needed in that case
113
+
114
+ const checkForAllowance =
115
+ !existingProcess?.txHash &&
116
+ !isZeroAddress(step.action.fromToken.address) &&
117
+ (shouldBatchTransactions || !isMultisigWalletClient)
118
+
119
+ if (checkForAllowance) {
120
+ const data = await checkAllowance(
121
+ fromChain,
122
+ step,
123
+ client,
124
+ this.statusManager,
125
+ this.executionOptions,
126
+ this.allowUserInteraction,
127
+ shouldBatchTransactions
128
+ )
129
+
130
+ if (data) {
131
+ // allowance doesn't need value
132
+ const baseTransaction: MultisigTransaction = {
133
+ to: step.action.fromToken.address,
134
+ data,
135
+ }
136
+
137
+ multisigBatchTransactions.push(baseTransaction)
138
+ }
139
+ }
140
+
141
+ // STEP 2: Get transaction
142
+ let process = this.statusManager.findOrCreateProcess(
143
+ step,
144
+ currentProcessType
145
+ )
146
+
147
+ if (process.status !== 'DONE') {
148
+ const multisigProcess = step.execution.process.find(
149
+ (p) => !!p.multisigTxHash
150
+ )
151
+
152
+ try {
153
+ if (isMultisigWalletClient && multisigProcess) {
154
+ const multisigTxHash = multisigProcess.multisigTxHash as Hash
155
+ if (!multisigTxHash) {
156
+ throw new ValidationError(
157
+ 'Multisig internal transaction hash is undefined.'
158
+ )
159
+ }
160
+ await updateMultisigRouteProcess(
161
+ multisigTxHash,
162
+ step,
163
+ process.type,
164
+ fromChain,
165
+ this.statusManager,
166
+ this.multisig
167
+ )
168
+ }
169
+
170
+ let txHash: Hash
171
+ if (process.txHash) {
172
+ // Make sure that the chain is still correct
173
+ const updatedWalletClient = await switchChain(
174
+ this.walletClient,
175
+ this.statusManager,
176
+ step,
177
+ this.allowUserInteraction,
178
+ this.executionOptions?.switchChainHook
179
+ )
180
+
181
+ if (!updatedWalletClient) {
182
+ // Chain switch was not successful, stop execution here
183
+ return step
184
+ }
185
+
186
+ this.walletClient = updatedWalletClient
187
+
188
+ // Load exiting transaction
189
+ txHash = process.txHash as Hash
190
+ } else {
191
+ process = this.statusManager.updateProcess(
192
+ step,
193
+ process.type,
194
+ 'STARTED'
195
+ )
196
+
197
+ // Check balance
198
+ await checkBalance(client.account!.address, step)
199
+
200
+ // Create new transaction
201
+ if (!step.transactionRequest) {
202
+ const { execution, ...stepBase } = step
203
+ const updatedStep = await getStepTransaction(stepBase)
204
+ const comparedStep = await stepComparison(
205
+ this.statusManager,
206
+ step,
207
+ updatedStep,
208
+ this.allowUserInteraction,
209
+ this.executionOptions
210
+ )
211
+ step = {
212
+ ...comparedStep,
213
+ execution: step.execution,
214
+ }
215
+ }
216
+
217
+ if (!step.transactionRequest) {
218
+ throw new TransactionError(
219
+ LiFiErrorCode.TransactionUnprepared,
220
+ 'Unable to prepare transaction.'
221
+ )
222
+ }
223
+
224
+ // STEP 3: Send the transaction
225
+ // Make sure that the chain is still correct
226
+ const updatedWalletClient = await switchChain(
227
+ this.walletClient,
228
+ this.statusManager,
229
+ step,
230
+ this.allowUserInteraction,
231
+ this.executionOptions?.switchChainHook
232
+ )
233
+
234
+ if (!updatedWalletClient) {
235
+ // Chain switch was not successful, stop execution here
236
+ return step
237
+ }
238
+
239
+ this.walletClient = updatedWalletClient
240
+
241
+ process = this.statusManager.updateProcess(
242
+ step,
243
+ process.type,
244
+ 'ACTION_REQUIRED'
245
+ )
246
+
247
+ if (!this.allowUserInteraction) {
248
+ return step
249
+ }
250
+
251
+ let transactionRequest: TransactionParameters = {
252
+ to: step.transactionRequest.to as Hash,
253
+ from: step.transactionRequest.from as Hash,
254
+ data: step.transactionRequest.data as Hash,
255
+ value: step.transactionRequest.value
256
+ ? BigInt(step.transactionRequest.value as string)
257
+ : undefined,
258
+ gas: step.transactionRequest.gasLimit
259
+ ? BigInt(step.transactionRequest.gasLimit as string)
260
+ : undefined,
261
+ // gasPrice: step.transactionRequest.gasPrice
262
+ // ? BigInt(step.transactionRequest.gasPrice as string)
263
+ // : undefined,
264
+ // maxFeePerGas: step.transactionRequest.maxFeePerGas
265
+ // ? BigInt(step.transactionRequest.maxFeePerGas as string)
266
+ // : undefined,
267
+ maxPriorityFeePerGas:
268
+ this.walletClient.account?.type === 'local'
269
+ ? await getMaxPriorityFeePerGas(client as PublicClient)
270
+ : step.transactionRequest.maxPriorityFeePerGas
271
+ ? BigInt(step.transactionRequest.maxPriorityFeePerGas as string)
272
+ : undefined,
273
+ }
274
+
275
+ if (this.executionOptions?.updateTransactionRequestHook) {
276
+ const customizedTransactionRequest: TransactionParameters =
277
+ await this.executionOptions.updateTransactionRequestHook({
278
+ requestType: 'transaction',
279
+ ...transactionRequest,
280
+ })
281
+
282
+ transactionRequest = {
283
+ ...transactionRequest,
284
+ ...customizedTransactionRequest,
285
+ }
286
+ }
287
+
288
+ if (shouldBatchTransactions && this.multisig?.sendBatchTransaction) {
289
+ if (transactionRequest.to && transactionRequest.data) {
290
+ const populatedTransaction: MultisigTransaction = {
291
+ value: transactionRequest.value,
292
+ to: transactionRequest.to,
293
+ data: transactionRequest.data,
294
+ }
295
+ multisigBatchTransactions.push(populatedTransaction)
296
+
297
+ txHash = await this.multisig?.sendBatchTransaction(
298
+ multisigBatchTransactions
299
+ )
300
+ } else {
301
+ throw new TransactionError(
302
+ LiFiErrorCode.TransactionUnprepared,
303
+ 'Unable to prepare transaction.'
304
+ )
305
+ }
306
+ } else {
307
+ txHash = await this.walletClient.sendTransaction({
308
+ to: transactionRequest.to as Address,
309
+ account: this.walletClient.account!,
310
+ data: transactionRequest.data,
311
+ gas: transactionRequest.gas,
312
+ gasPrice: transactionRequest.gasPrice,
313
+ maxFeePerGas: transactionRequest.maxFeePerGas,
314
+ maxPriorityFeePerGas: transactionRequest.maxPriorityFeePerGas,
315
+ chain: null,
316
+ } as SendTransactionParameters)
317
+ }
318
+
319
+ // STEP 4: Wait for the transaction
320
+ if (isMultisigWalletClient) {
321
+ process = this.statusManager.updateProcess(
322
+ step,
323
+ process.type,
324
+ 'ACTION_REQUIRED',
325
+ {
326
+ multisigTxHash: txHash,
327
+ }
328
+ )
329
+ } else {
330
+ process = this.statusManager.updateProcess(
331
+ step,
332
+ process.type,
333
+ 'PENDING',
334
+ {
335
+ txHash: txHash,
336
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
337
+ }
338
+ )
339
+ }
340
+ }
341
+
342
+ let replacementReason: ReplacementReason | undefined
343
+ const transactionReceipt = await client.waitForTransactionReceipt({
344
+ hash: txHash,
345
+ onReplaced: (response) => {
346
+ replacementReason = response.reason
347
+ this.statusManager.updateProcess(step, process.type, 'PENDING', {
348
+ txHash: response.transaction.hash,
349
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${response.transaction.hash}`,
350
+ })
351
+ },
352
+ })
353
+
354
+ if (replacementReason === 'cancelled') {
355
+ throw new TransactionError(
356
+ LiFiErrorCode.TransactionCanceled,
357
+ 'User canceled transaction.'
358
+ )
359
+ }
360
+
361
+ // if it's multisig wallet client and the process is in ACTION_REQUIRED
362
+ // then signatures are still needed
363
+ if (isMultisigWalletClient && process.status === 'ACTION_REQUIRED') {
364
+ await updateMultisigRouteProcess(
365
+ transactionReceipt.transactionHash,
366
+ step,
367
+ process.type,
368
+ fromChain,
369
+ this.statusManager,
370
+ this.multisig
371
+ )
372
+ }
373
+
374
+ if (!isMultisigWalletClient) {
375
+ process = this.statusManager.updateProcess(
376
+ step,
377
+ process.type,
378
+ 'PENDING',
379
+ {
380
+ txHash: transactionReceipt.transactionHash,
381
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${transactionReceipt.transactionHash}`,
382
+ }
383
+ )
384
+ }
385
+
386
+ if (isBridgeExecution) {
387
+ process = this.statusManager.updateProcess(step, process.type, 'DONE')
388
+ }
389
+ } catch (e: any) {
390
+ const error = await parseError(e, step, process)
391
+ process = this.statusManager.updateProcess(
392
+ step,
393
+ process.type,
394
+ 'FAILED',
395
+ {
396
+ error: {
397
+ message: error.message,
398
+ htmlMessage: error.htmlMessage,
399
+ code: error.code,
400
+ },
401
+ }
402
+ )
403
+ this.statusManager.updateExecution(step, 'FAILED')
404
+ throw error
405
+ }
406
+ }
407
+
408
+ // STEP 5: Wait for the receiving chain
409
+ const processTxHash = process.txHash
410
+ if (isBridgeExecution) {
411
+ process = this.statusManager.findOrCreateProcess(
412
+ step,
413
+ 'RECEIVING_CHAIN',
414
+ 'PENDING'
415
+ )
416
+ }
417
+ let statusResponse: FullStatusData
418
+ try {
419
+ if (!processTxHash) {
420
+ throw new Error('Transaction hash is undefined.')
421
+ }
422
+ statusResponse = (await waitForReceivingTransaction(
423
+ processTxHash,
424
+ this.statusManager,
425
+ process.type,
426
+ step
427
+ )) as FullStatusData
428
+
429
+ const statusReceiving =
430
+ statusResponse.receiving as ExtendedTransactionInfo
431
+
432
+ process = this.statusManager.updateProcess(step, process.type, 'DONE', {
433
+ substatus: statusResponse.substatus,
434
+ substatusMessage:
435
+ statusResponse.substatusMessage ||
436
+ getSubstatusMessage(statusResponse.status, statusResponse.substatus),
437
+ txHash: statusReceiving?.txHash,
438
+ txLink: `${toChain.metamask.blockExplorerUrls[0]}tx/${statusReceiving?.txHash}`,
439
+ })
440
+
441
+ this.statusManager.updateExecution(step, 'DONE', {
442
+ fromAmount: statusResponse.sending.amount,
443
+ toAmount: statusReceiving?.amount,
444
+ toToken: statusReceiving?.token,
445
+ gasAmount: statusResponse.sending.gasAmount,
446
+ gasAmountUSD: statusResponse.sending.gasAmountUSD,
447
+ gasPrice: statusResponse.sending.gasPrice,
448
+ gasToken: statusResponse.sending.gasToken,
449
+ gasUsed: statusResponse.sending.gasUsed,
450
+ })
451
+ } catch (e: unknown) {
452
+ const htmlMessage = await getTransactionFailedMessage(
453
+ step,
454
+ process.txLink
455
+ )
456
+
457
+ process = this.statusManager.updateProcess(step, process.type, 'FAILED', {
458
+ error: {
459
+ code: LiFiErrorCode.TransactionFailed,
460
+ message: 'Failed while waiting for receiving chain.',
461
+ htmlMessage,
462
+ },
463
+ })
464
+ this.statusManager.updateExecution(step, 'FAILED')
465
+ console.warn(e)
466
+ throw e
467
+ }
468
+
469
+ // DONE
470
+ return step
471
+ }
472
+ }