@lifi/sdk 3.0.0-alpha.3 → 3.0.0-alpha.30

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 (448) hide show
  1. package/package.json +31 -86
  2. package/src/_cjs/config.js +48 -0
  3. package/src/_cjs/config.js.map +1 -0
  4. package/{dist/cjs → src/_cjs}/constants.js +3 -5
  5. package/src/_cjs/constants.js.map +1 -0
  6. package/src/_cjs/core/BaseStepExecutor.js +55 -0
  7. package/src/_cjs/core/BaseStepExecutor.js.map +1 -0
  8. package/src/_cjs/core/EVM/EVM.js +46 -0
  9. package/src/_cjs/core/EVM/EVM.js.map +1 -0
  10. package/src/_cjs/core/EVM/EVMStepExecutor.js +276 -0
  11. package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -0
  12. package/{dist/cjs/types → src/_cjs/core/EVM}/abi.js +1 -0
  13. package/src/_cjs/core/EVM/abi.js.map +1 -0
  14. package/{dist/cjs/execution → src/_cjs/core/EVM}/checkAllowance.js +12 -12
  15. package/src/_cjs/core/EVM/checkAllowance.js.map +1 -0
  16. package/{dist/cjs/allowance → src/_cjs/core/EVM}/getAllowance.js +13 -17
  17. package/src/_cjs/core/EVM/getAllowance.js.map +1 -0
  18. package/{dist/cjs/balance/getBalance.js → src/_cjs/core/EVM/getEVMBalance.js} +20 -22
  19. package/src/_cjs/core/EVM/getEVMBalance.js.map +1 -0
  20. package/{dist/cjs/execution → src/_cjs/core/EVM}/multisig.js +7 -11
  21. package/src/_cjs/core/EVM/multisig.js.map +1 -0
  22. package/src/_cjs/core/EVM/publicClient.js +35 -0
  23. package/src/_cjs/core/EVM/publicClient.js.map +1 -0
  24. package/src/_cjs/core/EVM/setAllowance.js +71 -0
  25. package/src/_cjs/core/EVM/setAllowance.js.map +1 -0
  26. package/src/_cjs/core/EVM/switchChain.js +37 -0
  27. package/src/_cjs/core/EVM/switchChain.js.map +1 -0
  28. package/src/_cjs/core/EVM/types.js +9 -0
  29. package/src/_cjs/core/EVM/types.js.map +1 -0
  30. package/{dist/cjs/utils/getMaxPriorityFeePerGas.js → src/_cjs/core/EVM/utils.js} +13 -3
  31. package/src/_cjs/core/EVM/utils.js.map +1 -0
  32. package/src/_cjs/core/Solana/Solana.js +44 -0
  33. package/src/_cjs/core/Solana/Solana.js.map +1 -0
  34. package/src/_cjs/core/Solana/SolanaStepExecutor.js +157 -0
  35. package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -0
  36. package/src/_cjs/core/Solana/connection.js +18 -0
  37. package/src/_cjs/core/Solana/connection.js.map +1 -0
  38. package/src/_cjs/core/Solana/getSolanaBalance.js +60 -0
  39. package/src/_cjs/core/Solana/getSolanaBalance.js.map +1 -0
  40. package/src/_cjs/core/Solana/types.js +10 -0
  41. package/src/_cjs/core/Solana/types.js.map +1 -0
  42. package/src/_cjs/core/StatusManager.js +167 -0
  43. package/src/_cjs/core/StatusManager.js.map +1 -0
  44. package/{dist/cjs/execution → src/_cjs/core}/checkBalance.js +5 -5
  45. package/src/_cjs/core/checkBalance.js.map +1 -0
  46. package/src/_cjs/core/execution.js +134 -0
  47. package/src/_cjs/core/execution.js.map +1 -0
  48. package/src/_cjs/core/executionState.js +23 -0
  49. package/src/_cjs/core/executionState.js.map +1 -0
  50. package/src/_cjs/core/index.js +7 -0
  51. package/src/_cjs/core/index.js.map +1 -0
  52. package/src/_cjs/core/prepareRestart.js +23 -0
  53. package/src/_cjs/core/prepareRestart.js.map +1 -0
  54. package/src/_cjs/core/provider.js +15 -0
  55. package/src/_cjs/core/provider.js.map +1 -0
  56. package/src/_cjs/core/stepComparison.js +25 -0
  57. package/src/_cjs/core/stepComparison.js.map +1 -0
  58. package/{dist/cjs/allowance → src/_cjs/core}/types.js +1 -0
  59. package/src/_cjs/core/types.js.map +1 -0
  60. package/{dist/cjs/execution → src/_cjs/core}/utils.js +16 -10
  61. package/src/_cjs/core/utils.js.map +1 -0
  62. package/{dist/cjs/execution → src/_cjs/core}/waitForReceivingTransaction.js +10 -12
  63. package/src/_cjs/core/waitForReceivingTransaction.js.map +1 -0
  64. package/src/_cjs/createConfig.js +50 -0
  65. package/src/_cjs/createConfig.js.map +1 -0
  66. package/src/_cjs/helpers.js +57 -0
  67. package/src/_cjs/helpers.js.map +1 -0
  68. package/src/_cjs/index.js +20 -0
  69. package/src/_cjs/index.js.map +1 -0
  70. package/src/_cjs/package.json +1 -0
  71. package/src/_cjs/request.js +66 -0
  72. package/src/_cjs/request.js.map +1 -0
  73. package/src/_cjs/services/api.js +304 -0
  74. package/src/_cjs/services/api.js.map +1 -0
  75. package/src/_cjs/services/balance.js +49 -0
  76. package/src/_cjs/services/balance.js.map +1 -0
  77. package/{dist/cjs → src/_cjs}/typeguards.js +1 -0
  78. package/src/_cjs/typeguards.js.map +1 -0
  79. package/src/_cjs/types/index.js +5 -0
  80. package/src/_cjs/types/index.js.map +1 -0
  81. package/{dist/cjs/types/internal.types.js → src/_cjs/types/internal.js} +1 -0
  82. package/src/_cjs/types/internal.js.map +1 -0
  83. package/{dist/cjs → src/_cjs}/utils/errors.js +25 -3
  84. package/src/_cjs/utils/errors.js.map +1 -0
  85. package/src/_cjs/utils/getTransactionMessage.js +31 -0
  86. package/src/_cjs/utils/getTransactionMessage.js.map +1 -0
  87. package/src/_cjs/utils/index.js +9 -0
  88. package/src/_cjs/utils/index.js.map +1 -0
  89. package/{dist/cjs → src/_cjs}/utils/median.js +1 -0
  90. package/src/_cjs/utils/median.js.map +1 -0
  91. package/src/_cjs/utils/parseBackendError.js +27 -0
  92. package/src/_cjs/utils/parseBackendError.js.map +1 -0
  93. package/src/_cjs/utils/parseError.js +67 -0
  94. package/src/_cjs/utils/parseError.js.map +1 -0
  95. package/{dist/cjs → src/_cjs}/utils/utils.js +5 -11
  96. package/src/_cjs/utils/utils.js.map +1 -0
  97. package/{dist/cjs → src/_cjs}/version.js +2 -1
  98. package/src/_cjs/version.js.map +1 -0
  99. package/src/_esm/config.js +45 -0
  100. package/src/_esm/config.js.map +1 -0
  101. package/{dist → src/_esm}/constants.js +2 -4
  102. package/src/_esm/constants.js.map +1 -0
  103. package/src/_esm/core/BaseStepExecutor.js +52 -0
  104. package/src/_esm/core/BaseStepExecutor.js.map +1 -0
  105. package/src/_esm/core/EVM/EVM.js +42 -0
  106. package/src/_esm/core/EVM/EVM.js.map +1 -0
  107. package/src/_esm/core/EVM/EVMStepExecutor.js +304 -0
  108. package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -0
  109. package/{dist/types → src/_esm/core/EVM}/abi.js +1 -0
  110. package/src/_esm/core/EVM/abi.js.map +1 -0
  111. package/{dist/execution → src/_esm/core/EVM}/checkAllowance.js +8 -6
  112. package/src/_esm/core/EVM/checkAllowance.js.map +1 -0
  113. package/{dist/allowance → src/_esm/core/EVM}/getAllowance.js +19 -6
  114. package/src/_esm/core/EVM/getAllowance.js.map +1 -0
  115. package/{dist/balance/getBalance.js → src/_esm/core/EVM/getEVMBalance.js} +10 -12
  116. package/src/_esm/core/EVM/getEVMBalance.js.map +1 -0
  117. package/{dist/execution → src/_esm/core/EVM}/multisig.js +5 -6
  118. package/src/_esm/core/EVM/multisig.js.map +1 -0
  119. package/src/_esm/core/EVM/publicClient.js +37 -0
  120. package/src/_esm/core/EVM/publicClient.js.map +1 -0
  121. package/{dist/allowance → src/_esm/core/EVM}/setAllowance.js +46 -11
  122. package/src/_esm/core/EVM/setAllowance.js.map +1 -0
  123. package/{dist/execution → src/_esm/core/EVM}/switchChain.js +5 -3
  124. package/src/_esm/core/EVM/switchChain.js.map +1 -0
  125. package/src/_esm/core/EVM/types.js +6 -0
  126. package/src/_esm/core/EVM/types.js.map +1 -0
  127. package/{dist/utils/getMaxPriorityFeePerGas.js → src/_esm/core/EVM/utils.js} +11 -1
  128. package/src/_esm/core/EVM/utils.js.map +1 -0
  129. package/src/_esm/core/Solana/Solana.js +40 -0
  130. package/src/_esm/core/Solana/Solana.js.map +1 -0
  131. package/src/_esm/core/Solana/SolanaStepExecutor.js +158 -0
  132. package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -0
  133. package/src/_esm/core/Solana/connection.js +19 -0
  134. package/src/_esm/core/Solana/connection.js.map +1 -0
  135. package/src/_esm/core/Solana/getSolanaBalance.js +56 -0
  136. package/src/_esm/core/Solana/getSolanaBalance.js.map +1 -0
  137. package/src/_esm/core/Solana/types.js +7 -0
  138. package/src/_esm/core/Solana/types.js.map +1 -0
  139. package/src/_esm/core/StatusManager.js +203 -0
  140. package/src/_esm/core/StatusManager.js.map +1 -0
  141. package/{dist/execution → src/_esm/core}/checkBalance.js +3 -2
  142. package/src/_esm/core/checkBalance.js.map +1 -0
  143. package/src/_esm/core/execution.js +173 -0
  144. package/src/_esm/core/execution.js.map +1 -0
  145. package/src/_esm/core/executionState.js +20 -0
  146. package/src/_esm/core/executionState.js.map +1 -0
  147. package/src/_esm/core/index.js +4 -0
  148. package/src/_esm/core/index.js.map +1 -0
  149. package/src/_esm/core/prepareRestart.js +64 -0
  150. package/src/_esm/core/prepareRestart.js.map +1 -0
  151. package/src/_esm/core/provider.js +11 -0
  152. package/src/_esm/core/provider.js.map +1 -0
  153. package/{dist/execution → src/_esm/core}/stepComparison.js +7 -5
  154. package/src/_esm/core/stepComparison.js.map +1 -0
  155. package/src/_esm/core/types.js +2 -0
  156. package/src/_esm/core/types.js.map +1 -0
  157. package/{dist/execution → src/_esm/core}/utils.js +14 -0
  158. package/src/_esm/core/utils.js.map +1 -0
  159. package/{dist/execution → src/_esm/core}/waitForReceivingTransaction.js +8 -7
  160. package/src/_esm/core/waitForReceivingTransaction.js.map +1 -0
  161. package/src/_esm/createConfig.js +47 -0
  162. package/src/_esm/createConfig.js.map +1 -0
  163. package/{dist → src/_esm}/helpers.js +5 -17
  164. package/src/_esm/helpers.js.map +1 -0
  165. package/src/_esm/index.js +12 -0
  166. package/src/_esm/index.js.map +1 -0
  167. package/src/_esm/package.json +1 -0
  168. package/{dist → src/_esm}/request.js +23 -13
  169. package/src/_esm/request.js.map +1 -0
  170. package/src/_esm/services/api.js +372 -0
  171. package/src/_esm/services/api.js.map +1 -0
  172. package/src/_esm/services/balance.js +65 -0
  173. package/src/_esm/services/balance.js.map +1 -0
  174. package/{dist → src/_esm}/typeguards.js +1 -0
  175. package/src/_esm/typeguards.js.map +1 -0
  176. package/src/_esm/types/index.js +2 -0
  177. package/src/_esm/types/index.js.map +1 -0
  178. package/src/_esm/types/internal.js +2 -0
  179. package/src/_esm/types/internal.js.map +1 -0
  180. package/{dist → src/_esm}/utils/errors.js +25 -0
  181. package/src/_esm/utils/errors.js.map +1 -0
  182. package/src/_esm/utils/getTransactionMessage.js +28 -0
  183. package/src/_esm/utils/getTransactionMessage.js.map +1 -0
  184. package/src/_esm/utils/index.js +6 -0
  185. package/src/_esm/utils/index.js.map +1 -0
  186. package/{dist → src/_esm}/utils/median.js +1 -0
  187. package/src/_esm/utils/median.js.map +1 -0
  188. package/src/_esm/utils/parseBackendError.js +24 -0
  189. package/src/_esm/utils/parseBackendError.js.map +1 -0
  190. package/{dist → src/_esm}/utils/parseError.js +4 -53
  191. package/src/_esm/utils/parseError.js.map +1 -0
  192. package/{dist → src/_esm}/utils/utils.js +2 -1
  193. package/src/_esm/utils/utils.js.map +1 -0
  194. package/src/_esm/version.js +3 -0
  195. package/src/_esm/version.js.map +1 -0
  196. package/src/_types/config.d.ts +11 -0
  197. package/src/_types/config.d.ts.map +1 -0
  198. package/{dist/cjs → src/_types}/constants.d.ts +2 -4
  199. package/src/_types/constants.d.ts.map +1 -0
  200. package/src/_types/core/BaseStepExecutor.d.ts +13 -0
  201. package/src/_types/core/BaseStepExecutor.d.ts.map +1 -0
  202. package/src/_types/core/EVM/EVM.d.ts +3 -0
  203. package/src/_types/core/EVM/EVM.d.ts.map +1 -0
  204. package/src/_types/core/EVM/EVMStepExecutor.d.ts +16 -0
  205. package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -0
  206. package/{dist/cjs/types → src/_types/core/EVM}/abi.d.ts +1 -0
  207. package/src/_types/core/EVM/abi.d.ts.map +1 -0
  208. package/src/_types/core/EVM/checkAllowance.d.ts +6 -0
  209. package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -0
  210. package/{dist/cjs/allowance → src/_types/core/EVM}/getAllowance.d.ts +15 -1
  211. package/src/_types/core/EVM/getAllowance.d.ts.map +1 -0
  212. package/src/_types/core/EVM/getEVMBalance.d.ts +3 -0
  213. package/src/_types/core/EVM/getEVMBalance.d.ts.map +1 -0
  214. package/src/_types/core/EVM/multisig.d.ts +6 -0
  215. package/src/_types/core/EVM/multisig.d.ts.map +1 -0
  216. package/src/_types/core/EVM/publicClient.d.ts +8 -0
  217. package/src/_types/core/EVM/publicClient.d.ts.map +1 -0
  218. package/src/_types/core/EVM/setAllowance.d.ts +25 -0
  219. package/src/_types/core/EVM/setAllowance.d.ts.map +1 -0
  220. package/{dist/cjs/execution → src/_types/core/EVM}/switchChain.d.ts +5 -4
  221. package/src/_types/core/EVM/switchChain.d.ts.map +1 -0
  222. package/src/_types/core/EVM/types.d.ts +57 -0
  223. package/src/_types/core/EVM/types.d.ts.map +1 -0
  224. package/src/_types/core/EVM/utils.d.ts +5 -0
  225. package/src/_types/core/EVM/utils.d.ts.map +1 -0
  226. package/src/_types/core/Solana/Solana.d.ts +3 -0
  227. package/src/_types/core/Solana/Solana.d.ts.map +1 -0
  228. package/src/_types/core/Solana/SolanaStepExecutor.d.ts +12 -0
  229. package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -0
  230. package/src/_types/core/Solana/connection.d.ts +8 -0
  231. package/src/_types/core/Solana/connection.d.ts.map +1 -0
  232. package/src/_types/core/Solana/getSolanaBalance.d.ts +3 -0
  233. package/src/_types/core/Solana/getSolanaBalance.d.ts.map +1 -0
  234. package/src/_types/core/Solana/types.d.ts +13 -0
  235. package/src/_types/core/Solana/types.d.ts.map +1 -0
  236. package/{dist/cjs/execution → src/_types/core}/StatusManager.d.ts +13 -16
  237. package/src/_types/core/StatusManager.d.ts.map +1 -0
  238. package/src/_types/core/checkBalance.d.ts +3 -0
  239. package/src/_types/core/checkBalance.d.ts.map +1 -0
  240. package/src/_types/core/execution.d.ts +42 -0
  241. package/src/_types/core/execution.d.ts.map +1 -0
  242. package/src/_types/core/executionState.d.ts +15 -0
  243. package/src/_types/core/executionState.d.ts.map +1 -0
  244. package/src/_types/core/index.d.ts +4 -0
  245. package/src/_types/core/index.d.ts.map +1 -0
  246. package/src/_types/core/prepareRestart.d.ts +3 -0
  247. package/src/_types/core/prepareRestart.d.ts.map +1 -0
  248. package/src/_types/core/provider.d.ts +3 -0
  249. package/src/_types/core/provider.d.ts.map +1 -0
  250. package/{dist/execution → src/_types/core}/stepComparison.d.ts +7 -4
  251. package/src/_types/core/stepComparison.d.ts.map +1 -0
  252. package/src/_types/core/types.d.ts +80 -0
  253. package/src/_types/core/types.d.ts.map +1 -0
  254. package/{dist/execution → src/_types/core}/utils.d.ts +5 -2
  255. package/src/_types/core/utils.d.ts.map +1 -0
  256. package/src/_types/core/waitForReceivingTransaction.d.ts +4 -0
  257. package/src/_types/core/waitForReceivingTransaction.d.ts.map +1 -0
  258. package/src/_types/createConfig.d.ts +7 -0
  259. package/src/_types/createConfig.d.ts.map +1 -0
  260. package/{dist → src/_types}/helpers.d.ts +4 -3
  261. package/src/_types/helpers.d.ts.map +1 -0
  262. package/src/_types/index.d.ts +12 -0
  263. package/src/_types/index.d.ts.map +1 -0
  264. package/{dist → src/_types}/request.d.ts +1 -0
  265. package/src/_types/request.d.ts.map +1 -0
  266. package/src/_types/services/api.d.ts +88 -0
  267. package/src/_types/services/api.d.ts.map +1 -0
  268. package/src/_types/services/balance.d.ts +30 -0
  269. package/src/_types/services/balance.d.ts.map +1 -0
  270. package/{dist/cjs → src/_types}/typeguards.d.ts +3 -2
  271. package/src/_types/typeguards.d.ts.map +1 -0
  272. package/src/_types/types/index.d.ts +2 -0
  273. package/src/_types/types/index.d.ts.map +1 -0
  274. package/src/_types/types/internal.d.ts +56 -0
  275. package/src/_types/types/internal.d.ts.map +1 -0
  276. package/{dist → src/_types}/utils/errors.d.ts +1 -0
  277. package/src/_types/utils/errors.d.ts.map +1 -0
  278. package/src/_types/utils/getTransactionMessage.d.ts +4 -0
  279. package/src/_types/utils/getTransactionMessage.d.ts.map +1 -0
  280. package/src/_types/utils/index.d.ts +6 -0
  281. package/src/_types/utils/index.d.ts.map +1 -0
  282. package/{dist/cjs → src/_types}/utils/median.d.ts +1 -0
  283. package/src/_types/utils/median.d.ts.map +1 -0
  284. package/src/_types/utils/parseBackendError.d.ts +3 -0
  285. package/src/_types/utils/parseBackendError.d.ts.map +1 -0
  286. package/{dist → src/_types}/utils/parseError.d.ts +4 -6
  287. package/src/_types/utils/parseError.d.ts.map +1 -0
  288. package/{dist → src/_types}/utils/utils.d.ts +1 -0
  289. package/src/_types/utils/utils.d.ts.map +1 -0
  290. package/src/_types/version.d.ts +3 -0
  291. package/src/_types/version.d.ts.map +1 -0
  292. package/src/config.ts +47 -0
  293. package/src/constants.ts +4 -0
  294. package/src/core/BaseStepExecutor.ts +40 -0
  295. package/src/core/EVM/EVM.ts +50 -0
  296. package/src/core/EVM/EVMStepExecutor.ts +472 -0
  297. package/src/core/EVM/abi.ts +47 -0
  298. package/src/core/EVM/checkAllowance.ts +152 -0
  299. package/src/core/EVM/getAllowance.ts +144 -0
  300. package/src/core/EVM/getEVMBalance.ts +118 -0
  301. package/src/core/EVM/multisig.ts +53 -0
  302. package/src/core/EVM/publicClient.ts +46 -0
  303. package/src/core/EVM/setAllowance.ts +144 -0
  304. package/src/core/EVM/switchChain.ts +76 -0
  305. package/src/core/EVM/types.ts +75 -0
  306. package/src/core/EVM/utils.ts +47 -0
  307. package/src/core/Solana/Solana.ts +46 -0
  308. package/src/core/Solana/SolanaStepExecutor.ts +253 -0
  309. package/src/core/Solana/connection.ts +19 -0
  310. package/src/core/Solana/getSolanaBalance.ts +72 -0
  311. package/src/core/Solana/types.ts +18 -0
  312. package/src/core/StatusManager.ts +243 -0
  313. package/src/core/checkBalance.ts +48 -0
  314. package/src/core/execution.ts +218 -0
  315. package/src/core/executionState.ts +39 -0
  316. package/src/core/index.ts +3 -0
  317. package/src/core/prepareRestart.ts +82 -0
  318. package/src/core/provider.ts +12 -0
  319. package/src/core/stepComparison.ts +51 -0
  320. package/src/core/types.ts +117 -0
  321. package/src/core/utils.ts +122 -0
  322. package/src/core/waitForReceivingTransaction.ts +73 -0
  323. package/src/createConfig.ts +56 -0
  324. package/src/helpers.ts +83 -0
  325. package/src/index.ts +11 -0
  326. package/src/request.ts +79 -0
  327. package/src/services/api.ts +507 -0
  328. package/src/services/balance.ts +93 -0
  329. package/src/typeguards.ts +89 -0
  330. package/src/types/index.ts +1 -0
  331. package/src/types/internal.ts +58 -0
  332. package/src/utils/errors.ts +231 -0
  333. package/src/utils/getTransactionMessage.ts +46 -0
  334. package/src/utils/index.ts +5 -0
  335. package/src/utils/median.ts +11 -0
  336. package/src/utils/parseBackendError.ts +50 -0
  337. package/src/utils/parseError.ts +204 -0
  338. package/src/utils/utils.ts +48 -0
  339. package/src/version.ts +2 -0
  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.js +0 -54
  384. package/dist/cjs/execution/utils.d.ts +0 -12
  385. package/dist/cjs/execution/waitForReceivingTransaction.d.ts +0 -3
  386. package/dist/cjs/helpers.d.ts +0 -18
  387. package/dist/cjs/helpers.js +0 -84
  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/request.js +0 -60
  392. package/dist/cjs/services/ApiService.d.ts +0 -17
  393. package/dist/cjs/services/ApiService.js +0 -326
  394. package/dist/cjs/services/ChainsService.d.ts +0 -11
  395. package/dist/cjs/services/ChainsService.js +0 -39
  396. package/dist/cjs/services/ConfigService.d.ts +0 -23
  397. package/dist/cjs/services/ConfigService.js +0 -101
  398. package/dist/cjs/types/index.d.ts +0 -4
  399. package/dist/cjs/types/index.js +0 -22
  400. package/dist/cjs/types/internal.types.d.ts +0 -142
  401. package/dist/cjs/utils/errors.d.ts +0 -107
  402. package/dist/cjs/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  403. package/dist/cjs/utils/index.d.ts +0 -5
  404. package/dist/cjs/utils/index.js +0 -21
  405. package/dist/cjs/utils/parseError.d.ts +0 -37
  406. package/dist/cjs/utils/parseError.js +0 -157
  407. package/dist/cjs/utils/utils.d.ts +0 -10
  408. package/dist/cjs/version.d.ts +0 -2
  409. package/dist/connectors.d.ts +0 -8
  410. package/dist/connectors.js +0 -41
  411. package/dist/constants.d.ts +0 -6
  412. package/dist/execution/RouteExecutionManager.d.ts +0 -59
  413. package/dist/execution/RouteExecutionManager.js +0 -195
  414. package/dist/execution/StatusManager.d.ts +0 -67
  415. package/dist/execution/StatusManager.js +0 -167
  416. package/dist/execution/StepExecutionManager.d.ts +0 -7
  417. package/dist/execution/StepExecutionManager.js +0 -260
  418. package/dist/execution/StepExecutor.d.ts +0 -15
  419. package/dist/execution/StepExecutor.js +0 -58
  420. package/dist/execution/checkAllowance.d.ts +0 -4
  421. package/dist/execution/checkBalance.d.ts +0 -2
  422. package/dist/execution/index.d.ts +0 -1
  423. package/dist/execution/index.js +0 -1
  424. package/dist/execution/multisig.d.ts +0 -4
  425. package/dist/execution/prepareRestart.d.ts +0 -3
  426. package/dist/execution/prepareRestart.js +0 -61
  427. package/dist/execution/switchChain.d.ts +0 -21
  428. package/dist/execution/waitForReceivingTransaction.d.ts +0 -3
  429. package/dist/index.d.ts +0 -5
  430. package/dist/index.js +0 -6
  431. package/dist/services/ApiService.d.ts +0 -17
  432. package/dist/services/ApiService.js +0 -321
  433. package/dist/services/ChainsService.d.ts +0 -11
  434. package/dist/services/ChainsService.js +0 -33
  435. package/dist/services/ConfigService.d.ts +0 -23
  436. package/dist/services/ConfigService.js +0 -99
  437. package/dist/typeguards.d.ts +0 -4
  438. package/dist/types/abi.d.ts +0 -5
  439. package/dist/types/index.d.ts +0 -4
  440. package/dist/types/index.js +0 -4
  441. package/dist/types/internal.types.d.ts +0 -142
  442. package/dist/types/internal.types.js +0 -1
  443. package/dist/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  444. package/dist/utils/index.d.ts +0 -5
  445. package/dist/utils/index.js +0 -5
  446. package/dist/utils/median.d.ts +0 -1
  447. package/dist/version.d.ts +0 -2
  448. package/dist/version.js +0 -2
@@ -0,0 +1,218 @@
1
+ /* eslint-disable @typescript-eslint/no-empty-function */
2
+ import type { Route } from '@lifi/types'
3
+ import { config } from '../config.js'
4
+ import { executionState } from './executionState.js'
5
+ import { prepareRestart } from './prepareRestart.js'
6
+ import type { ExecutionOptions, RouteExtended } from './types.js'
7
+
8
+ /**
9
+ * Execute a route.
10
+ * @param route - The route that should be executed. Cannot be an active route.
11
+ * @param executionOptions - An object containing settings and callbacks.
12
+ * @returns The executed route.
13
+ * @throws {LiFiError} Throws a LiFiError if the execution fails.
14
+ */
15
+ export const executeRoute = async (
16
+ route: Route,
17
+ executionOptions?: ExecutionOptions
18
+ ): Promise<RouteExtended> => {
19
+ // Deep clone to prevent side effects
20
+ const clonedRoute = structuredClone<Route>(route)
21
+
22
+ let executionPromise = executionState.get(clonedRoute.id)?.promise
23
+ // Check if route is already running
24
+ if (executionPromise) {
25
+ return executionPromise
26
+ }
27
+
28
+ executionPromise = executeSteps(clonedRoute, executionOptions)
29
+
30
+ executionState.create(route, executionOptions, executionPromise)
31
+
32
+ return executionPromise
33
+ }
34
+
35
+ /**
36
+ * Resume the execution of a route that has been stopped or had an error while executing.
37
+ * @param route - The route that is to be executed. Cannot be an active route.
38
+ * @param executionOptions - An object containing settings and callbacks.
39
+ * @returns The executed route.
40
+ * @throws {LiFiError} Throws a LiFiError if the execution fails.
41
+ */
42
+ export const resumeRoute = async (
43
+ route: Route,
44
+ executionOptions?: ExecutionOptions
45
+ ): Promise<RouteExtended> => {
46
+ // Deep clone to prevent side effects
47
+ const clonedRoute = structuredClone<Route>(route)
48
+
49
+ const execution = executionState.get(clonedRoute.id)
50
+
51
+ if (execution) {
52
+ const executionHalted = execution.executors.some(
53
+ (executor) => !executor.allowExecution
54
+ )
55
+ if (!executionHalted) {
56
+ // Check if we want to resume route execution in the background
57
+ updateRouteExecution(route, {
58
+ executeInBackground: executionOptions?.executeInBackground,
59
+ })
60
+ if (!execution.promise) {
61
+ // We should never reach this point if we do clean-up properly
62
+ throw new Error('Route execution promise not found.')
63
+ }
64
+ return execution.promise
65
+ }
66
+ }
67
+
68
+ await prepareRestart(clonedRoute)
69
+
70
+ const executionPromise = executeSteps(clonedRoute, executionOptions)
71
+ executionState.create(route, executionOptions, executionPromise)
72
+
73
+ return executionPromise
74
+ }
75
+
76
+ const executeSteps = async (
77
+ route: RouteExtended,
78
+ executionOptions?: ExecutionOptions
79
+ ): Promise<RouteExtended> => {
80
+ executionState.create(route, executionOptions)
81
+
82
+ // Loop over steps and execute them
83
+ for (let index = 0; index < route.steps.length; index++) {
84
+ const execution = executionState.get(route.id)
85
+ // Check if execution has stopped in the meantime
86
+ if (!execution) {
87
+ break
88
+ }
89
+
90
+ const step = route.steps[index]
91
+ const previousStep = route.steps[index - 1]
92
+ // Check if the step is already done
93
+ //
94
+ if (step.execution?.status === 'DONE') {
95
+ continue
96
+ }
97
+
98
+ // Update amount using output of previous execution. In the future this should be handled by calling `updateRoute`
99
+ if (previousStep?.execution?.toAmount) {
100
+ step.action.fromAmount = previousStep.execution.toAmount
101
+ }
102
+
103
+ try {
104
+ const fromAddress = step.action.fromAddress
105
+ if (!fromAddress) {
106
+ throw new Error('Action fromAddress is not specified.')
107
+ }
108
+
109
+ const provider = config
110
+ .get()
111
+ .providers?.find((provider) => provider.isAddress(fromAddress))
112
+
113
+ if (!provider) {
114
+ throw new Error('SDK Execution Provider not found.')
115
+ }
116
+
117
+ const stepExecutor = await provider.getStepExecutor({
118
+ routeId: route.id,
119
+ executionOptions: execution.executionOptions,
120
+ })
121
+ execution.executors.push(stepExecutor)
122
+
123
+ // Check if we want to execute this step in the background
124
+ if (execution.executionOptions) {
125
+ updateRouteExecution(route, execution.executionOptions)
126
+ }
127
+
128
+ const executedStep = await stepExecutor.executeStep(step)
129
+
130
+ // We may reach this point if user interaction isn't allowed. We want to stop execution until we resume it
131
+ if (executedStep.execution?.status !== 'DONE') {
132
+ stopRouteExecution(route)
133
+ }
134
+
135
+ // Execution stopped during the current step, we don't want to continue to the next step so we return already
136
+ if (stepExecutor.allowExecution) {
137
+ return route
138
+ }
139
+ } catch (e) {
140
+ stopRouteExecution(route)
141
+ throw e
142
+ }
143
+ }
144
+
145
+ // Clean up after the execution
146
+ executionState.delete(route.id)
147
+ return route
148
+ }
149
+
150
+ /**
151
+ * Updates route execution to background or foreground state.
152
+ * @param route - A route that is currently in execution.
153
+ * @param options - An object with execution settings.
154
+ */
155
+ export const updateRouteExecution = (
156
+ route: Route,
157
+ options: ExecutionOptions
158
+ ): void => {
159
+ const execution = executionState.get(route.id)
160
+ if (!execution) {
161
+ return
162
+ }
163
+
164
+ if ('executeInBackground' in options) {
165
+ for (const executor of execution.executors) {
166
+ executor.setInteraction({
167
+ allowInteraction: !options?.executeInBackground,
168
+ allowUpdates: true,
169
+ })
170
+ }
171
+ }
172
+ // Update active route settings so we know what the current state of execution is
173
+ execution.executionOptions = {
174
+ ...execution.executionOptions,
175
+ ...options,
176
+ }
177
+ }
178
+
179
+ /**
180
+ * Stops the execution of an active route.
181
+ * @param route - A route that is currently in execution.
182
+ * @returns The stopped route.
183
+ */
184
+ export const stopRouteExecution = (route: Route): Route => {
185
+ const execution = executionState.get(route.id)
186
+ if (!execution) {
187
+ return route
188
+ }
189
+
190
+ for (const executor of execution.executors) {
191
+ executor.setInteraction({
192
+ allowInteraction: false,
193
+ allowUpdates: false,
194
+ allowExecution: false,
195
+ })
196
+ }
197
+ executionState.delete(route.id)
198
+ return execution.route
199
+ }
200
+
201
+ /**
202
+ * Get the list of active routes.
203
+ * @returns A list of routes.
204
+ */
205
+ export const getActiveRoutes = (): RouteExtended[] => {
206
+ return Object.values(executionState.state)
207
+ .map((dict) => dict?.route)
208
+ .filter(Boolean) as RouteExtended[]
209
+ }
210
+
211
+ /**
212
+ * Return the current route information for given route. The route has to be active.
213
+ * @param routeId - A route id.
214
+ * @returns The updated route.
215
+ */
216
+ export const getActiveRoute = (routeId: string): RouteExtended | undefined => {
217
+ return executionState.get(routeId)?.route
218
+ }
@@ -0,0 +1,39 @@
1
+ import type { ExecutionOptions, RouteExtended, StepExecutor } from './types.js'
2
+
3
+ export interface ExecutionData {
4
+ route: RouteExtended
5
+ executors: StepExecutor[]
6
+ executionOptions?: ExecutionOptions
7
+ promise?: Promise<RouteExtended>
8
+ }
9
+
10
+ export interface ExecutionState {
11
+ state: Partial<Record<string, ExecutionData>>
12
+ get(routeId: string): ExecutionData | undefined
13
+ create(
14
+ route: RouteExtended,
15
+ executionOptions?: ExecutionOptions,
16
+ promise?: Promise<RouteExtended>
17
+ ): ExecutionData
18
+ delete(routeId: string): void
19
+ }
20
+
21
+ export const executionState: ExecutionState = {
22
+ state: {},
23
+ get(routeId: string) {
24
+ return this.state[routeId]
25
+ },
26
+ create(route, executionOptions, promise) {
27
+ this.state[route.id] = {
28
+ ...this.state[route.id],
29
+ route,
30
+ executionOptions,
31
+ promise,
32
+ executors: [],
33
+ }
34
+ return this.state[route.id]!
35
+ },
36
+ delete(routeId) {
37
+ delete this.state[routeId]
38
+ },
39
+ }
@@ -0,0 +1,3 @@
1
+ export * from './StatusManager.js'
2
+ export * from './execution.js'
3
+ export * from './types.js'
@@ -0,0 +1,82 @@
1
+ import type { LiFiStep } from '@lifi/types'
2
+ import type { LiFiStepExtended, RouteExtended } from './types.js'
3
+
4
+ export const prepareRestart = async (route: RouteExtended) => {
5
+ for (let index = 0; index < route.steps.length; index++) {
6
+ const step = route.steps[index]
7
+ const stepHasFailed = step.execution?.status === 'FAILED'
8
+
9
+ if (stepHasFailed) {
10
+ // await handleErrorType(walletClient, step)
11
+ deleteFailedProcesses(step)
12
+ deleteTransactionData(step)
13
+ }
14
+ }
15
+ }
16
+
17
+ // const handleErrorType = async (walletClient: WalletClient, step: LiFiStep) => {
18
+ // const client = walletClient.extend(publicActions)
19
+
20
+ // const isGasLimitError = step.execution?.process.some(
21
+ // (p) => p.error?.code === LiFiErrorCode.GasLimitError
22
+ // )
23
+ // const isGasPriceError = step.execution?.process.some(
24
+ // (p) => p.error?.code === LiFiErrorCode.TransactionUnderpriced
25
+ // )
26
+
27
+ // const { transactionRequest } = step
28
+
29
+ // if (isGasLimitError) {
30
+ // if (transactionRequest) {
31
+ // let gasLimit = transactionRequest.gasLimit
32
+
33
+ // try {
34
+ // gasLimit = await client.estimateGas(transactionRequest)
35
+ // } catch (error) {}
36
+
37
+ // if (gasLimit) {
38
+ // transactionRequest.gasLimit = BigNumber.from(
39
+ // `${(BigInt(gasLimit.toString()) * 125n) / 100n}`
40
+ // )
41
+ // }
42
+ // }
43
+
44
+ // step.estimate.gasCosts?.forEach(
45
+ // (gasCost) =>
46
+ // (gasCost.limit = `${Math.round(Number(gasCost.limit) * 1.25)}`)
47
+ // )
48
+ // }
49
+
50
+ // if (isGasPriceError) {
51
+ // if (transactionRequest) {
52
+ // let gasPrice = transactionRequest.gasPrice
53
+
54
+ // try {
55
+ // gasPrice = await client.getGasPrice()
56
+ // } catch (error) {}
57
+
58
+ // if (gasPrice) {
59
+ // transactionRequest.gasPrice = BigNumber.from(
60
+ // `${(BigInt(gasPrice.toString()) * 125n) / 100n}`
61
+ // )
62
+ // }
63
+ // }
64
+
65
+ // step.estimate.gasCosts?.forEach(
66
+ // (gasCost) =>
67
+ // (gasCost.price = `${Math.round(Number(gasCost.price) * 1.25)}`)
68
+ // )
69
+ // }
70
+ // }
71
+
72
+ const deleteFailedProcesses = (step: LiFiStepExtended) => {
73
+ if (step.execution) {
74
+ step.execution.process = step.execution.process.filter(
75
+ (process) => process.status === 'DONE'
76
+ )
77
+ }
78
+ }
79
+
80
+ const deleteTransactionData = (step: LiFiStep) => {
81
+ step.transactionRequest = undefined
82
+ }
@@ -0,0 +1,12 @@
1
+ import type { ChainType } from '@lifi/types'
2
+ import { config } from '../config.js'
3
+
4
+ export const getProvider = <T>(type: ChainType): T => {
5
+ const provider = config
6
+ .get()
7
+ .providers?.find((provider) => provider.type === type) as T
8
+ if (!provider) {
9
+ throw new Error(`${type} provider not found.`)
10
+ }
11
+ return provider
12
+ }
@@ -0,0 +1,51 @@
1
+ import type { LiFiStep } from '@lifi/types'
2
+ import { LiFiErrorCode, TransactionError } from '../utils/errors.js'
3
+ import type { StatusManager } from './StatusManager.js'
4
+ import type { ExecutionOptions } from './types.js'
5
+ import { checkStepSlippageThreshold } from './utils.js'
6
+
7
+ /**
8
+ * This method checks whether the new and updated Step meets the required exchange rate conditions.
9
+ * If yes it returns the updated Step.
10
+ * If no and if user interaction is allowed it triggers the acceptExchangeRateUpdateHook. If no user interaction is allowed it aborts.
11
+ * @param statusManager
12
+ * @param oldStep
13
+ * @param newStep
14
+ * @param settings
15
+ * @param allowUserInteraction
16
+ * @param executionOptions
17
+ * @returns Return LiFiStep
18
+ */
19
+ export const stepComparison = async (
20
+ statusManager: StatusManager,
21
+ oldStep: LiFiStep,
22
+ newStep: LiFiStep,
23
+ allowUserInteraction: boolean,
24
+ executionOptions?: ExecutionOptions
25
+ ): Promise<LiFiStep> => {
26
+ // Check if changed exchange rate is in the range of slippage threshold
27
+ if (checkStepSlippageThreshold(oldStep, newStep)) {
28
+ return statusManager.updateStepInRoute(newStep)
29
+ }
30
+
31
+ let allowStepUpdate: boolean | undefined
32
+ if (allowUserInteraction) {
33
+ allowStepUpdate = await executionOptions?.acceptExchangeRateUpdateHook?.({
34
+ oldToAmount: oldStep.estimate.toAmount,
35
+ newToAmount: newStep.estimate.toAmount,
36
+ toToken: newStep.action.toToken,
37
+ })
38
+ }
39
+
40
+ if (!allowStepUpdate) {
41
+ // The user declined the new exchange rate, so we are not going to proceed
42
+ throw new TransactionError(
43
+ LiFiErrorCode.ExchangeRateUpdateCanceled,
44
+ 'Exchange rate has changed!',
45
+ `Transaction was not sent, your funds are still in your wallet.
46
+ The exchange rate has changed and the previous estimation can not be fulfilled due to value loss.`
47
+ )
48
+ }
49
+
50
+ return statusManager.updateStepInRoute(newStep)
51
+ }
@@ -0,0 +1,117 @@
1
+ import type {
2
+ ChainType,
3
+ Execution,
4
+ LiFiStep,
5
+ Route,
6
+ Step,
7
+ Token,
8
+ TokenAmount,
9
+ } from '@lifi/types'
10
+ import type { WalletClient } from 'viem'
11
+
12
+ export interface SDKProvider {
13
+ readonly type: ChainType
14
+ isAddress(address: string): boolean
15
+ getStepExecutor(options: StepExecutorOptions): Promise<StepExecutor>
16
+ getBalance(walletAddress: string, tokens: Token[]): Promise<TokenAmount[]>
17
+ }
18
+
19
+ export interface StepExecutorOptions {
20
+ routeId: string
21
+ executionOptions?: ExecutionOptions
22
+ }
23
+
24
+ export interface InteractionSettings {
25
+ allowInteraction?: boolean
26
+ allowUpdates?: boolean
27
+ allowExecution?: boolean
28
+ }
29
+
30
+ export interface StepExecutor {
31
+ allowUserInteraction: boolean
32
+ allowExecution: boolean
33
+ setInteraction(settings?: InteractionSettings): void
34
+ executeStep(step: LiFiStepExtended): Promise<LiFiStepExtended>
35
+ }
36
+
37
+ export interface RouteExtended extends Omit<Route, 'steps'> {
38
+ steps: LiFiStepExtended[]
39
+ }
40
+
41
+ export interface LiFiStepExtended extends LiFiStep {
42
+ execution?: Execution
43
+ }
44
+
45
+ export type StepExtended = Step & {
46
+ execution?: Execution
47
+ }
48
+
49
+ export type TransactionParameters = {
50
+ chainId?: number
51
+ to?: string
52
+ from?: string
53
+ nonce?: number
54
+ data?: string
55
+ value?: bigint
56
+ gas?: bigint
57
+ gasPrice?: bigint
58
+ maxFeePerGas?: bigint
59
+ maxPriorityFeePerGas?: bigint
60
+ }
61
+
62
+ export interface RouteExecutionData {
63
+ route: Route
64
+ executors: StepExecutor[]
65
+ executionOptions?: ExecutionOptions
66
+ }
67
+
68
+ export type RouteExecutionDataDictionary = Partial<
69
+ Record<string, RouteExecutionData>
70
+ >
71
+
72
+ export type RouteExecutionDictionary = Partial<Record<string, Promise<Route>>>
73
+
74
+ export type UpdateRouteHook = (updatedRoute: Route) => void
75
+
76
+ export interface TransactionRequestParameters extends TransactionParameters {
77
+ requestType: 'approve' | 'transaction'
78
+ }
79
+
80
+ export type TransactionRequestUpdateHook = (
81
+ updatedTxRequest: TransactionRequestParameters
82
+ ) => Promise<TransactionParameters>
83
+
84
+ export type SwitchChainHook = (
85
+ chainId: number
86
+ ) => Promise<WalletClient | undefined>
87
+
88
+ export interface AcceptSlippageUpdateHookParams {
89
+ toToken: Token
90
+ oldToAmount: string
91
+ newToAmount: string
92
+ oldSlippage: number
93
+ newSlippage: number
94
+ }
95
+
96
+ export type AcceptSlippageUpdateHook = (
97
+ params: AcceptSlippageUpdateHookParams
98
+ ) => Promise<boolean | undefined>
99
+
100
+ export interface ExchangeRateUpdateParams {
101
+ toToken: Token
102
+ oldToAmount: string
103
+ newToAmount: string
104
+ }
105
+
106
+ export type AcceptExchangeRateUpdateHook = (
107
+ params: ExchangeRateUpdateParams
108
+ ) => Promise<boolean | undefined>
109
+
110
+ export interface ExecutionOptions {
111
+ acceptExchangeRateUpdateHook?: AcceptExchangeRateUpdateHook
112
+ switchChainHook?: SwitchChainHook
113
+ updateRouteHook?: UpdateRouteHook
114
+ updateTransactionRequestHook?: TransactionRequestUpdateHook
115
+ executeInBackground?: boolean
116
+ infiniteApproval?: boolean
117
+ }
@@ -0,0 +1,122 @@
1
+ import {
2
+ type ChainId,
3
+ type LiFiStep,
4
+ type ProcessType,
5
+ type Status,
6
+ type StatusMessage,
7
+ type Substatus,
8
+ } from '@lifi/types'
9
+ import { config } from '../config.js'
10
+
11
+ export const getRpcUrl = async (chainId: ChainId): Promise<string> => {
12
+ const rpcUrls = await getRpcUrls(chainId)
13
+ return rpcUrls[0]
14
+ }
15
+
16
+ export const getRpcUrls = async (chainId: ChainId): Promise<string[]> => {
17
+ const rpcUrls = (await config.getRPCUrls())[chainId]
18
+ if (!rpcUrls?.length) {
19
+ throw new Error('RPC URL not found')
20
+ }
21
+ return rpcUrls
22
+ }
23
+
24
+ const processMessages: Record<ProcessType, Partial<Record<Status, string>>> = {
25
+ TOKEN_ALLOWANCE: {
26
+ STARTED: 'Setting token allowance.',
27
+ PENDING: 'Waiting for token allowance.',
28
+ DONE: 'Token allowance set.',
29
+ },
30
+ SWITCH_CHAIN: {
31
+ PENDING: 'Chain switch required.',
32
+ DONE: 'Chain switched successfully.',
33
+ },
34
+ SWAP: {
35
+ STARTED: 'Preparing swap transaction.',
36
+ ACTION_REQUIRED: 'Please sign the transaction.',
37
+ PENDING: 'Waiting for swap transaction.',
38
+ DONE: 'Swap completed.',
39
+ },
40
+ CROSS_CHAIN: {
41
+ STARTED: 'Preparing bridge transaction.',
42
+ ACTION_REQUIRED: 'Please sign the transaction.',
43
+ PENDING: 'Waiting for bridge transaction.',
44
+ DONE: 'Bridge transaction confirmed.',
45
+ },
46
+ RECEIVING_CHAIN: {
47
+ PENDING: 'Waiting for destination chain.',
48
+ DONE: 'Bridge completed.',
49
+ },
50
+ TRANSACTION: {},
51
+ }
52
+ const substatusMessages: Record<
53
+ StatusMessage,
54
+ Partial<Record<Substatus, string>>
55
+ > = {
56
+ PENDING: {
57
+ BRIDGE_NOT_AVAILABLE: 'Bridge communication is temporarily unavailable.',
58
+ CHAIN_NOT_AVAILABLE: 'RPC communication is temporarily unavailable.',
59
+ NOT_PROCESSABLE_REFUND_NEEDED:
60
+ 'The transfer cannot be completed successfully. A refund operation is required.',
61
+ UNKNOWN_ERROR:
62
+ 'An unexpected error occurred. Please seek assistance in the LI.FI discord server.',
63
+ WAIT_SOURCE_CONFIRMATIONS:
64
+ 'The bridge deposit has been received. The bridge is waiting for more confirmations to start the off-chain logic.',
65
+ WAIT_DESTINATION_TRANSACTION:
66
+ 'The bridge off-chain logic is being executed. Wait for the transaction to appear on the destination chain.',
67
+ },
68
+ DONE: {
69
+ PARTIAL:
70
+ 'Some of the received tokens are not the requested destination tokens.',
71
+ REFUNDED: 'The tokens were refunded to the sender address.',
72
+ COMPLETED: 'The transfer is complete.',
73
+ },
74
+ FAILED: {},
75
+ INVALID: {},
76
+ NOT_FOUND: {},
77
+ }
78
+
79
+ export function getProcessMessage(
80
+ type: ProcessType,
81
+ status: Status
82
+ ): string | undefined {
83
+ const processMessage = processMessages[type][status]
84
+ return processMessage
85
+ }
86
+
87
+ export function getSubstatusMessage(
88
+ status: StatusMessage,
89
+ substatus?: Substatus
90
+ ): string | undefined {
91
+ if (!substatus) {
92
+ return
93
+ }
94
+ const message = substatusMessages[status][substatus]
95
+ return message
96
+ }
97
+
98
+ /**
99
+ * Used to check if changed exchange rate is in the range of slippage threshold.
100
+ * We use a slippage value as a threshold to trigger the rate change hook.
101
+ * This can result in almost doubled slippage for the user and need to be revisited.
102
+ * @param oldStep
103
+ * @param newStep
104
+ * @returns Boolean
105
+ */
106
+ export function checkStepSlippageThreshold(
107
+ oldStep: LiFiStep,
108
+ newStep: LiFiStep
109
+ ): boolean {
110
+ const setSlippage = oldStep.action.slippage
111
+ const oldEstimatedToAmount = BigInt(oldStep.estimate.toAmountMin)
112
+ const newEstimatedToAmount = BigInt(newStep.estimate.toAmountMin)
113
+ const amountDifference = oldEstimatedToAmount - newEstimatedToAmount
114
+ // oldEstimatedToAmount can be 0 when we use conract calls
115
+ let actualSlippage = 0
116
+ if (oldEstimatedToAmount > 0) {
117
+ actualSlippage =
118
+ Number((amountDifference * 1_000_000_000n) / oldEstimatedToAmount) /
119
+ 1_000_000_000
120
+ }
121
+ return actualSlippage <= setSlippage
122
+ }