@lifi/sdk 3.0.0-alpha.6 → 3.0.0-alpha.61

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 (482) hide show
  1. package/package.json +40 -88
  2. package/src/_cjs/config.js +90 -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 +43 -0
  9. package/src/_cjs/core/EVM/EVM.js.map +1 -0
  10. package/src/_cjs/core/EVM/EVMStepExecutor.js +304 -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 +19 -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/src/_cjs/core/EVM/getENSAddress.js +20 -0
  19. package/src/_cjs/core/EVM/getENSAddress.js.map +1 -0
  20. package/{dist/cjs/balance/getBalance.js → src/_cjs/core/EVM/getEVMBalance.js} +20 -22
  21. package/src/_cjs/core/EVM/getEVMBalance.js.map +1 -0
  22. package/{dist/cjs/execution → src/_cjs/core/EVM}/multisig.js +7 -11
  23. package/src/_cjs/core/EVM/multisig.js.map +1 -0
  24. package/src/_cjs/core/EVM/publicClient.js +43 -0
  25. package/src/_cjs/core/EVM/publicClient.js.map +1 -0
  26. package/{dist/cjs/allowance → src/_cjs/core/EVM}/setAllowance.js +11 -12
  27. package/src/_cjs/core/EVM/setAllowance.js.map +1 -0
  28. package/src/_cjs/core/EVM/switchChain.js +38 -0
  29. package/src/_cjs/core/EVM/switchChain.js.map +1 -0
  30. package/src/_cjs/core/EVM/types.js +9 -0
  31. package/src/_cjs/core/EVM/types.js.map +1 -0
  32. package/{dist/cjs/utils/getMaxPriorityFeePerGas.js → src/_cjs/core/EVM/utils.js} +13 -3
  33. package/src/_cjs/core/EVM/utils.js.map +1 -0
  34. package/src/_cjs/core/Solana/Solana.js +38 -0
  35. package/src/_cjs/core/Solana/Solana.js.map +1 -0
  36. package/src/_cjs/core/Solana/SolanaStepExecutor.js +174 -0
  37. package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -0
  38. package/src/_cjs/core/Solana/connection.js +19 -0
  39. package/src/_cjs/core/Solana/connection.js.map +1 -0
  40. package/src/_cjs/core/Solana/getSNSAddress.js +26 -0
  41. package/src/_cjs/core/Solana/getSNSAddress.js.map +1 -0
  42. package/src/_cjs/core/Solana/getSolanaBalance.js +60 -0
  43. package/src/_cjs/core/Solana/getSolanaBalance.js.map +1 -0
  44. package/src/_cjs/core/Solana/isAddress.js +15 -0
  45. package/src/_cjs/core/Solana/isAddress.js.map +1 -0
  46. package/src/_cjs/core/Solana/types.js +10 -0
  47. package/src/_cjs/core/Solana/types.js.map +1 -0
  48. package/src/_cjs/core/StatusManager.js +167 -0
  49. package/src/_cjs/core/StatusManager.js.map +1 -0
  50. package/{dist/cjs/execution → src/_cjs/core}/checkBalance.js +6 -6
  51. package/src/_cjs/core/checkBalance.js.map +1 -0
  52. package/src/_cjs/core/execution.js +138 -0
  53. package/src/_cjs/core/execution.js.map +1 -0
  54. package/src/_cjs/core/executionState.js +29 -0
  55. package/src/_cjs/core/executionState.js.map +1 -0
  56. package/src/_cjs/core/index.js +7 -0
  57. package/src/_cjs/core/index.js.map +1 -0
  58. package/src/_cjs/core/prepareRestart.js +23 -0
  59. package/src/_cjs/core/prepareRestart.js.map +1 -0
  60. package/src/_cjs/core/provider.js +15 -0
  61. package/src/_cjs/core/provider.js.map +1 -0
  62. package/src/_cjs/core/rpc.js +18 -0
  63. package/src/_cjs/core/rpc.js.map +1 -0
  64. package/src/_cjs/core/stepComparison.js +25 -0
  65. package/src/_cjs/core/stepComparison.js.map +1 -0
  66. package/{dist/cjs/allowance → src/_cjs/core}/types.js +1 -0
  67. package/src/_cjs/core/types.js.map +1 -0
  68. package/{dist/cjs/execution → src/_cjs/core}/utils.js +2 -11
  69. package/src/_cjs/core/utils.js.map +1 -0
  70. package/{dist/cjs/execution → src/_cjs/core}/waitForReceivingTransaction.js +13 -14
  71. package/src/_cjs/core/waitForReceivingTransaction.js.map +1 -0
  72. package/src/_cjs/createConfig.js +32 -0
  73. package/src/_cjs/createConfig.js.map +1 -0
  74. package/src/_cjs/helpers.js +57 -0
  75. package/src/_cjs/helpers.js.map +1 -0
  76. package/src/_cjs/index.js +23 -0
  77. package/src/_cjs/index.js.map +1 -0
  78. package/src/_cjs/package.json +1 -0
  79. package/src/_cjs/request.js +66 -0
  80. package/src/_cjs/request.js.map +1 -0
  81. package/src/_cjs/services/api.js +309 -0
  82. package/src/_cjs/services/api.js.map +1 -0
  83. package/src/_cjs/services/balance.js +49 -0
  84. package/src/_cjs/services/balance.js.map +1 -0
  85. package/src/_cjs/services/getNameServiceAddress.js +29 -0
  86. package/src/_cjs/services/getNameServiceAddress.js.map +1 -0
  87. package/{dist/cjs → src/_cjs}/typeguards.js +1 -0
  88. package/src/_cjs/typeguards.js.map +1 -0
  89. package/src/_cjs/types/index.js +5 -0
  90. package/src/_cjs/types/index.js.map +1 -0
  91. package/{dist/cjs/types/internal.types.js → src/_cjs/types/internal.js} +1 -0
  92. package/src/_cjs/types/internal.js.map +1 -0
  93. package/{dist/cjs → src/_cjs}/utils/errors.js +26 -3
  94. package/src/_cjs/utils/errors.js.map +1 -0
  95. package/src/_cjs/utils/getTransactionMessage.js +31 -0
  96. package/src/_cjs/utils/getTransactionMessage.js.map +1 -0
  97. package/src/_cjs/utils/index.js +9 -0
  98. package/src/_cjs/utils/index.js.map +1 -0
  99. package/{dist/cjs → src/_cjs}/utils/median.js +1 -0
  100. package/src/_cjs/utils/median.js.map +1 -0
  101. package/src/_cjs/utils/parseBackendError.js +27 -0
  102. package/src/_cjs/utils/parseBackendError.js.map +1 -0
  103. package/src/_cjs/utils/parseError.js +69 -0
  104. package/src/_cjs/utils/parseError.js.map +1 -0
  105. package/{dist/cjs → src/_cjs}/utils/utils.js +5 -11
  106. package/src/_cjs/utils/utils.js.map +1 -0
  107. package/{dist/cjs → src/_cjs}/version.js +2 -1
  108. package/src/_cjs/version.js.map +1 -0
  109. package/src/_esm/config.js +87 -0
  110. package/src/_esm/config.js.map +1 -0
  111. package/{dist → src/_esm}/constants.js +2 -4
  112. package/src/_esm/constants.js.map +1 -0
  113. package/src/_esm/core/BaseStepExecutor.js +52 -0
  114. package/src/_esm/core/BaseStepExecutor.js.map +1 -0
  115. package/src/_esm/core/EVM/EVM.js +39 -0
  116. package/src/_esm/core/EVM/EVM.js.map +1 -0
  117. package/src/_esm/core/EVM/EVMStepExecutor.js +329 -0
  118. package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -0
  119. package/{dist/types → src/_esm/core/EVM}/abi.js +1 -0
  120. package/src/_esm/core/EVM/abi.js.map +1 -0
  121. package/{dist/execution → src/_esm/core/EVM}/checkAllowance.js +14 -5
  122. package/src/_esm/core/EVM/checkAllowance.js.map +1 -0
  123. package/{dist/allowance → src/_esm/core/EVM}/getAllowance.js +19 -6
  124. package/src/_esm/core/EVM/getAllowance.js.map +1 -0
  125. package/src/_esm/core/EVM/getENSAddress.js +17 -0
  126. package/src/_esm/core/EVM/getENSAddress.js.map +1 -0
  127. package/{dist/balance/getBalance.js → src/_esm/core/EVM/getEVMBalance.js} +10 -12
  128. package/src/_esm/core/EVM/getEVMBalance.js.map +1 -0
  129. package/{dist/execution → src/_esm/core/EVM}/multisig.js +5 -6
  130. package/src/_esm/core/EVM/multisig.js.map +1 -0
  131. package/src/_esm/core/EVM/publicClient.js +46 -0
  132. package/src/_esm/core/EVM/publicClient.js.map +1 -0
  133. package/{dist/allowance → src/_esm/core/EVM}/setAllowance.js +23 -4
  134. package/src/_esm/core/EVM/setAllowance.js.map +1 -0
  135. package/{dist/execution → src/_esm/core/EVM}/switchChain.js +7 -4
  136. package/src/_esm/core/EVM/switchChain.js.map +1 -0
  137. package/src/_esm/core/EVM/types.js +6 -0
  138. package/src/_esm/core/EVM/types.js.map +1 -0
  139. package/{dist/utils/getMaxPriorityFeePerGas.js → src/_esm/core/EVM/utils.js} +12 -1
  140. package/src/_esm/core/EVM/utils.js.map +1 -0
  141. package/src/_esm/core/Solana/Solana.js +34 -0
  142. package/src/_esm/core/Solana/Solana.js.map +1 -0
  143. package/src/_esm/core/Solana/SolanaStepExecutor.js +176 -0
  144. package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -0
  145. package/src/_esm/core/Solana/connection.js +20 -0
  146. package/src/_esm/core/Solana/connection.js.map +1 -0
  147. package/src/_esm/core/Solana/getSNSAddress.js +26 -0
  148. package/src/_esm/core/Solana/getSNSAddress.js.map +1 -0
  149. package/src/_esm/core/Solana/getSolanaBalance.js +56 -0
  150. package/src/_esm/core/Solana/getSolanaBalance.js.map +1 -0
  151. package/src/_esm/core/Solana/isAddress.js +11 -0
  152. package/src/_esm/core/Solana/isAddress.js.map +1 -0
  153. package/src/_esm/core/Solana/types.js +7 -0
  154. package/src/_esm/core/Solana/types.js.map +1 -0
  155. package/src/_esm/core/StatusManager.js +203 -0
  156. package/src/_esm/core/StatusManager.js.map +1 -0
  157. package/{dist/execution → src/_esm/core}/checkBalance.js +4 -3
  158. package/src/_esm/core/checkBalance.js.map +1 -0
  159. package/src/_esm/core/execution.js +176 -0
  160. package/src/_esm/core/execution.js.map +1 -0
  161. package/src/_esm/core/executionState.js +26 -0
  162. package/src/_esm/core/executionState.js.map +1 -0
  163. package/src/_esm/core/index.js +4 -0
  164. package/src/_esm/core/index.js.map +1 -0
  165. package/src/_esm/core/prepareRestart.js +64 -0
  166. package/src/_esm/core/prepareRestart.js.map +1 -0
  167. package/src/_esm/core/provider.js +11 -0
  168. package/src/_esm/core/provider.js.map +1 -0
  169. package/src/_esm/core/rpc.js +14 -0
  170. package/src/_esm/core/rpc.js.map +1 -0
  171. package/{dist/execution → src/_esm/core}/stepComparison.js +7 -5
  172. package/src/_esm/core/stepComparison.js.map +1 -0
  173. package/src/_esm/core/types.js +2 -0
  174. package/src/_esm/core/types.js.map +1 -0
  175. package/{dist/execution → src/_esm/core}/utils.js +4 -3
  176. package/src/_esm/core/utils.js.map +1 -0
  177. package/{dist/execution → src/_esm/core}/waitForReceivingTransaction.js +11 -9
  178. package/src/_esm/core/waitForReceivingTransaction.js.map +1 -0
  179. package/src/_esm/createConfig.js +28 -0
  180. package/src/_esm/createConfig.js.map +1 -0
  181. package/{dist → src/_esm}/helpers.js +5 -17
  182. package/src/_esm/helpers.js.map +1 -0
  183. package/src/_esm/index.js +14 -0
  184. package/src/_esm/index.js.map +1 -0
  185. package/src/_esm/package.json +1 -0
  186. package/{dist → src/_esm}/request.js +23 -13
  187. package/src/_esm/request.js.map +1 -0
  188. package/src/_esm/services/api.js +378 -0
  189. package/src/_esm/services/api.js.map +1 -0
  190. package/src/_esm/services/balance.js +65 -0
  191. package/src/_esm/services/balance.js.map +1 -0
  192. package/src/_esm/services/getNameServiceAddress.js +25 -0
  193. package/src/_esm/services/getNameServiceAddress.js.map +1 -0
  194. package/{dist → src/_esm}/typeguards.js +1 -0
  195. package/src/_esm/typeguards.js.map +1 -0
  196. package/src/_esm/types/index.js +2 -0
  197. package/src/_esm/types/index.js.map +1 -0
  198. package/src/_esm/types/internal.js +2 -0
  199. package/src/_esm/types/internal.js.map +1 -0
  200. package/{dist → src/_esm}/utils/errors.js +26 -0
  201. package/src/_esm/utils/errors.js.map +1 -0
  202. package/src/_esm/utils/getTransactionMessage.js +28 -0
  203. package/src/_esm/utils/getTransactionMessage.js.map +1 -0
  204. package/src/_esm/utils/index.js +6 -0
  205. package/src/_esm/utils/index.js.map +1 -0
  206. package/{dist → src/_esm}/utils/median.js +1 -0
  207. package/src/_esm/utils/median.js.map +1 -0
  208. package/src/_esm/utils/parseBackendError.js +24 -0
  209. package/src/_esm/utils/parseBackendError.js.map +1 -0
  210. package/{dist → src/_esm}/utils/parseError.js +6 -53
  211. package/src/_esm/utils/parseError.js.map +1 -0
  212. package/{dist → src/_esm}/utils/utils.js +2 -1
  213. package/src/_esm/utils/utils.js.map +1 -0
  214. package/src/_esm/version.js +3 -0
  215. package/src/_esm/version.js.map +1 -0
  216. package/src/_types/config.d.ts +15 -0
  217. package/src/_types/config.d.ts.map +1 -0
  218. package/{dist/cjs → src/_types}/constants.d.ts +2 -4
  219. package/src/_types/constants.d.ts.map +1 -0
  220. package/src/_types/core/BaseStepExecutor.d.ts +13 -0
  221. package/src/_types/core/BaseStepExecutor.d.ts.map +1 -0
  222. package/src/_types/core/EVM/EVM.d.ts +3 -0
  223. package/src/_types/core/EVM/EVM.d.ts.map +1 -0
  224. package/src/_types/core/EVM/EVMStepExecutor.d.ts +17 -0
  225. package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -0
  226. package/{dist/cjs/types → src/_types/core/EVM}/abi.d.ts +1 -0
  227. package/src/_types/core/EVM/abi.d.ts.map +1 -0
  228. package/src/_types/core/EVM/checkAllowance.d.ts +6 -0
  229. package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -0
  230. package/{dist/cjs/allowance → src/_types/core/EVM}/getAllowance.d.ts +15 -1
  231. package/src/_types/core/EVM/getAllowance.d.ts.map +1 -0
  232. package/src/_types/core/EVM/getENSAddress.d.ts +2 -0
  233. package/src/_types/core/EVM/getENSAddress.d.ts.map +1 -0
  234. package/src/_types/core/EVM/getEVMBalance.d.ts +3 -0
  235. package/src/_types/core/EVM/getEVMBalance.d.ts.map +1 -0
  236. package/src/_types/core/EVM/multisig.d.ts +6 -0
  237. package/src/_types/core/EVM/multisig.d.ts.map +1 -0
  238. package/src/_types/core/EVM/publicClient.d.ts +8 -0
  239. package/src/_types/core/EVM/publicClient.d.ts.map +1 -0
  240. package/src/_types/core/EVM/setAllowance.d.ts +25 -0
  241. package/src/_types/core/EVM/setAllowance.d.ts.map +1 -0
  242. package/{dist/cjs/execution → src/_types/core/EVM}/switchChain.d.ts +5 -4
  243. package/src/_types/core/EVM/switchChain.d.ts.map +1 -0
  244. package/src/_types/core/EVM/types.d.ts +55 -0
  245. package/src/_types/core/EVM/types.d.ts.map +1 -0
  246. package/src/_types/core/EVM/utils.d.ts +10 -0
  247. package/src/_types/core/EVM/utils.d.ts.map +1 -0
  248. package/src/_types/core/Solana/Solana.d.ts +3 -0
  249. package/src/_types/core/Solana/Solana.d.ts.map +1 -0
  250. package/src/_types/core/Solana/SolanaStepExecutor.d.ts +13 -0
  251. package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -0
  252. package/src/_types/core/Solana/connection.d.ts +8 -0
  253. package/src/_types/core/Solana/connection.d.ts.map +1 -0
  254. package/src/_types/core/Solana/getSNSAddress.d.ts +2 -0
  255. package/src/_types/core/Solana/getSNSAddress.d.ts.map +1 -0
  256. package/src/_types/core/Solana/getSolanaBalance.d.ts +3 -0
  257. package/src/_types/core/Solana/getSolanaBalance.d.ts.map +1 -0
  258. package/src/_types/core/Solana/isAddress.d.ts +2 -0
  259. package/src/_types/core/Solana/isAddress.d.ts.map +1 -0
  260. package/src/_types/core/Solana/types.d.ts +13 -0
  261. package/src/_types/core/Solana/types.d.ts.map +1 -0
  262. package/{dist/cjs/execution → src/_types/core}/StatusManager.d.ts +15 -28
  263. package/src/_types/core/StatusManager.d.ts.map +1 -0
  264. package/src/_types/core/checkBalance.d.ts +3 -0
  265. package/src/_types/core/checkBalance.d.ts.map +1 -0
  266. package/src/_types/core/execution.d.ts +42 -0
  267. package/src/_types/core/execution.d.ts.map +1 -0
  268. package/src/_types/core/executionState.d.ts +17 -0
  269. package/src/_types/core/executionState.d.ts.map +1 -0
  270. package/src/_types/core/index.d.ts +4 -0
  271. package/src/_types/core/index.d.ts.map +1 -0
  272. package/src/_types/core/prepareRestart.d.ts +3 -0
  273. package/src/_types/core/prepareRestart.d.ts.map +1 -0
  274. package/src/_types/core/provider.d.ts +3 -0
  275. package/src/_types/core/provider.d.ts.map +1 -0
  276. package/src/_types/core/rpc.d.ts +4 -0
  277. package/src/_types/core/rpc.d.ts.map +1 -0
  278. package/{dist/execution → src/_types/core}/stepComparison.d.ts +7 -4
  279. package/src/_types/core/stepComparison.d.ts.map +1 -0
  280. package/src/_types/core/types.d.ts +81 -0
  281. package/src/_types/core/types.d.ts.map +1 -0
  282. package/{dist/execution → src/_types/core}/utils.d.ts +3 -2
  283. package/src/_types/core/utils.d.ts.map +1 -0
  284. package/src/_types/core/waitForReceivingTransaction.d.ts +4 -0
  285. package/src/_types/core/waitForReceivingTransaction.d.ts.map +1 -0
  286. package/src/_types/createConfig.d.ts +4 -0
  287. package/src/_types/createConfig.d.ts.map +1 -0
  288. package/{dist → src/_types}/helpers.d.ts +4 -3
  289. package/src/_types/helpers.d.ts.map +1 -0
  290. package/src/_types/index.d.ts +15 -0
  291. package/src/_types/index.d.ts.map +1 -0
  292. package/{dist → src/_types}/request.d.ts +1 -0
  293. package/src/_types/request.d.ts.map +1 -0
  294. package/src/_types/services/api.d.ts +89 -0
  295. package/src/_types/services/api.d.ts.map +1 -0
  296. package/src/_types/services/balance.d.ts +30 -0
  297. package/src/_types/services/balance.d.ts.map +1 -0
  298. package/src/_types/services/getNameServiceAddress.d.ts +3 -0
  299. package/src/_types/services/getNameServiceAddress.d.ts.map +1 -0
  300. package/{dist/cjs → src/_types}/typeguards.d.ts +3 -2
  301. package/src/_types/typeguards.d.ts.map +1 -0
  302. package/src/_types/types/index.d.ts +2 -0
  303. package/src/_types/types/index.d.ts.map +1 -0
  304. package/src/_types/types/internal.d.ts +59 -0
  305. package/src/_types/types/internal.d.ts.map +1 -0
  306. package/{dist → src/_types}/utils/errors.d.ts +3 -1
  307. package/src/_types/utils/errors.d.ts.map +1 -0
  308. package/src/_types/utils/getTransactionMessage.d.ts +4 -0
  309. package/src/_types/utils/getTransactionMessage.d.ts.map +1 -0
  310. package/src/_types/utils/index.d.ts +6 -0
  311. package/src/_types/utils/index.d.ts.map +1 -0
  312. package/{dist/cjs → src/_types}/utils/median.d.ts +1 -0
  313. package/src/_types/utils/median.d.ts.map +1 -0
  314. package/src/_types/utils/parseBackendError.d.ts +3 -0
  315. package/src/_types/utils/parseBackendError.d.ts.map +1 -0
  316. package/{dist → src/_types}/utils/parseError.d.ts +4 -6
  317. package/src/_types/utils/parseError.d.ts.map +1 -0
  318. package/{dist → src/_types}/utils/utils.d.ts +1 -0
  319. package/src/_types/utils/utils.d.ts.map +1 -0
  320. package/src/_types/version.d.ts +3 -0
  321. package/src/_types/version.d.ts.map +1 -0
  322. package/src/config.ts +91 -0
  323. package/src/constants.ts +4 -0
  324. package/src/core/BaseStepExecutor.ts +40 -0
  325. package/src/core/EVM/EVM.ts +47 -0
  326. package/src/core/EVM/EVMStepExecutor.ts +503 -0
  327. package/src/core/EVM/abi.ts +47 -0
  328. package/src/core/EVM/checkAllowance.ts +168 -0
  329. package/src/core/EVM/getAllowance.ts +144 -0
  330. package/src/core/EVM/getENSAddress.ts +18 -0
  331. package/src/core/EVM/getEVMBalance.ts +118 -0
  332. package/src/core/EVM/multisig.ts +53 -0
  333. package/src/core/EVM/publicClient.ts +54 -0
  334. package/src/core/EVM/setAllowance.ts +144 -0
  335. package/src/core/EVM/switchChain.ts +77 -0
  336. package/src/core/EVM/types.ts +73 -0
  337. package/src/core/EVM/utils.ts +48 -0
  338. package/src/core/Solana/Solana.ts +41 -0
  339. package/src/core/Solana/SolanaStepExecutor.ts +272 -0
  340. package/src/core/Solana/connection.ts +20 -0
  341. package/src/core/Solana/getSNSAddress.ts +33 -0
  342. package/src/core/Solana/getSolanaBalance.ts +72 -0
  343. package/src/core/Solana/isAddress.ts +10 -0
  344. package/src/core/Solana/types.ts +18 -0
  345. package/src/core/StatusManager.ts +231 -0
  346. package/src/core/checkBalance.ts +48 -0
  347. package/src/core/execution.ts +214 -0
  348. package/src/core/executionState.ts +44 -0
  349. package/src/core/index.ts +3 -0
  350. package/src/core/prepareRestart.ts +82 -0
  351. package/src/core/provider.ts +12 -0
  352. package/src/core/rpc.ts +15 -0
  353. package/src/core/stepComparison.ts +51 -0
  354. package/src/core/types.ts +118 -0
  355. package/src/core/utils.ts +105 -0
  356. package/src/core/waitForReceivingTransaction.ts +74 -0
  357. package/src/createConfig.ts +33 -0
  358. package/src/helpers.ts +83 -0
  359. package/src/index.ts +18 -0
  360. package/src/request.ts +79 -0
  361. package/src/services/api.ts +509 -0
  362. package/src/services/balance.ts +93 -0
  363. package/src/services/getNameServiceAddress.ts +30 -0
  364. package/src/typeguards.ts +89 -0
  365. package/src/types/index.ts +1 -0
  366. package/src/types/internal.ts +62 -0
  367. package/src/utils/errors.ts +232 -0
  368. package/src/utils/getTransactionMessage.ts +46 -0
  369. package/src/utils/index.ts +5 -0
  370. package/src/utils/median.ts +11 -0
  371. package/src/utils/parseBackendError.ts +50 -0
  372. package/src/utils/parseError.ts +210 -0
  373. package/src/utils/utils.ts +48 -0
  374. package/src/version.ts +2 -0
  375. package/dist/LiFi.d.ts +0 -175
  376. package/dist/LiFi.js +0 -250
  377. package/dist/allowance/getAllowance.d.ts +0 -6
  378. package/dist/allowance/index.d.ts +0 -3
  379. package/dist/allowance/index.js +0 -3
  380. package/dist/allowance/setAllowance.d.ts +0 -6
  381. package/dist/allowance/types.d.ts +0 -27
  382. package/dist/allowance/types.js +0 -1
  383. package/dist/balance/getBalance.d.ts +0 -2
  384. package/dist/balance/getTokenBalance.d.ts +0 -8
  385. package/dist/balance/getTokenBalance.js +0 -27
  386. package/dist/balance/index.d.ts +0 -2
  387. package/dist/balance/index.js +0 -2
  388. package/dist/cjs/LiFi.d.ts +0 -175
  389. package/dist/cjs/LiFi.js +0 -280
  390. package/dist/cjs/allowance/index.d.ts +0 -3
  391. package/dist/cjs/allowance/index.js +0 -19
  392. package/dist/cjs/allowance/setAllowance.d.ts +0 -6
  393. package/dist/cjs/allowance/types.d.ts +0 -27
  394. package/dist/cjs/balance/getBalance.d.ts +0 -2
  395. package/dist/cjs/balance/getTokenBalance.d.ts +0 -8
  396. package/dist/cjs/balance/getTokenBalance.js +0 -33
  397. package/dist/cjs/balance/index.d.ts +0 -2
  398. package/dist/cjs/balance/index.js +0 -18
  399. package/dist/cjs/connectors.d.ts +0 -8
  400. package/dist/cjs/connectors.js +0 -75
  401. package/dist/cjs/execution/RouteExecutionManager.d.ts +0 -59
  402. package/dist/cjs/execution/RouteExecutionManager.js +0 -202
  403. package/dist/cjs/execution/StatusManager.js +0 -171
  404. package/dist/cjs/execution/StepExecutionManager.d.ts +0 -7
  405. package/dist/cjs/execution/StepExecutionManager.js +0 -272
  406. package/dist/cjs/execution/StepExecutor.d.ts +0 -15
  407. package/dist/cjs/execution/StepExecutor.js +0 -62
  408. package/dist/cjs/execution/checkAllowance.d.ts +0 -4
  409. package/dist/cjs/execution/checkBalance.d.ts +0 -2
  410. package/dist/cjs/execution/index.d.ts +0 -1
  411. package/dist/cjs/execution/index.js +0 -17
  412. package/dist/cjs/execution/multisig.d.ts +0 -4
  413. package/dist/cjs/execution/prepareRestart.d.ts +0 -3
  414. package/dist/cjs/execution/prepareRestart.js +0 -65
  415. package/dist/cjs/execution/stepComparison.d.ts +0 -14
  416. package/dist/cjs/execution/stepComparison.js +0 -37
  417. package/dist/cjs/execution/switchChain.js +0 -54
  418. package/dist/cjs/execution/utils.d.ts +0 -12
  419. package/dist/cjs/execution/waitForReceivingTransaction.d.ts +0 -3
  420. package/dist/cjs/helpers.d.ts +0 -18
  421. package/dist/cjs/helpers.js +0 -84
  422. package/dist/cjs/index.d.ts +0 -5
  423. package/dist/cjs/index.js +0 -24
  424. package/dist/cjs/request.d.ts +0 -9
  425. package/dist/cjs/request.js +0 -60
  426. package/dist/cjs/services/ApiService.d.ts +0 -17
  427. package/dist/cjs/services/ApiService.js +0 -326
  428. package/dist/cjs/services/ChainsService.d.ts +0 -11
  429. package/dist/cjs/services/ChainsService.js +0 -39
  430. package/dist/cjs/services/ConfigService.d.ts +0 -23
  431. package/dist/cjs/services/ConfigService.js +0 -101
  432. package/dist/cjs/types/index.d.ts +0 -4
  433. package/dist/cjs/types/index.js +0 -22
  434. package/dist/cjs/types/internal.types.d.ts +0 -145
  435. package/dist/cjs/utils/errors.d.ts +0 -107
  436. package/dist/cjs/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  437. package/dist/cjs/utils/index.d.ts +0 -5
  438. package/dist/cjs/utils/index.js +0 -21
  439. package/dist/cjs/utils/parseError.d.ts +0 -37
  440. package/dist/cjs/utils/parseError.js +0 -157
  441. package/dist/cjs/utils/utils.d.ts +0 -10
  442. package/dist/cjs/version.d.ts +0 -2
  443. package/dist/connectors.d.ts +0 -8
  444. package/dist/connectors.js +0 -41
  445. package/dist/constants.d.ts +0 -6
  446. package/dist/execution/RouteExecutionManager.d.ts +0 -59
  447. package/dist/execution/RouteExecutionManager.js +0 -195
  448. package/dist/execution/StatusManager.d.ts +0 -67
  449. package/dist/execution/StatusManager.js +0 -167
  450. package/dist/execution/StepExecutionManager.d.ts +0 -7
  451. package/dist/execution/StepExecutionManager.js +0 -265
  452. package/dist/execution/StepExecutor.d.ts +0 -15
  453. package/dist/execution/StepExecutor.js +0 -58
  454. package/dist/execution/checkAllowance.d.ts +0 -4
  455. package/dist/execution/checkBalance.d.ts +0 -2
  456. package/dist/execution/index.d.ts +0 -1
  457. package/dist/execution/index.js +0 -1
  458. package/dist/execution/multisig.d.ts +0 -4
  459. package/dist/execution/prepareRestart.d.ts +0 -3
  460. package/dist/execution/prepareRestart.js +0 -61
  461. package/dist/execution/switchChain.d.ts +0 -21
  462. package/dist/execution/waitForReceivingTransaction.d.ts +0 -3
  463. package/dist/index.d.ts +0 -5
  464. package/dist/index.js +0 -6
  465. package/dist/services/ApiService.d.ts +0 -17
  466. package/dist/services/ApiService.js +0 -321
  467. package/dist/services/ChainsService.d.ts +0 -11
  468. package/dist/services/ChainsService.js +0 -33
  469. package/dist/services/ConfigService.d.ts +0 -23
  470. package/dist/services/ConfigService.js +0 -99
  471. package/dist/typeguards.d.ts +0 -4
  472. package/dist/types/abi.d.ts +0 -5
  473. package/dist/types/index.d.ts +0 -4
  474. package/dist/types/index.js +0 -4
  475. package/dist/types/internal.types.d.ts +0 -145
  476. package/dist/types/internal.types.js +0 -1
  477. package/dist/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  478. package/dist/utils/index.d.ts +0 -5
  479. package/dist/utils/index.js +0 -5
  480. package/dist/utils/median.d.ts +0 -1
  481. package/dist/version.d.ts +0 -2
  482. package/dist/version.js +0 -2
@@ -0,0 +1,89 @@
1
+ import type {
2
+ Action,
3
+ Estimate,
4
+ LiFiStep,
5
+ RouteOptions,
6
+ RoutesRequest,
7
+ StaticToken,
8
+ } from '@lifi/types'
9
+
10
+ export const isRoutesRequest = (
11
+ routesRequest: RoutesRequest
12
+ ): routesRequest is RoutesRequest => {
13
+ const {
14
+ fromChainId,
15
+ fromAmount,
16
+ fromTokenAddress,
17
+ toChainId,
18
+ toTokenAddress,
19
+ options,
20
+ } = routesRequest
21
+
22
+ return (
23
+ typeof fromChainId === 'number' &&
24
+ typeof fromAmount === 'string' &&
25
+ fromAmount !== '' &&
26
+ typeof fromTokenAddress === 'string' &&
27
+ fromTokenAddress !== '' &&
28
+ typeof toChainId === 'number' &&
29
+ typeof toTokenAddress === 'string' &&
30
+ toTokenAddress !== '' &&
31
+ (!options || isRoutesOptions(options))
32
+ )
33
+ }
34
+
35
+ const isRoutesOptions = (
36
+ routeOptions: RouteOptions
37
+ ): routeOptions is RouteOptions =>
38
+ !routeOptions?.slippage || typeof routeOptions.slippage === 'number'
39
+
40
+ export const isStep = (step: LiFiStep): step is LiFiStep => {
41
+ const { id, type, tool, action, estimate } = step
42
+
43
+ return (
44
+ typeof id === 'string' &&
45
+ ['swap', 'cross', 'lifi'].includes(type) &&
46
+ typeof tool === 'string' &&
47
+ isAction(action) &&
48
+ isEstimate(estimate)
49
+ )
50
+ }
51
+
52
+ const isAction = (action: Action): action is Action => {
53
+ const { fromChainId, fromAmount, fromToken, toChainId, toToken, slippage } =
54
+ action
55
+
56
+ return (
57
+ typeof fromChainId === 'number' &&
58
+ typeof fromAmount === 'string' &&
59
+ fromAmount !== '' &&
60
+ isToken(fromToken) &&
61
+ typeof toChainId === 'number' &&
62
+ isToken(toToken) &&
63
+ typeof slippage === 'number'
64
+ )
65
+ }
66
+
67
+ const isEstimate = (estimate: Estimate): estimate is Estimate => {
68
+ const { fromAmount, toAmount, toAmountMin, approvalAddress } = estimate
69
+
70
+ return (
71
+ typeof fromAmount === 'string' &&
72
+ fromAmount !== '' &&
73
+ typeof toAmount === 'string' &&
74
+ toAmount !== '' &&
75
+ typeof toAmountMin === 'string' &&
76
+ toAmountMin !== '' &&
77
+ typeof approvalAddress === 'string'
78
+ )
79
+ }
80
+
81
+ export const isToken = (token: StaticToken): token is StaticToken => {
82
+ const { address, decimals, chainId } = token
83
+
84
+ return (
85
+ typeof address === 'string' &&
86
+ typeof decimals === 'number' &&
87
+ typeof chainId === 'number'
88
+ )
89
+ }
@@ -0,0 +1 @@
1
+ export * from './internal.js'
@@ -0,0 +1,62 @@
1
+ import type { ChainId, ExtendedChain, RouteOptions } from '@lifi/types'
2
+ import type { SDKProvider } from '../core/types.js'
3
+
4
+ export interface SDKBaseConfig {
5
+ apiKey?: string
6
+ apiUrl: string
7
+ integrator: string
8
+ userId?: string
9
+ providers: SDKProvider[]
10
+ routeOptions?: RouteOptions
11
+ rpcUrls: RPCUrls
12
+ chains: ExtendedChain[]
13
+ disableVersionCheck?: boolean
14
+ widgetVersion?: string
15
+ preloadChains: boolean
16
+ }
17
+
18
+ export interface SDKConfig extends Partial<Omit<SDKBaseConfig, 'integrator'>> {
19
+ integrator: string
20
+ }
21
+
22
+ export type RPCUrls = Partial<Record<ChainId, string[]>>
23
+
24
+ export interface TenderlyResponse {
25
+ hash: string
26
+ block_hash: string
27
+ block_number: number
28
+ from: string
29
+ gas: number
30
+ gas_price: number
31
+ gas_fee_cap: number
32
+ gas_tip_cap: number
33
+ cumulative_gas_used: number
34
+ gas_used: number
35
+ effective_gas_price: number
36
+ input: string
37
+ nonce: number
38
+ to: string
39
+ index: number
40
+ value: string
41
+ access_list: unknown
42
+ status: boolean
43
+ addresses: string[]
44
+ contract_ids: string[]
45
+ network_id: string
46
+ timestamp: string
47
+ function_selector: string
48
+ l1_block_number: number
49
+ l1_timestamp: number
50
+ deposit_tx: boolean
51
+ system_tx: boolean
52
+ mint: number
53
+ sig: {
54
+ v: string
55
+ r: string
56
+ s: string
57
+ }
58
+ error_message: string
59
+ method: string
60
+ decoded_input: unknown
61
+ call_trace: unknown
62
+ }
@@ -0,0 +1,232 @@
1
+ enum ErrorType {
2
+ RPCError = 'RPCError',
3
+ ProviderError = 'ProviderError',
4
+ ServerError = 'ServerError',
5
+ TransactionError = 'TransactionError',
6
+ ValidationError = 'ValidationError',
7
+ NotFoundError = 'NotFoundError',
8
+ UnknownError = 'UnknownError',
9
+ SlippageError = 'SlippageError',
10
+ }
11
+
12
+ export enum LiFiErrorCode {
13
+ InternalError = 1000,
14
+ ValidationError = 1001,
15
+ TransactionUnderpriced = 1002,
16
+ TransactionFailed = 1003,
17
+ Timeout = 1004,
18
+ ProviderUnavailable = 1005,
19
+ NotFound = 1006,
20
+ ChainSwitchError = 1007,
21
+ TransactionUnprepared = 1008,
22
+ GasLimitError = 1009,
23
+ TransactionCanceled = 1010,
24
+ SlippageError = 1011,
25
+ SignatureRejected = 1012,
26
+ BalanceError = 1013,
27
+ AllowanceRequired = 1014,
28
+ InsufficientFunds = 1015,
29
+ ExchangeRateUpdateCanceled = 1016,
30
+ WalletChangedDuringExecution = 1017,
31
+ }
32
+
33
+ export enum EthersErrorType {
34
+ ActionRejected = 'ACTION_REJECTED',
35
+ CallExecption = 'CALL_EXCEPTION',
36
+ InsufficientFunds = 'INSUFFICIENT_FUNDS',
37
+ }
38
+
39
+ export enum EthersErrorMessage {
40
+ ERC20Allowance = 'ERC20: transfer amount exceeds allowance',
41
+ LowGas = 'intrinsic gas too low',
42
+ OutOfGas = 'out of gas',
43
+ Underpriced = 'underpriced',
44
+ LowReplacementFee = 'replacement fee too low',
45
+ }
46
+
47
+ export enum ErrorMessage {
48
+ UnknownError = 'Unknown error occurred.',
49
+ SlippageError = 'The slippage is larger than the defined threshold. Please request a new route to get a fresh quote.',
50
+ GasLimitLow = 'Gas limit is too low.',
51
+ TransactionUnderpriced = 'Transaction is underpriced.',
52
+ Default = 'Something went wrong.',
53
+ }
54
+
55
+ export enum MetaMaskRPCErrorCode {
56
+ invalidInput = -32000,
57
+ resourceNotFound = -32001,
58
+ resourceUnavailable = -32002,
59
+ transactionRejected = -32003,
60
+ methodNotSupported = -32004,
61
+ limitExceeded = -32005,
62
+ parse = -32700,
63
+ invalidRequest = -32600,
64
+ methodNotFound = -32601,
65
+ invalidParams = -32602,
66
+ internal = -32603,
67
+ }
68
+
69
+ export enum MetaMaskProviderErrorCode {
70
+ userRejectedRequest = 4001,
71
+ unauthorized = 4100,
72
+ unsupportedMethod = 4200,
73
+ disconnected = 4900,
74
+ chainDisconnected = 4901,
75
+ }
76
+
77
+ export type ErrorCode =
78
+ | LiFiErrorCode
79
+ | MetaMaskRPCErrorCode
80
+ | MetaMaskProviderErrorCode
81
+
82
+ export class LiFiError extends Error {
83
+ code: ErrorCode
84
+ htmlMessage?: string
85
+
86
+ constructor(
87
+ type: ErrorType,
88
+ code: number,
89
+ message: string,
90
+ htmlMessage?: string,
91
+ stack?: string
92
+ ) {
93
+ super(message)
94
+
95
+ // Set the prototype explicitly: https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
96
+ Object.setPrototypeOf(this, LiFiError.prototype)
97
+
98
+ this.code = code
99
+
100
+ // the name property is used by toString(). It is a string and we can't use our custom ErrorTypes, that's why we have to cast
101
+ this.name = type.toString()
102
+
103
+ this.htmlMessage = htmlMessage
104
+
105
+ // passing a stack allows us to preserve the stack from errors that we caught and just want to transform in one of our custom errors
106
+ if (stack) {
107
+ this.stack = stack
108
+ }
109
+ }
110
+ }
111
+
112
+ export class RPCError extends LiFiError {
113
+ constructor(
114
+ code: ErrorCode,
115
+ message: string,
116
+ htmlMessage?: string,
117
+ stack?: string
118
+ ) {
119
+ super(ErrorType.RPCError, code, message, htmlMessage, stack)
120
+ }
121
+ }
122
+
123
+ export class ProviderError extends LiFiError {
124
+ constructor(
125
+ code: ErrorCode,
126
+ message: string,
127
+ htmlMessage?: string,
128
+ stack?: string
129
+ ) {
130
+ super(ErrorType.ProviderError, code, message, htmlMessage, stack)
131
+ }
132
+ }
133
+
134
+ export class ServerError extends LiFiError {
135
+ constructor(message: string, htmlMessage?: string, stack?: string) {
136
+ super(
137
+ ErrorType.ServerError,
138
+ LiFiErrorCode.InternalError,
139
+ message,
140
+ htmlMessage,
141
+ stack
142
+ )
143
+ }
144
+ }
145
+
146
+ export class ValidationError extends LiFiError {
147
+ constructor(message: string, htmlMessage?: string, stack?: string) {
148
+ super(
149
+ ErrorType.ValidationError,
150
+ LiFiErrorCode.ValidationError,
151
+ message,
152
+ htmlMessage,
153
+ stack
154
+ )
155
+ }
156
+ }
157
+
158
+ export class TransactionError extends LiFiError {
159
+ constructor(
160
+ code: ErrorCode,
161
+ message: string,
162
+ htmlMessage?: string,
163
+ stack?: string
164
+ ) {
165
+ super(ErrorType.TransactionError, code, message, htmlMessage, stack)
166
+ }
167
+ }
168
+
169
+ export class SlippageError extends LiFiError {
170
+ constructor(message: string, htmlMessage?: string, stack?: string) {
171
+ super(
172
+ ErrorType.SlippageError,
173
+ LiFiErrorCode.SlippageError,
174
+ message,
175
+ htmlMessage,
176
+ stack
177
+ )
178
+ }
179
+ }
180
+
181
+ export class BalanceError extends LiFiError {
182
+ constructor(message: string, htmlMessage?: string, stack?: string) {
183
+ super(
184
+ ErrorType.ValidationError,
185
+ LiFiErrorCode.BalanceError,
186
+ message,
187
+ htmlMessage,
188
+ stack
189
+ )
190
+ }
191
+ }
192
+
193
+ export class NotFoundError extends LiFiError {
194
+ constructor(message: string, htmlMessage?: string, stack?: string) {
195
+ super(
196
+ ErrorType.NotFoundError,
197
+ LiFiErrorCode.NotFound,
198
+ message,
199
+ htmlMessage,
200
+ stack
201
+ )
202
+ }
203
+ }
204
+
205
+ export class UnknownError extends LiFiError {
206
+ constructor(
207
+ code: ErrorCode,
208
+ message: string,
209
+ htmlMessage?: string,
210
+ stack?: string
211
+ ) {
212
+ super(ErrorType.UnknownError, code, message, htmlMessage, stack)
213
+ }
214
+ }
215
+
216
+ export class HTTPError extends Error {
217
+ public response: Response
218
+ public status: number
219
+
220
+ constructor(response: Response) {
221
+ const code = response.status || response.status === 0 ? response.status : ''
222
+ const title = response.statusText || ''
223
+ const status = `${code} ${title}`.trim()
224
+ const reason = status ? `status code ${status}` : 'an unknown error'
225
+
226
+ super(`Request failed with ${reason}`)
227
+
228
+ this.name = 'HTTPError'
229
+ this.response = response
230
+ this.status = response.status
231
+ }
232
+ }
@@ -0,0 +1,46 @@
1
+ import type { LiFiStep, Process } from '@lifi/types'
2
+ import { formatUnits } from 'viem'
3
+ import { config } from '../config.js'
4
+
5
+ export const getTransactionNotSentMessage = async (
6
+ step?: LiFiStep,
7
+ process?: Process
8
+ ): Promise<string> => {
9
+ let transactionNotSend =
10
+ 'Transaction was not sent, your funds are still in your wallet'
11
+
12
+ // add information about funds if available
13
+ if (step) {
14
+ const chain = await config.getChainById(step.action.fromChainId)
15
+
16
+ transactionNotSend += ` (${formatUnits(
17
+ BigInt(step.action.fromAmount),
18
+ step.action.fromToken.decimals
19
+ )} ${step.action.fromToken.symbol} on ${chain.name})`
20
+ }
21
+
22
+ transactionNotSend +=
23
+ ", please retry.<br/>If it still doesn't work, it is safe to delete this transfer and start a new one."
24
+
25
+ // add transaction explorer link if available
26
+ transactionNotSend +=
27
+ process && process.txLink
28
+ ? `<br>You can check the failed transaction&nbsp;<a href="${process.txLink}" target="_blank" rel="nofollow noreferrer">here</a>.`
29
+ : ''
30
+
31
+ return transactionNotSend
32
+ }
33
+
34
+ export const getTransactionFailedMessage = async (
35
+ step: LiFiStep,
36
+ txLink?: string
37
+ ): Promise<string> => {
38
+ const chain = await config.getChainById(step.action.toChainId)
39
+
40
+ const baseString = `It appears that your transaction may not have been successful.
41
+ However, to confirm this, please check your ${chain.name} wallet for ${step.action.toToken.symbol}.`
42
+ return txLink
43
+ ? `${baseString}
44
+ You can also check the&nbsp;<a href="${txLink}" target="_blank" rel="nofollow noreferrer">block explorer</a> for more information.`
45
+ : baseString
46
+ }
@@ -0,0 +1,5 @@
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'
@@ -0,0 +1,11 @@
1
+ export const median = (arr: bigint[]): bigint | undefined => {
2
+ if (!arr.length) {
3
+ return
4
+ }
5
+ const s = [...arr].sort((a, b) => (a > b ? 1 : a < b ? -1 : 0))
6
+ const mid = Math.floor(s.length / 2)
7
+ if (s.length % 2 === 0) {
8
+ return (s[mid - 1] + s[mid]) / 2n
9
+ }
10
+ return s[mid]
11
+ }
@@ -0,0 +1,50 @@
1
+ import type { LiFiError } from './errors.js'
2
+ import {
3
+ ErrorMessage,
4
+ NotFoundError,
5
+ ServerError,
6
+ SlippageError,
7
+ ValidationError,
8
+ } from './errors.js'
9
+
10
+ export const parseBackendError = async (e: any): Promise<LiFiError> => {
11
+ let data
12
+ try {
13
+ data = await e.response?.json()
14
+ } catch (error) {
15
+ // ignore
16
+ }
17
+ if (e.response?.status === 400) {
18
+ return new ValidationError(
19
+ data?.message || e.response?.statusText,
20
+ undefined,
21
+ e.stack
22
+ )
23
+ }
24
+
25
+ if (e.response?.status === 404) {
26
+ return new NotFoundError(
27
+ data?.message || e.response?.statusText,
28
+ undefined,
29
+ e.stack
30
+ )
31
+ }
32
+
33
+ if (e.response?.status === 409) {
34
+ return new SlippageError(
35
+ data?.message || e.response?.statusText,
36
+ ErrorMessage.SlippageError,
37
+ e.stack
38
+ )
39
+ }
40
+
41
+ if (e.response?.status === 500) {
42
+ return new ServerError(
43
+ data?.message || e.response?.statusText,
44
+ undefined,
45
+ e.stack
46
+ )
47
+ }
48
+
49
+ return new ServerError(ErrorMessage.Default, undefined, e.stack)
50
+ }
@@ -0,0 +1,210 @@
1
+ import type { LiFiStep, Process } from '@lifi/types'
2
+ import {
3
+ errorCodes as MetaMaskErrorCodes,
4
+ getMessageFromCode,
5
+ } from 'eth-rpc-errors'
6
+ import { fetchTxErrorDetails } from '../helpers.js'
7
+ import {
8
+ ErrorMessage,
9
+ EthersErrorMessage,
10
+ EthersErrorType,
11
+ LiFiError,
12
+ LiFiErrorCode,
13
+ MetaMaskProviderErrorCode,
14
+ ProviderError,
15
+ RPCError,
16
+ TransactionError,
17
+ UnknownError,
18
+ } from './errors.js'
19
+ import { getTransactionNotSentMessage } from './getTransactionMessage.js'
20
+
21
+ /**
22
+ * Available MetaMask error codes:
23
+ *
24
+ * export const errorCodes: ErrorCodes = {
25
+ rpc: {
26
+ invalidInput: -32000,
27
+ resourceNotFound: -32001,
28
+ resourceUnavailable: -32002,
29
+ transactionRejected: -32003,
30
+ methodNotSupported: -32004,
31
+ limitExceeded: -32005,
32
+ parse: -32700,
33
+ invalidRequest: -32600,
34
+ methodNotFound: -32601,
35
+ invalidParams: -32602,
36
+ internal: -32603,
37
+ },
38
+ provider: {
39
+ userRejectedRequest: 4001,
40
+ unauthorized: 4100,
41
+ unsupportedMethod: 4200,
42
+ disconnected: 4900,
43
+ chainDisconnected: 4901,
44
+ },
45
+ };
46
+ *
47
+ * For more information about error codes supported by metamask check
48
+ * https://github.com/MetaMask/eth-rpc-errors
49
+ * https://eips.ethereum.org/EIPS/eip-1474#error-codes
50
+ * https://eips.ethereum.org/EIPS/eip-1193#provider-errors
51
+ */
52
+
53
+ export const parseError = async (
54
+ e: any,
55
+ step?: LiFiStep,
56
+ process?: Process
57
+ ): Promise<LiFiError> => {
58
+ if (e instanceof LiFiError) {
59
+ return e
60
+ }
61
+
62
+ const errorCode = e.code || e.cause?.code
63
+
64
+ switch (errorCode) {
65
+ case EthersErrorType.CallExecption:
66
+ const defaultErrorMessage = await getTransactionNotSentMessage(
67
+ step,
68
+ process
69
+ )
70
+ try {
71
+ if (!step?.action.fromChainId) {
72
+ throw new Error('fromChainId is not defined.')
73
+ }
74
+
75
+ const response = await fetchTxErrorDetails(
76
+ e.transactionHash,
77
+ step?.action.fromChainId
78
+ )
79
+
80
+ const errorMessage = response?.error_message ?? e.reason
81
+
82
+ const isAllowanceError =
83
+ response?.error_message?.includes(
84
+ EthersErrorMessage.ERC20Allowance
85
+ ) || e.reason?.includes(EthersErrorMessage.ERC20Allowance)
86
+
87
+ if (isAllowanceError) {
88
+ return new TransactionError(
89
+ LiFiErrorCode.AllowanceRequired,
90
+ e.reason,
91
+ errorMessage,
92
+ e.stack
93
+ )
94
+ }
95
+
96
+ // Error messages other than allowance error will be handled in catch block
97
+ throw new Error(e)
98
+ } catch (error) {
99
+ return new ProviderError(
100
+ LiFiErrorCode.TransactionFailed,
101
+ e.reason,
102
+ defaultErrorMessage,
103
+ e.stack
104
+ )
105
+ }
106
+ case EthersErrorType.InsufficientFunds:
107
+ return new TransactionError(
108
+ LiFiErrorCode.InsufficientFunds,
109
+ e.message,
110
+ await getTransactionNotSentMessage(step, process),
111
+ e.stack
112
+ )
113
+ case EthersErrorType.ActionRejected:
114
+ case MetaMaskProviderErrorCode.userRejectedRequest:
115
+ return new TransactionError(
116
+ LiFiErrorCode.SignatureRejected,
117
+ e.message,
118
+ await getTransactionNotSentMessage(step, process),
119
+ e.stack
120
+ )
121
+ case LiFiErrorCode.TransactionUnprepared:
122
+ return new TransactionError(
123
+ LiFiErrorCode.TransactionUnprepared,
124
+ e.message,
125
+ await getTransactionNotSentMessage(step, process),
126
+ e.stack
127
+ )
128
+ case LiFiErrorCode.ValidationError:
129
+ return new TransactionError(
130
+ LiFiErrorCode.ValidationError,
131
+ e.message,
132
+ e.htmlMessage
133
+ )
134
+ case LiFiErrorCode.TransactionCanceled:
135
+ return new TransactionError(
136
+ LiFiErrorCode.TransactionCanceled,
137
+ e.message,
138
+ e.htmlMessage
139
+ )
140
+ case LiFiErrorCode.ExchangeRateUpdateCanceled:
141
+ return new TransactionError(
142
+ LiFiErrorCode.ExchangeRateUpdateCanceled,
143
+ e.message,
144
+ e.htmlMessage
145
+ )
146
+ case LiFiErrorCode.WalletChangedDuringExecution:
147
+ return new TransactionError(
148
+ LiFiErrorCode.WalletChangedDuringExecution,
149
+ e.message,
150
+ e.htmlMessage
151
+ )
152
+ default: {
153
+ if (errorCode && typeof errorCode === 'number') {
154
+ if (Object.values(MetaMaskErrorCodes.rpc).includes(errorCode as any)) {
155
+ // rpc errors
156
+ // underpriced errors are sent as internal errors, so we need to parse the message manually
157
+ if (
158
+ errorCode === MetaMaskErrorCodes.rpc.internal &&
159
+ (e.message?.includes(EthersErrorMessage.Underpriced) ||
160
+ e.message?.includes(EthersErrorMessage.LowReplacementFee))
161
+ ) {
162
+ return new RPCError(
163
+ LiFiErrorCode.TransactionUnderpriced,
164
+ ErrorMessage.TransactionUnderpriced,
165
+ await getTransactionNotSentMessage(step, process),
166
+ e.stack
167
+ )
168
+ }
169
+
170
+ if (
171
+ e.message?.includes(EthersErrorMessage.LowGas) ||
172
+ e.message?.includes(EthersErrorMessage.OutOfGas)
173
+ ) {
174
+ return new TransactionError(
175
+ LiFiErrorCode.GasLimitError,
176
+ ErrorMessage.GasLimitLow,
177
+ await getTransactionNotSentMessage(step, process),
178
+ e.stack
179
+ )
180
+ }
181
+
182
+ return new RPCError(
183
+ errorCode,
184
+ getMessageFromCode(errorCode),
185
+ await getTransactionNotSentMessage(step, process),
186
+ e.stack
187
+ )
188
+ }
189
+
190
+ // provider errors
191
+ if (
192
+ Object.values(MetaMaskErrorCodes.provider).includes(errorCode as any)
193
+ ) {
194
+ return new ProviderError(
195
+ errorCode,
196
+ getMessageFromCode(errorCode),
197
+ await getTransactionNotSentMessage(step, process),
198
+ e.stack
199
+ )
200
+ }
201
+ }
202
+ return new UnknownError(
203
+ LiFiErrorCode.InternalError,
204
+ e.message || ErrorMessage.UnknownError,
205
+ undefined,
206
+ e.stack
207
+ )
208
+ }
209
+ }
210
+ }