@lifi/sdk 3.0.0-alpha.9 → 3.0.0-beta.1

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 (516) hide show
  1. package/package.json +40 -98
  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 -8
  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/KeypairWalletAdapter.js +88 -0
  35. package/src/_cjs/core/Solana/KeypairWalletAdapter.js.map +1 -0
  36. package/src/_cjs/core/Solana/Solana.js +38 -0
  37. package/src/_cjs/core/Solana/Solana.js.map +1 -0
  38. package/src/_cjs/core/Solana/SolanaStepExecutor.js +200 -0
  39. package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -0
  40. package/src/_cjs/core/Solana/connection.js +19 -0
  41. package/src/_cjs/core/Solana/connection.js.map +1 -0
  42. package/src/_cjs/core/Solana/getSNSAddress.js +26 -0
  43. package/src/_cjs/core/Solana/getSNSAddress.js.map +1 -0
  44. package/src/_cjs/core/Solana/getSolanaBalance.js +60 -0
  45. package/src/_cjs/core/Solana/getSolanaBalance.js.map +1 -0
  46. package/src/_cjs/core/Solana/isAddress.js +15 -0
  47. package/src/_cjs/core/Solana/isAddress.js.map +1 -0
  48. package/src/_cjs/core/Solana/types.js +10 -0
  49. package/src/_cjs/core/Solana/types.js.map +1 -0
  50. package/src/_cjs/core/StatusManager.js +168 -0
  51. package/src/_cjs/core/StatusManager.js.map +1 -0
  52. package/{dist/cjs/execution → src/_cjs/core}/checkBalance.js +6 -6
  53. package/src/_cjs/core/checkBalance.js.map +1 -0
  54. package/src/_cjs/core/execution.js +138 -0
  55. package/src/_cjs/core/execution.js.map +1 -0
  56. package/src/_cjs/core/executionState.js +29 -0
  57. package/src/_cjs/core/executionState.js.map +1 -0
  58. package/src/_cjs/core/index.js +7 -0
  59. package/src/_cjs/core/index.js.map +1 -0
  60. package/src/_cjs/core/prepareRestart.js +23 -0
  61. package/src/_cjs/core/prepareRestart.js.map +1 -0
  62. package/src/_cjs/core/provider.js +15 -0
  63. package/src/_cjs/core/provider.js.map +1 -0
  64. package/src/_cjs/core/rpc.js +18 -0
  65. package/src/_cjs/core/rpc.js.map +1 -0
  66. package/src/_cjs/core/stepComparison.js +25 -0
  67. package/src/_cjs/core/stepComparison.js.map +1 -0
  68. package/{dist/cjs/allowance → src/_cjs/core}/types.js +1 -0
  69. package/src/_cjs/core/types.js.map +1 -0
  70. package/{dist/cjs/execution → src/_cjs/core}/utils.js +2 -11
  71. package/src/_cjs/core/utils.js.map +1 -0
  72. package/{dist/cjs/execution → src/_cjs/core}/waitForReceivingTransaction.js +13 -14
  73. package/src/_cjs/core/waitForReceivingTransaction.js.map +1 -0
  74. package/src/_cjs/createConfig.js +34 -0
  75. package/src/_cjs/createConfig.js.map +1 -0
  76. package/src/_cjs/helpers.js +50 -0
  77. package/src/_cjs/helpers.js.map +1 -0
  78. package/src/_cjs/index.js +30 -0
  79. package/src/_cjs/index.js.map +1 -0
  80. package/src/_cjs/package.json +1 -0
  81. package/{dist/cjs → src/_cjs}/request.js +18 -15
  82. package/src/_cjs/request.js.map +1 -0
  83. package/src/_cjs/services/api.js +309 -0
  84. package/src/_cjs/services/api.js.map +1 -0
  85. package/src/_cjs/services/balance.js +49 -0
  86. package/src/_cjs/services/balance.js.map +1 -0
  87. package/src/_cjs/services/getNameServiceAddress.js +29 -0
  88. package/src/_cjs/services/getNameServiceAddress.js.map +1 -0
  89. package/{dist/cjs → src/_cjs}/typeguards.js +1 -0
  90. package/src/_cjs/typeguards.js.map +1 -0
  91. package/src/_cjs/types/index.js +5 -0
  92. package/src/_cjs/types/index.js.map +1 -0
  93. package/{dist/cjs → src/_cjs}/types/internal.js +1 -0
  94. package/src/_cjs/types/internal.js.map +1 -0
  95. package/src/_cjs/utils/base64ToUint8Array.js +14 -0
  96. package/src/_cjs/utils/base64ToUint8Array.js.map +1 -0
  97. package/{dist/cjs → src/_cjs}/utils/errors.js +26 -3
  98. package/src/_cjs/utils/errors.js.map +1 -0
  99. package/src/_cjs/utils/getTransactionMessage.js +31 -0
  100. package/src/_cjs/utils/getTransactionMessage.js.map +1 -0
  101. package/src/_cjs/utils/index.js +9 -0
  102. package/src/_cjs/utils/index.js.map +1 -0
  103. package/{dist/cjs → src/_cjs}/utils/median.js +1 -0
  104. package/src/_cjs/utils/median.js.map +1 -0
  105. package/src/_cjs/utils/parseBackendError.js +27 -0
  106. package/src/_cjs/utils/parseBackendError.js.map +1 -0
  107. package/src/_cjs/utils/parseError.js +69 -0
  108. package/src/_cjs/utils/parseError.js.map +1 -0
  109. package/{dist/cjs → src/_cjs}/utils/utils.js +5 -11
  110. package/src/_cjs/utils/utils.js.map +1 -0
  111. package/{dist/cjs → src/_cjs}/version.js +2 -1
  112. package/src/_cjs/version.js.map +1 -0
  113. package/src/_esm/config.js +87 -0
  114. package/src/_esm/config.js.map +1 -0
  115. package/{dist → src/_esm}/constants.js +2 -4
  116. package/src/_esm/constants.js.map +1 -0
  117. package/src/_esm/core/BaseStepExecutor.js +52 -0
  118. package/src/_esm/core/BaseStepExecutor.js.map +1 -0
  119. package/src/_esm/core/EVM/EVM.js +39 -0
  120. package/src/_esm/core/EVM/EVM.js.map +1 -0
  121. package/src/_esm/core/EVM/EVMStepExecutor.js +329 -0
  122. package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -0
  123. package/{dist/types → src/_esm/core/EVM}/abi.js +1 -0
  124. package/src/_esm/core/EVM/abi.js.map +1 -0
  125. package/{dist/execution → src/_esm/core/EVM}/checkAllowance.js +14 -5
  126. package/src/_esm/core/EVM/checkAllowance.js.map +1 -0
  127. package/{dist/allowance → src/_esm/core/EVM}/getAllowance.js +19 -6
  128. package/src/_esm/core/EVM/getAllowance.js.map +1 -0
  129. package/src/_esm/core/EVM/getENSAddress.js +17 -0
  130. package/src/_esm/core/EVM/getENSAddress.js.map +1 -0
  131. package/{dist/balance/getBalance.js → src/_esm/core/EVM/getEVMBalance.js} +10 -12
  132. package/src/_esm/core/EVM/getEVMBalance.js.map +1 -0
  133. package/{dist/execution → src/_esm/core/EVM}/multisig.js +5 -6
  134. package/src/_esm/core/EVM/multisig.js.map +1 -0
  135. package/src/_esm/core/EVM/publicClient.js +46 -0
  136. package/src/_esm/core/EVM/publicClient.js.map +1 -0
  137. package/{dist/allowance → src/_esm/core/EVM}/setAllowance.js +23 -4
  138. package/src/_esm/core/EVM/setAllowance.js.map +1 -0
  139. package/{dist/execution → src/_esm/core/EVM}/switchChain.js +6 -4
  140. package/src/_esm/core/EVM/switchChain.js.map +1 -0
  141. package/src/_esm/core/EVM/types.js +6 -0
  142. package/src/_esm/core/EVM/types.js.map +1 -0
  143. package/{dist/utils/getMaxPriorityFeePerGas.js → src/_esm/core/EVM/utils.js} +12 -1
  144. package/src/_esm/core/EVM/utils.js.map +1 -0
  145. package/src/_esm/core/Solana/KeypairWalletAdapter.js +92 -0
  146. package/src/_esm/core/Solana/KeypairWalletAdapter.js.map +1 -0
  147. package/src/_esm/core/Solana/Solana.js +34 -0
  148. package/src/_esm/core/Solana/Solana.js.map +1 -0
  149. package/src/_esm/core/Solana/SolanaStepExecutor.js +214 -0
  150. package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -0
  151. package/src/_esm/core/Solana/connection.js +20 -0
  152. package/src/_esm/core/Solana/connection.js.map +1 -0
  153. package/src/_esm/core/Solana/getSNSAddress.js +26 -0
  154. package/src/_esm/core/Solana/getSNSAddress.js.map +1 -0
  155. package/src/_esm/core/Solana/getSolanaBalance.js +56 -0
  156. package/src/_esm/core/Solana/getSolanaBalance.js.map +1 -0
  157. package/src/_esm/core/Solana/isAddress.js +11 -0
  158. package/src/_esm/core/Solana/isAddress.js.map +1 -0
  159. package/src/_esm/core/Solana/types.js +7 -0
  160. package/src/_esm/core/Solana/types.js.map +1 -0
  161. package/src/_esm/core/StatusManager.js +204 -0
  162. package/src/_esm/core/StatusManager.js.map +1 -0
  163. package/{dist/execution → src/_esm/core}/checkBalance.js +4 -3
  164. package/src/_esm/core/checkBalance.js.map +1 -0
  165. package/src/_esm/core/execution.js +176 -0
  166. package/src/_esm/core/execution.js.map +1 -0
  167. package/src/_esm/core/executionState.js +26 -0
  168. package/src/_esm/core/executionState.js.map +1 -0
  169. package/src/_esm/core/index.js +4 -0
  170. package/src/_esm/core/index.js.map +1 -0
  171. package/src/_esm/core/prepareRestart.js +19 -0
  172. package/src/_esm/core/prepareRestart.js.map +1 -0
  173. package/src/_esm/core/provider.js +11 -0
  174. package/src/_esm/core/provider.js.map +1 -0
  175. package/src/_esm/core/rpc.js +14 -0
  176. package/src/_esm/core/rpc.js.map +1 -0
  177. package/{dist/execution → src/_esm/core}/stepComparison.js +6 -4
  178. package/src/_esm/core/stepComparison.js.map +1 -0
  179. package/src/_esm/core/types.js +2 -0
  180. package/src/_esm/core/types.js.map +1 -0
  181. package/{dist/execution → src/_esm/core}/utils.js +4 -3
  182. package/src/_esm/core/utils.js.map +1 -0
  183. package/{dist/execution → src/_esm/core}/waitForReceivingTransaction.js +11 -9
  184. package/src/_esm/core/waitForReceivingTransaction.js.map +1 -0
  185. package/src/_esm/createConfig.js +30 -0
  186. package/src/_esm/createConfig.js.map +1 -0
  187. package/{dist → src/_esm}/helpers.js +6 -30
  188. package/src/_esm/helpers.js.map +1 -0
  189. package/src/_esm/index.js +17 -0
  190. package/src/_esm/index.js.map +1 -0
  191. package/src/_esm/package.json +1 -0
  192. package/{dist → src/_esm}/request.js +14 -10
  193. package/src/_esm/request.js.map +1 -0
  194. package/src/_esm/services/api.js +378 -0
  195. package/src/_esm/services/api.js.map +1 -0
  196. package/src/_esm/services/balance.js +65 -0
  197. package/src/_esm/services/balance.js.map +1 -0
  198. package/src/_esm/services/getNameServiceAddress.js +25 -0
  199. package/src/_esm/services/getNameServiceAddress.js.map +1 -0
  200. package/{dist → src/_esm}/typeguards.js +1 -0
  201. package/src/_esm/typeguards.js.map +1 -0
  202. package/src/_esm/types/index.js +2 -0
  203. package/src/_esm/types/index.js.map +1 -0
  204. package/src/_esm/types/internal.js +2 -0
  205. package/src/_esm/types/internal.js.map +1 -0
  206. package/src/_esm/utils/base64ToUint8Array.js +10 -0
  207. package/src/_esm/utils/base64ToUint8Array.js.map +1 -0
  208. package/{dist → src/_esm}/utils/errors.js +26 -0
  209. package/src/_esm/utils/errors.js.map +1 -0
  210. package/src/_esm/utils/getTransactionMessage.js +28 -0
  211. package/src/_esm/utils/getTransactionMessage.js.map +1 -0
  212. package/src/_esm/utils/index.js +6 -0
  213. package/src/_esm/utils/index.js.map +1 -0
  214. package/{dist → src/_esm}/utils/median.js +1 -0
  215. package/src/_esm/utils/median.js.map +1 -0
  216. package/src/_esm/utils/parseBackendError.js +24 -0
  217. package/src/_esm/utils/parseBackendError.js.map +1 -0
  218. package/{dist → src/_esm}/utils/parseError.js +6 -53
  219. package/src/_esm/utils/parseError.js.map +1 -0
  220. package/{dist → src/_esm}/utils/utils.js +2 -1
  221. package/src/_esm/utils/utils.js.map +1 -0
  222. package/src/_esm/version.js +3 -0
  223. package/src/_esm/version.js.map +1 -0
  224. package/src/_types/config.d.ts +15 -0
  225. package/src/_types/config.d.ts.map +1 -0
  226. package/{dist/cjs → src/_types}/constants.d.ts +2 -4
  227. package/src/_types/constants.d.ts.map +1 -0
  228. package/src/_types/core/BaseStepExecutor.d.ts +13 -0
  229. package/src/_types/core/BaseStepExecutor.d.ts.map +1 -0
  230. package/src/_types/core/EVM/EVM.d.ts +3 -0
  231. package/src/_types/core/EVM/EVM.d.ts.map +1 -0
  232. package/src/_types/core/EVM/EVMStepExecutor.d.ts +17 -0
  233. package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -0
  234. package/{dist/cjs/types → src/_types/core/EVM}/abi.d.ts +1 -0
  235. package/src/_types/core/EVM/abi.d.ts.map +1 -0
  236. package/src/_types/core/EVM/checkAllowance.d.ts +6 -0
  237. package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -0
  238. package/{dist/cjs/allowance → src/_types/core/EVM}/getAllowance.d.ts +15 -1
  239. package/src/_types/core/EVM/getAllowance.d.ts.map +1 -0
  240. package/src/_types/core/EVM/getENSAddress.d.ts +2 -0
  241. package/src/_types/core/EVM/getENSAddress.d.ts.map +1 -0
  242. package/src/_types/core/EVM/getEVMBalance.d.ts +3 -0
  243. package/src/_types/core/EVM/getEVMBalance.d.ts.map +1 -0
  244. package/src/_types/core/EVM/multisig.d.ts +6 -0
  245. package/src/_types/core/EVM/multisig.d.ts.map +1 -0
  246. package/src/_types/core/EVM/publicClient.d.ts +8 -0
  247. package/src/_types/core/EVM/publicClient.d.ts.map +1 -0
  248. package/src/_types/core/EVM/setAllowance.d.ts +25 -0
  249. package/src/_types/core/EVM/setAllowance.d.ts.map +1 -0
  250. package/{dist/execution → src/_types/core/EVM}/switchChain.d.ts +4 -4
  251. package/src/_types/core/EVM/switchChain.d.ts.map +1 -0
  252. package/src/_types/core/EVM/types.d.ts +55 -0
  253. package/src/_types/core/EVM/types.d.ts.map +1 -0
  254. package/src/_types/core/EVM/utils.d.ts +10 -0
  255. package/src/_types/core/EVM/utils.d.ts.map +1 -0
  256. package/src/_types/core/Solana/KeypairWalletAdapter.d.ts +28 -0
  257. package/src/_types/core/Solana/KeypairWalletAdapter.d.ts.map +1 -0
  258. package/src/_types/core/Solana/Solana.d.ts +3 -0
  259. package/src/_types/core/Solana/Solana.d.ts.map +1 -0
  260. package/src/_types/core/Solana/SolanaStepExecutor.d.ts +13 -0
  261. package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -0
  262. package/src/_types/core/Solana/connection.d.ts +8 -0
  263. package/src/_types/core/Solana/connection.d.ts.map +1 -0
  264. package/src/_types/core/Solana/getSNSAddress.d.ts +2 -0
  265. package/src/_types/core/Solana/getSNSAddress.d.ts.map +1 -0
  266. package/src/_types/core/Solana/getSolanaBalance.d.ts +3 -0
  267. package/src/_types/core/Solana/getSolanaBalance.d.ts.map +1 -0
  268. package/src/_types/core/Solana/isAddress.d.ts +2 -0
  269. package/src/_types/core/Solana/isAddress.d.ts.map +1 -0
  270. package/src/_types/core/Solana/types.d.ts +11 -0
  271. package/src/_types/core/Solana/types.d.ts.map +1 -0
  272. package/{dist/cjs/execution → src/_types/core}/StatusManager.d.ts +14 -28
  273. package/src/_types/core/StatusManager.d.ts.map +1 -0
  274. package/{dist/cjs/execution → src/_types/core}/checkBalance.d.ts +1 -0
  275. package/src/_types/core/checkBalance.d.ts.map +1 -0
  276. package/src/_types/core/execution.d.ts +42 -0
  277. package/src/_types/core/execution.d.ts.map +1 -0
  278. package/src/_types/core/executionState.d.ts +17 -0
  279. package/src/_types/core/executionState.d.ts.map +1 -0
  280. package/src/_types/core/index.d.ts +4 -0
  281. package/src/_types/core/index.d.ts.map +1 -0
  282. package/src/_types/core/prepareRestart.d.ts +3 -0
  283. package/src/_types/core/prepareRestart.d.ts.map +1 -0
  284. package/src/_types/core/provider.d.ts +3 -0
  285. package/src/_types/core/provider.d.ts.map +1 -0
  286. package/src/_types/core/rpc.d.ts +4 -0
  287. package/src/_types/core/rpc.d.ts.map +1 -0
  288. package/{dist/execution → src/_types/core}/stepComparison.d.ts +5 -3
  289. package/src/_types/core/stepComparison.d.ts.map +1 -0
  290. package/src/_types/core/types.d.ts +81 -0
  291. package/src/_types/core/types.d.ts.map +1 -0
  292. package/{dist/execution → src/_types/core}/utils.d.ts +3 -2
  293. package/src/_types/core/utils.d.ts.map +1 -0
  294. package/{dist/cjs/execution → src/_types/core}/waitForReceivingTransaction.d.ts +2 -1
  295. package/src/_types/core/waitForReceivingTransaction.d.ts.map +1 -0
  296. package/src/_types/createConfig.d.ts +4 -0
  297. package/src/_types/createConfig.d.ts.map +1 -0
  298. package/{dist/cjs → src/_types}/helpers.d.ts +3 -9
  299. package/src/_types/helpers.d.ts.map +1 -0
  300. package/src/_types/index.d.ts +18 -0
  301. package/src/_types/index.d.ts.map +1 -0
  302. package/{dist → src/_types}/request.d.ts +1 -0
  303. package/src/_types/request.d.ts.map +1 -0
  304. package/src/_types/services/api.d.ts +89 -0
  305. package/src/_types/services/api.d.ts.map +1 -0
  306. package/src/_types/services/balance.d.ts +30 -0
  307. package/src/_types/services/balance.d.ts.map +1 -0
  308. package/src/_types/services/getNameServiceAddress.d.ts +3 -0
  309. package/src/_types/services/getNameServiceAddress.d.ts.map +1 -0
  310. package/{dist/cjs → src/_types}/typeguards.d.ts +1 -0
  311. package/src/_types/typeguards.d.ts.map +1 -0
  312. package/src/_types/types/index.d.ts +2 -0
  313. package/src/_types/types/index.d.ts.map +1 -0
  314. package/{dist → src/_types}/types/internal.d.ts +14 -15
  315. package/src/_types/types/internal.d.ts.map +1 -0
  316. package/src/_types/utils/base64ToUint8Array.d.ts +2 -0
  317. package/src/_types/utils/base64ToUint8Array.d.ts.map +1 -0
  318. package/{dist/cjs → src/_types}/utils/errors.d.ts +3 -1
  319. package/src/_types/utils/errors.d.ts.map +1 -0
  320. package/src/_types/utils/getTransactionMessage.d.ts +4 -0
  321. package/src/_types/utils/getTransactionMessage.d.ts.map +1 -0
  322. package/src/_types/utils/index.d.ts +6 -0
  323. package/src/_types/utils/index.d.ts.map +1 -0
  324. package/{dist/cjs → src/_types}/utils/median.d.ts +1 -0
  325. package/src/_types/utils/median.d.ts.map +1 -0
  326. package/src/_types/utils/parseBackendError.d.ts +3 -0
  327. package/src/_types/utils/parseBackendError.d.ts.map +1 -0
  328. package/{dist → src/_types}/utils/parseError.d.ts +2 -4
  329. package/src/_types/utils/parseError.d.ts.map +1 -0
  330. package/{dist → src/_types}/utils/utils.d.ts +1 -0
  331. package/src/_types/utils/utils.d.ts.map +1 -0
  332. package/src/_types/version.d.ts +3 -0
  333. package/src/_types/version.d.ts.map +1 -0
  334. package/src/config.ts +91 -0
  335. package/src/constants.ts +4 -0
  336. package/src/core/BaseStepExecutor.ts +40 -0
  337. package/src/core/EVM/EVM.ts +47 -0
  338. package/src/core/EVM/EVMStepExecutor.ts +500 -0
  339. package/src/core/EVM/abi.ts +47 -0
  340. package/src/core/EVM/checkAllowance.ts +168 -0
  341. package/src/core/EVM/getAllowance.ts +144 -0
  342. package/src/core/EVM/getENSAddress.ts +18 -0
  343. package/src/core/EVM/getEVMBalance.ts +118 -0
  344. package/src/core/EVM/multisig.ts +53 -0
  345. package/src/core/EVM/publicClient.ts +54 -0
  346. package/src/core/EVM/setAllowance.ts +143 -0
  347. package/src/core/EVM/switchChain.ts +77 -0
  348. package/src/core/EVM/types.ts +73 -0
  349. package/src/core/EVM/utils.ts +48 -0
  350. package/src/core/Solana/KeypairWalletAdapter.ts +100 -0
  351. package/src/core/Solana/Solana.ts +41 -0
  352. package/src/core/Solana/SolanaStepExecutor.ts +331 -0
  353. package/src/core/Solana/connection.ts +20 -0
  354. package/src/core/Solana/getSNSAddress.ts +33 -0
  355. package/src/core/Solana/getSolanaBalance.ts +72 -0
  356. package/src/core/Solana/isAddress.ts +10 -0
  357. package/src/core/Solana/types.ts +17 -0
  358. package/src/core/StatusManager.ts +233 -0
  359. package/src/core/checkBalance.ts +48 -0
  360. package/src/core/execution.ts +214 -0
  361. package/src/core/executionState.ts +44 -0
  362. package/src/core/index.ts +3 -0
  363. package/src/core/prepareRestart.ts +26 -0
  364. package/src/core/provider.ts +12 -0
  365. package/src/core/rpc.ts +15 -0
  366. package/src/core/stepComparison.ts +51 -0
  367. package/src/core/types.ts +118 -0
  368. package/src/core/utils.ts +108 -0
  369. package/src/core/waitForReceivingTransaction.ts +74 -0
  370. package/src/createConfig.ts +35 -0
  371. package/src/helpers.ts +69 -0
  372. package/src/index.ts +24 -0
  373. package/src/request.ts +79 -0
  374. package/src/services/api.ts +509 -0
  375. package/src/services/balance.ts +93 -0
  376. package/src/services/getNameServiceAddress.ts +30 -0
  377. package/src/typeguards.ts +89 -0
  378. package/src/types/index.ts +1 -0
  379. package/src/types/internal.ts +62 -0
  380. package/src/utils/base64ToUint8Array.ts +9 -0
  381. package/src/utils/errors.ts +232 -0
  382. package/src/utils/getTransactionMessage.ts +46 -0
  383. package/src/utils/index.ts +5 -0
  384. package/src/utils/median.ts +11 -0
  385. package/src/utils/parseBackendError.ts +50 -0
  386. package/src/utils/parseError.ts +210 -0
  387. package/src/utils/utils.ts +48 -0
  388. package/src/version.ts +2 -0
  389. package/dist/LiFi.d.ts +0 -178
  390. package/dist/LiFi.js +0 -253
  391. package/dist/allowance/getAllowance.d.ts +0 -6
  392. package/dist/allowance/index.d.ts +0 -3
  393. package/dist/allowance/index.js +0 -3
  394. package/dist/allowance/setAllowance.d.ts +0 -6
  395. package/dist/allowance/types.d.ts +0 -27
  396. package/dist/allowance/types.js +0 -1
  397. package/dist/balance/getBalance.d.ts +0 -2
  398. package/dist/balance/getTokenBalance.d.ts +0 -8
  399. package/dist/balance/getTokenBalance.js +0 -27
  400. package/dist/balance/index.d.ts +0 -2
  401. package/dist/balance/index.js +0 -2
  402. package/dist/cjs/LiFi.d.ts +0 -178
  403. package/dist/cjs/LiFi.js +0 -283
  404. package/dist/cjs/allowance/index.d.ts +0 -3
  405. package/dist/cjs/allowance/index.js +0 -19
  406. package/dist/cjs/allowance/setAllowance.d.ts +0 -6
  407. package/dist/cjs/allowance/types.d.ts +0 -27
  408. package/dist/cjs/balance/getBalance.d.ts +0 -2
  409. package/dist/cjs/balance/getTokenBalance.d.ts +0 -8
  410. package/dist/cjs/balance/getTokenBalance.js +0 -33
  411. package/dist/cjs/balance/index.d.ts +0 -2
  412. package/dist/cjs/balance/index.js +0 -18
  413. package/dist/cjs/connectors.d.ts +0 -8
  414. package/dist/cjs/connectors.js +0 -72
  415. package/dist/cjs/execution/BaseStepExecutor.d.ts +0 -12
  416. package/dist/cjs/execution/BaseStepExecutor.js +0 -27
  417. package/dist/cjs/execution/EVMStepExecutor.d.ts +0 -13
  418. package/dist/cjs/execution/EVMStepExecutor.js +0 -292
  419. package/dist/cjs/execution/RouteExecutionManager.d.ts +0 -60
  420. package/dist/cjs/execution/RouteExecutionManager.js +0 -204
  421. package/dist/cjs/execution/StatusManager.js +0 -171
  422. package/dist/cjs/execution/StepExecutionManager.d.ts +0 -7
  423. package/dist/cjs/execution/StepExecutionManager.js +0 -272
  424. package/dist/cjs/execution/checkAllowance.d.ts +0 -5
  425. package/dist/cjs/execution/index.d.ts +0 -2
  426. package/dist/cjs/execution/index.js +0 -18
  427. package/dist/cjs/execution/multisig.d.ts +0 -4
  428. package/dist/cjs/execution/prepareRestart.d.ts +0 -2
  429. package/dist/cjs/execution/prepareRestart.js +0 -65
  430. package/dist/cjs/execution/stepComparison.d.ts +0 -15
  431. package/dist/cjs/execution/stepComparison.js +0 -37
  432. package/dist/cjs/execution/switchChain.d.ts +0 -22
  433. package/dist/cjs/execution/switchChain.js +0 -55
  434. package/dist/cjs/execution/types.d.ts +0 -82
  435. package/dist/cjs/execution/types.js +0 -2
  436. package/dist/cjs/execution/utils.d.ts +0 -12
  437. package/dist/cjs/helpers.js +0 -84
  438. package/dist/cjs/index.d.ts +0 -9
  439. package/dist/cjs/index.js +0 -30
  440. package/dist/cjs/providers/EVM.d.ts +0 -10
  441. package/dist/cjs/providers/EVM.js +0 -34
  442. package/dist/cjs/providers/Solana.d.ts +0 -9
  443. package/dist/cjs/providers/Solana.js +0 -38
  444. package/dist/cjs/providers/index.d.ts +0 -1
  445. package/dist/cjs/providers/index.js +0 -17
  446. package/dist/cjs/providers/types.d.ts +0 -12
  447. package/dist/cjs/providers/types.js +0 -8
  448. package/dist/cjs/request.d.ts +0 -9
  449. package/dist/cjs/services/ApiService.d.ts +0 -16
  450. package/dist/cjs/services/ApiService.js +0 -323
  451. package/dist/cjs/services/ChainsService.d.ts +0 -11
  452. package/dist/cjs/services/ChainsService.js +0 -40
  453. package/dist/cjs/services/ConfigService.d.ts +0 -26
  454. package/dist/cjs/services/ConfigService.js +0 -104
  455. package/dist/cjs/types/index.d.ts +0 -2
  456. package/dist/cjs/types/index.js +0 -18
  457. package/dist/cjs/types/internal.d.ts +0 -60
  458. package/dist/cjs/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  459. package/dist/cjs/utils/index.d.ts +0 -5
  460. package/dist/cjs/utils/index.js +0 -21
  461. package/dist/cjs/utils/parseError.d.ts +0 -37
  462. package/dist/cjs/utils/parseError.js +0 -154
  463. package/dist/cjs/utils/utils.d.ts +0 -10
  464. package/dist/cjs/version.d.ts +0 -2
  465. package/dist/connectors.d.ts +0 -8
  466. package/dist/connectors.js +0 -41
  467. package/dist/constants.d.ts +0 -6
  468. package/dist/execution/BaseStepExecutor.d.ts +0 -12
  469. package/dist/execution/BaseStepExecutor.js +0 -23
  470. package/dist/execution/EVMStepExecutor.d.ts +0 -13
  471. package/dist/execution/EVMStepExecutor.js +0 -285
  472. package/dist/execution/RouteExecutionManager.d.ts +0 -60
  473. package/dist/execution/RouteExecutionManager.js +0 -200
  474. package/dist/execution/StatusManager.d.ts +0 -68
  475. package/dist/execution/StatusManager.js +0 -167
  476. package/dist/execution/StepExecutionManager.d.ts +0 -7
  477. package/dist/execution/StepExecutionManager.js +0 -265
  478. package/dist/execution/checkAllowance.d.ts +0 -5
  479. package/dist/execution/checkBalance.d.ts +0 -2
  480. package/dist/execution/index.d.ts +0 -2
  481. package/dist/execution/index.js +0 -2
  482. package/dist/execution/multisig.d.ts +0 -4
  483. package/dist/execution/prepareRestart.d.ts +0 -2
  484. package/dist/execution/prepareRestart.js +0 -61
  485. package/dist/execution/types.d.ts +0 -82
  486. package/dist/execution/types.js +0 -1
  487. package/dist/execution/waitForReceivingTransaction.d.ts +0 -3
  488. package/dist/helpers.d.ts +0 -18
  489. package/dist/index.d.ts +0 -9
  490. package/dist/index.js +0 -9
  491. package/dist/providers/EVM.d.ts +0 -10
  492. package/dist/providers/EVM.js +0 -29
  493. package/dist/providers/Solana.d.ts +0 -9
  494. package/dist/providers/Solana.js +0 -33
  495. package/dist/providers/index.d.ts +0 -1
  496. package/dist/providers/index.js +0 -1
  497. package/dist/providers/types.d.ts +0 -12
  498. package/dist/providers/types.js +0 -5
  499. package/dist/services/ApiService.d.ts +0 -16
  500. package/dist/services/ApiService.js +0 -321
  501. package/dist/services/ChainsService.d.ts +0 -11
  502. package/dist/services/ChainsService.js +0 -33
  503. package/dist/services/ConfigService.d.ts +0 -26
  504. package/dist/services/ConfigService.js +0 -100
  505. package/dist/typeguards.d.ts +0 -4
  506. package/dist/types/abi.d.ts +0 -5
  507. package/dist/types/index.d.ts +0 -2
  508. package/dist/types/index.js +0 -2
  509. package/dist/types/internal.js +0 -1
  510. package/dist/utils/errors.d.ts +0 -107
  511. package/dist/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  512. package/dist/utils/index.d.ts +0 -5
  513. package/dist/utils/index.js +0 -5
  514. package/dist/utils/median.d.ts +0 -1
  515. package/dist/version.d.ts +0 -2
  516. package/dist/version.js +0 -2
@@ -1,154 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseBackendError = exports.parseError = exports.getTransactionFailedMessage = exports.getTransactionNotSentMessage = void 0;
4
- const eth_rpc_errors_1 = require("eth-rpc-errors");
5
- const viem_1 = require("viem");
6
- const helpers_1 = require("../helpers");
7
- const ChainsService_1 = require("../services/ChainsService");
8
- const errors_1 = require("./errors");
9
- /**
10
- * Available MetaMask error codes:
11
- *
12
- * export const errorCodes: ErrorCodes = {
13
- rpc: {
14
- invalidInput: -32000,
15
- resourceNotFound: -32001,
16
- resourceUnavailable: -32002,
17
- transactionRejected: -32003,
18
- methodNotSupported: -32004,
19
- limitExceeded: -32005,
20
- parse: -32700,
21
- invalidRequest: -32600,
22
- methodNotFound: -32601,
23
- invalidParams: -32602,
24
- internal: -32603,
25
- },
26
- provider: {
27
- userRejectedRequest: 4001,
28
- unauthorized: 4100,
29
- unsupportedMethod: 4200,
30
- disconnected: 4900,
31
- chainDisconnected: 4901,
32
- },
33
- };
34
- *
35
- * For more information about error codes supported by metamask check
36
- * https://github.com/MetaMask/eth-rpc-errors
37
- * https://eips.ethereum.org/EIPS/eip-1474#error-codes
38
- * https://eips.ethereum.org/EIPS/eip-1193#provider-errors
39
- */
40
- const getTransactionNotSentMessage = async (step, process) => {
41
- let transactionNotSend = 'Transaction was not sent, your funds are still in your wallet';
42
- // add information about funds if available
43
- if (step) {
44
- const chainService = ChainsService_1.ChainsService.getInstance();
45
- const chain = await chainService.getChainById(step.action.fromChainId);
46
- transactionNotSend += ` (${(0, viem_1.formatUnits)(BigInt(step.action.fromAmount), step.action.fromToken.decimals)} ${step.action.fromToken.symbol} on ${chain.name})`;
47
- }
48
- transactionNotSend +=
49
- ", please retry.<br/>If it still doesn't work, it is safe to delete this transfer and start a new one.";
50
- // add transaction explorer link if available
51
- transactionNotSend +=
52
- process && process.txLink
53
- ? `<br>You can check the failed transaction&nbsp;<a href="${process.txLink}" target="_blank" rel="nofollow noreferrer">here</a>.`
54
- : '';
55
- return transactionNotSend;
56
- };
57
- exports.getTransactionNotSentMessage = getTransactionNotSentMessage;
58
- const getTransactionFailedMessage = async (step, txLink) => {
59
- const chainsService = ChainsService_1.ChainsService.getInstance();
60
- const chain = await chainsService.getChainById(step.action.toChainId);
61
- const baseString = `It appears that your transaction may not have been successful.
62
- However, to confirm this, please check your ${chain.name} wallet for ${step.action.toToken.symbol}.`;
63
- return txLink
64
- ? `${baseString}
65
- You can also check the&nbsp;<a href="${txLink}" target="_blank" rel="nofollow noreferrer">block explorer</a> for more information.`
66
- : baseString;
67
- };
68
- exports.getTransactionFailedMessage = getTransactionFailedMessage;
69
- const parseError = async (e, step, process) => {
70
- if (e instanceof errors_1.LiFiError) {
71
- return e;
72
- }
73
- const errorCode = e.code || e.cause?.code;
74
- switch (errorCode) {
75
- case errors_1.EthersErrorType.CallExecption:
76
- const defaultErrorMessage = await (0, exports.getTransactionNotSentMessage)(step, process);
77
- try {
78
- if (!step?.action.fromChainId) {
79
- throw new Error('fromChainId is not defined.');
80
- }
81
- const response = await (0, helpers_1.fetchTxErrorDetails)(e.transactionHash, step?.action.fromChainId);
82
- const errorMessage = response?.error_message ?? e.reason;
83
- const isAllowanceError = response?.error_message?.includes(errors_1.EthersErrorMessage.ERC20Allowance) || e.reason?.includes(errors_1.EthersErrorMessage.ERC20Allowance);
84
- if (isAllowanceError) {
85
- return new errors_1.TransactionError(errors_1.LiFiErrorCode.AllowanceRequired, e.reason, errorMessage, e.stack);
86
- }
87
- // Error messages other than allowance error will be handled in catch block
88
- throw new Error(e);
89
- }
90
- catch (error) {
91
- return new errors_1.ProviderError(errors_1.LiFiErrorCode.TransactionFailed, e.reason, defaultErrorMessage, e.stack);
92
- }
93
- case errors_1.EthersErrorType.InsufficientFunds:
94
- return new errors_1.TransactionError(errors_1.LiFiErrorCode.InsufficientFunds, e.message, await (0, exports.getTransactionNotSentMessage)(step, process), e.stack);
95
- case errors_1.EthersErrorType.ActionRejected:
96
- case errors_1.MetaMaskProviderErrorCode.userRejectedRequest:
97
- return new errors_1.TransactionError(errors_1.LiFiErrorCode.SignatureRejected, e.message, await (0, exports.getTransactionNotSentMessage)(step, process), e.stack);
98
- case errors_1.LiFiErrorCode.TransactionUnprepared:
99
- return new errors_1.TransactionError(errors_1.LiFiErrorCode.TransactionUnprepared, e.message, await (0, exports.getTransactionNotSentMessage)(step, process), e.stack);
100
- case errors_1.LiFiErrorCode.ValidationError:
101
- return new errors_1.TransactionError(errors_1.LiFiErrorCode.ValidationError, e.message, e.htmlMessage);
102
- case errors_1.LiFiErrorCode.TransactionCanceled:
103
- return new errors_1.TransactionError(errors_1.LiFiErrorCode.TransactionCanceled, e.message, e.htmlMessage);
104
- case errors_1.LiFiErrorCode.ExchangeRateUpdateCanceled:
105
- return new errors_1.TransactionError(errors_1.LiFiErrorCode.ExchangeRateUpdateCanceled, e.message, e.htmlMessage);
106
- default: {
107
- if (errorCode && typeof errorCode === 'number') {
108
- if (Object.values(eth_rpc_errors_1.errorCodes.rpc).includes(errorCode)) {
109
- // rpc errors
110
- // underpriced errors are sent as internal errors, so we need to parse the message manually
111
- if (errorCode === eth_rpc_errors_1.errorCodes.rpc.internal &&
112
- (e.message?.includes(errors_1.EthersErrorMessage.Underpriced) ||
113
- e.message?.includes(errors_1.EthersErrorMessage.LowReplacementFee))) {
114
- return new errors_1.RPCError(errors_1.LiFiErrorCode.TransactionUnderpriced, errors_1.ErrorMessage.TransactionUnderpriced, await (0, exports.getTransactionNotSentMessage)(step, process), e.stack);
115
- }
116
- if (e.message?.includes(errors_1.EthersErrorMessage.LowGas) ||
117
- e.message?.includes(errors_1.EthersErrorMessage.OutOfGas)) {
118
- return new errors_1.TransactionError(errors_1.LiFiErrorCode.GasLimitError, errors_1.ErrorMessage.GasLimitLow, await (0, exports.getTransactionNotSentMessage)(step, process), e.stack);
119
- }
120
- return new errors_1.RPCError(errorCode, (0, eth_rpc_errors_1.getMessageFromCode)(errorCode), await (0, exports.getTransactionNotSentMessage)(step, process), e.stack);
121
- }
122
- // provider errors
123
- if (Object.values(eth_rpc_errors_1.errorCodes.provider).includes(errorCode)) {
124
- return new errors_1.ProviderError(errorCode, (0, eth_rpc_errors_1.getMessageFromCode)(errorCode), await (0, exports.getTransactionNotSentMessage)(step, process), e.stack);
125
- }
126
- }
127
- return new errors_1.UnknownError(errors_1.LiFiErrorCode.InternalError, e.message || errors_1.ErrorMessage.UnknownError, undefined, e.stack);
128
- }
129
- }
130
- };
131
- exports.parseError = parseError;
132
- const parseBackendError = async (e) => {
133
- let data;
134
- try {
135
- data = await e.response?.json();
136
- }
137
- catch (error) {
138
- // ignore
139
- }
140
- if (e.response?.status === 400) {
141
- return new errors_1.ValidationError(data?.message || e.response?.statusText, undefined, e.stack);
142
- }
143
- if (e.response?.status === 404) {
144
- return new errors_1.NotFoundError(data?.message || e.response?.statusText, undefined, e.stack);
145
- }
146
- if (e.response?.status === 409) {
147
- return new errors_1.SlippageError(data?.message || e.response?.statusText, errors_1.ErrorMessage.SlippageError, e.stack);
148
- }
149
- if (e.response?.status === 500) {
150
- return new errors_1.ServerError(data?.message || e.response?.statusText, undefined, e.stack);
151
- }
152
- return new errors_1.ServerError(errors_1.ErrorMessage.Default, undefined, e.stack);
153
- };
154
- exports.parseBackendError = parseBackendError;
@@ -1,10 +0,0 @@
1
- export declare const wait: (ms: number) => Promise<undefined>;
2
- /**
3
- * Repeatedly calls a given asynchronous function until it resolves with a value
4
- * @param toRepeat The function that should be repeated
5
- * @param timeout The timeout in milliseconds between retries, defaults to 5000
6
- * @returns The result of the toRepeat function
7
- */
8
- export declare const repeatUntilDone: <T>(toRepeat: () => Promise<T | undefined>, timeout?: number) => Promise<T>;
9
- export declare const isZeroAddress: (address: string) => boolean;
10
- export declare const isNativeTokenAddress: (address: string) => boolean;
@@ -1,2 +0,0 @@
1
- export declare const name = "@lifi/sdk";
2
- export declare const version = "3.0.0-alpha.9";
@@ -1,8 +0,0 @@
1
- import type { ChainId } from '@lifi/types';
2
- import type { PublicClient } from 'viem';
3
- import type { Chain } from 'viem/chains';
4
- export declare const getChainById: (chainId: ChainId) => Chain | undefined;
5
- export declare const getRpcUrl: (chainId: ChainId) => Promise<string>;
6
- export declare const getRpcUrls: (chainId: ChainId) => Promise<string[]>;
7
- export declare const getPublicClient: (chainId: number) => Promise<PublicClient>;
8
- export declare const getMulticallAddress: (chainId: ChainId) => Promise<string | undefined>;
@@ -1,41 +0,0 @@
1
- import { createPublicClient, fallback, http } from 'viem';
2
- import * as chains from 'viem/chains'; // TODO: optimize using BE chains
3
- import { ConfigService } from './services/ConfigService';
4
- import { ServerError } from './utils/errors';
5
- // cached providers
6
- const publicClients = {};
7
- export const getChainById = (chainId) => {
8
- return Object.values(chains).find((chain) => chain.id === chainId);
9
- };
10
- // RPC Urls
11
- export const getRpcUrl = async (chainId) => {
12
- const rpcUrls = await getRpcUrls(chainId);
13
- return rpcUrls[0];
14
- };
15
- export const getRpcUrls = async (chainId) => {
16
- const configService = ConfigService.getInstance();
17
- const config = await configService.getConfigAsync();
18
- return config.rpcs[chainId];
19
- };
20
- export const getPublicClient = async (chainId) => {
21
- if (!publicClients[chainId]) {
22
- const urls = await getRpcUrls(chainId);
23
- const fallbackTransports = urls.map((url) => http(url, {
24
- batch: true,
25
- }));
26
- publicClients[chainId] = createPublicClient({
27
- chain: getChainById(chainId),
28
- transport: fallback(fallbackTransports),
29
- });
30
- }
31
- if (!publicClients[chainId]) {
32
- throw new ServerError(`Unable to configure provider for chain ${chainId}`);
33
- }
34
- return publicClients[chainId];
35
- };
36
- // Multicall
37
- export const getMulticallAddress = async (chainId) => {
38
- const configService = ConfigService.getInstance();
39
- const config = await configService.getConfigAsync();
40
- return config.multicallAddresses[chainId];
41
- };
@@ -1,6 +0,0 @@
1
- export declare const AddressZero = "0x0000000000000000000000000000000000000000";
2
- export declare const AlternativeAddressZero = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
3
- /**
4
- * Cronos require bigger multicall chunks than default 1024 (1 KB)
5
- */
6
- export declare const MulticallBatchSize = 16384;
@@ -1,12 +0,0 @@
1
- import type { LiFiStep } from '@lifi/types';
2
- import type { StatusManager } from './StatusManager';
3
- import type { InteractionSettings, InternalExecutionSettings, StepExecutorOptions } from './types';
4
- export declare abstract class BaseStepExecutor {
5
- settings: InternalExecutionSettings;
6
- statusManager: StatusManager;
7
- allowUserInteraction: boolean;
8
- allowExecution: boolean;
9
- constructor(options: StepExecutorOptions);
10
- setInteraction: (settings?: InteractionSettings) => void;
11
- abstract executeStep(step: LiFiStep): Promise<LiFiStep>;
12
- }
@@ -1,23 +0,0 @@
1
- // Please be careful when changing the defaults as it may break the behavior (e.g., background execution)
2
- const defaultInteractionSettings = {
3
- allowInteraction: true,
4
- allowUpdates: true,
5
- allowExecution: true,
6
- };
7
- export class BaseStepExecutor {
8
- constructor(options) {
9
- this.allowUserInteraction = true;
10
- this.allowExecution = true;
11
- this.setInteraction = (settings) => {
12
- const interactionSettings = {
13
- ...defaultInteractionSettings,
14
- ...settings,
15
- };
16
- this.allowUserInteraction = interactionSettings.allowInteraction;
17
- this.statusManager.allowUpdates(interactionSettings.allowUpdates);
18
- this.allowExecution = interactionSettings.allowExecution;
19
- };
20
- this.statusManager = options.statusManager;
21
- this.settings = options.settings;
22
- }
23
- }
@@ -1,13 +0,0 @@
1
- import type { LiFiStep } from '@lifi/types';
2
- import type { WalletClient } from 'viem';
3
- import { BaseStepExecutor } from './BaseStepExecutor';
4
- import type { StepExecutorOptions } from './types';
5
- export interface EVMStepExecutorOptions extends StepExecutorOptions {
6
- walletClient: WalletClient;
7
- }
8
- export declare class EVMStepExecutor extends BaseStepExecutor {
9
- walletClient: WalletClient;
10
- constructor(options: EVMStepExecutorOptions);
11
- checkChain: () => never;
12
- executeStep: (step: LiFiStep) => Promise<LiFiStep>;
13
- }
@@ -1,285 +0,0 @@
1
- import { publicActions } from 'viem';
2
- import ApiService from '../services/ApiService';
3
- import { ChainsService } from '../services/ChainsService';
4
- import { ConfigService } from '../services/ConfigService';
5
- import { getMaxPriorityFeePerGas } from '../utils';
6
- import { LiFiErrorCode, TransactionError, ValidationError, } from '../utils/errors';
7
- import { getTransactionFailedMessage, parseError } from '../utils/parseError';
8
- import { isZeroAddress } from '../utils/utils';
9
- import { BaseStepExecutor } from './BaseStepExecutor';
10
- import { checkAllowance } from './checkAllowance';
11
- import { checkBalance } from './checkBalance';
12
- import { updateMultisigRouteProcess } from './multisig';
13
- import { stepComparison } from './stepComparison';
14
- import { switchChain } from './switchChain';
15
- import { getSubstatusMessage } from './utils';
16
- import { waitForReceivingTransaction } from './waitForReceivingTransaction';
17
- export class EVMStepExecutor extends BaseStepExecutor {
18
- constructor(options) {
19
- super(options);
20
- // TODO: add checkChain method and update wallet client inside executors
21
- // This can come in handy when we execute multiple routes simultaneously and
22
- // should be sure that we are on the right chain when waiting for transactions.
23
- this.checkChain = () => {
24
- throw new Error('checkChain is not implemented.');
25
- };
26
- this.executeStep = async (step) => {
27
- // Make sure that the chain is still correct
28
- // Find if it's bridging and the step is waiting for a transaction on the receiving chain
29
- const recievingChainProcess = step.execution?.process.find((process) => process.type === 'RECEIVING_CHAIN');
30
- // If the step is waiting for a transaction on the receiving chain, we do not switch the chain
31
- // All changes are already done from the source chain
32
- // Return the step
33
- if (recievingChainProcess?.substatus !== 'WAIT_DESTINATION_TRANSACTION' ||
34
- !recievingChainProcess) {
35
- const updatedWalletClient = await switchChain(this.walletClient, this.statusManager, step, this.settings.switchChainHook, this.allowUserInteraction);
36
- if (!updatedWalletClient) {
37
- // Chain switch was not successful, stop execution here
38
- return step;
39
- }
40
- this.walletClient = updatedWalletClient;
41
- }
42
- const client = this.walletClient.extend(publicActions);
43
- const config = ConfigService.getInstance().getConfig();
44
- const isMultisigWalletClient = !!config.multisig?.isMultisigWalletClient;
45
- const multisigBatchTransactions = [];
46
- const shouldBatchTransactions = config.multisig?.shouldBatchTransactions &&
47
- !!config.multisig.sendBatchTransaction;
48
- step.execution = this.statusManager.initExecutionObject(step);
49
- const chainsService = ChainsService.getInstance();
50
- const fromChain = await chainsService.getChainById(step.action.fromChainId);
51
- const toChain = await chainsService.getChainById(step.action.toChainId);
52
- const isBridgeExecution = fromChain.id !== toChain.id;
53
- const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP';
54
- // STEP 1: Check allowance
55
- const existingProcess = step.execution.process.find((p) => p.type === currentProcessType);
56
- // Check token approval only if fromToken is not the native token => no approval needed in that case
57
- const checkForAllowance = !existingProcess?.txHash &&
58
- !isZeroAddress(step.action.fromToken.address) &&
59
- (shouldBatchTransactions || !isMultisigWalletClient);
60
- if (checkForAllowance) {
61
- const data = await checkAllowance(client, step, this.statusManager, this.settings, fromChain, this.allowUserInteraction, shouldBatchTransactions);
62
- if (data) {
63
- // allowance doesn't need value
64
- const baseTransaction = {
65
- to: step.action.fromToken.address,
66
- data,
67
- };
68
- multisigBatchTransactions.push(baseTransaction);
69
- }
70
- }
71
- // STEP 2: Get transaction
72
- let process = this.statusManager.findOrCreateProcess(step, currentProcessType);
73
- if (process.status !== 'DONE') {
74
- const multisigProcess = step.execution.process.find((p) => !!p.multisigTxHash);
75
- try {
76
- if (isMultisigWalletClient && multisigProcess) {
77
- const multisigTxHash = multisigProcess.multisigTxHash;
78
- if (!multisigTxHash) {
79
- throw new ValidationError('Multisig internal transaction hash is undefined.');
80
- }
81
- await updateMultisigRouteProcess(multisigTxHash, step, this.statusManager, process.type, fromChain);
82
- }
83
- let txHash;
84
- if (process.txHash) {
85
- // Make sure that the chain is still correct
86
- const updatedWalletClient = await switchChain(this.walletClient, this.statusManager, step, this.settings.switchChainHook, this.allowUserInteraction);
87
- if (!updatedWalletClient) {
88
- // Chain switch was not successful, stop execution here
89
- return step;
90
- }
91
- this.walletClient = updatedWalletClient;
92
- // Load exiting transaction
93
- txHash = process.txHash;
94
- }
95
- else {
96
- process = this.statusManager.updateProcess(step, process.type, 'STARTED');
97
- // Check balance
98
- await checkBalance(client.account.address, step);
99
- // Create new transaction
100
- if (!step.transactionRequest) {
101
- const updatedStep = await ApiService.getStepTransaction(step);
102
- const comparedStep = await stepComparison(this.statusManager, step, updatedStep, this.settings, this.allowUserInteraction);
103
- step = {
104
- ...comparedStep,
105
- execution: step.execution,
106
- };
107
- }
108
- if (!step.transactionRequest) {
109
- throw new TransactionError(LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
110
- }
111
- // STEP 3: Send the transaction
112
- // Make sure that the chain is still correct
113
- const updatedWalletClient = await switchChain(this.walletClient, this.statusManager, step, this.settings.switchChainHook, this.allowUserInteraction);
114
- if (!updatedWalletClient) {
115
- // Chain switch was not successful, stop execution here
116
- return step;
117
- }
118
- this.walletClient = updatedWalletClient;
119
- process = this.statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED');
120
- if (!this.allowUserInteraction) {
121
- return step;
122
- }
123
- let transactionRequest = {
124
- to: step.transactionRequest.to,
125
- from: step.transactionRequest.from,
126
- data: step.transactionRequest.data,
127
- value: step.transactionRequest.value
128
- ? BigInt(step.transactionRequest.value)
129
- : undefined,
130
- gas: step.transactionRequest.gasLimit
131
- ? BigInt(step.transactionRequest.gasLimit)
132
- : undefined,
133
- // gasPrice: step.transactionRequest.gasPrice
134
- // ? BigInt(step.transactionRequest.gasPrice as string)
135
- // : undefined,
136
- // maxFeePerGas: step.transactionRequest.maxFeePerGas
137
- // ? BigInt(step.transactionRequest.maxFeePerGas as string)
138
- // : undefined,
139
- maxPriorityFeePerGas: this.walletClient.account?.type === 'local'
140
- ? await getMaxPriorityFeePerGas(client)
141
- : step.transactionRequest.maxPriorityFeePerGas
142
- ? BigInt(step.transactionRequest.maxPriorityFeePerGas)
143
- : undefined,
144
- };
145
- if (this.settings.updateTransactionRequestHook) {
146
- const customizedTransactionRequest = await this.settings.updateTransactionRequestHook({
147
- requestType: 'transaction',
148
- ...transactionRequest,
149
- });
150
- transactionRequest = {
151
- ...transactionRequest,
152
- ...customizedTransactionRequest,
153
- };
154
- }
155
- if (shouldBatchTransactions &&
156
- config.multisig?.sendBatchTransaction) {
157
- if (transactionRequest.to && transactionRequest.data) {
158
- const populatedTransaction = {
159
- value: transactionRequest.value,
160
- to: transactionRequest.to,
161
- data: transactionRequest.data,
162
- };
163
- multisigBatchTransactions.push(populatedTransaction);
164
- txHash = await config.multisig?.sendBatchTransaction(multisigBatchTransactions);
165
- }
166
- else {
167
- throw new TransactionError(LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
168
- }
169
- }
170
- else {
171
- txHash = await this.walletClient.sendTransaction({
172
- to: transactionRequest.to,
173
- account: this.walletClient.account,
174
- data: transactionRequest.data,
175
- gas: transactionRequest.gas,
176
- gasPrice: transactionRequest.gasPrice,
177
- maxFeePerGas: transactionRequest.maxFeePerGas,
178
- maxPriorityFeePerGas: transactionRequest.maxPriorityFeePerGas,
179
- chain: null,
180
- });
181
- }
182
- // STEP 4: Wait for the transaction
183
- if (isMultisigWalletClient) {
184
- process = this.statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED', {
185
- multisigTxHash: txHash,
186
- });
187
- }
188
- else {
189
- process = this.statusManager.updateProcess(step, process.type, 'PENDING', {
190
- txHash: txHash,
191
- txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
192
- });
193
- }
194
- }
195
- let replacementReason;
196
- const transactionReceipt = await client.waitForTransactionReceipt({
197
- hash: txHash,
198
- onReplaced: (response) => {
199
- replacementReason = response.reason;
200
- this.statusManager.updateProcess(step, process.type, 'PENDING', {
201
- txHash: response.transaction.hash,
202
- txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${response.transaction.hash}`,
203
- });
204
- },
205
- });
206
- if (replacementReason === 'cancelled') {
207
- throw new TransactionError(LiFiErrorCode.TransactionCanceled, 'User canceled transaction.');
208
- }
209
- // if it's multisig wallet client and the process is in ACTION_REQUIRED
210
- // then signatures are still needed
211
- if (isMultisigWalletClient && process.status === 'ACTION_REQUIRED') {
212
- await updateMultisigRouteProcess(transactionReceipt.transactionHash, step, this.statusManager, process.type, fromChain);
213
- }
214
- if (!isMultisigWalletClient) {
215
- process = this.statusManager.updateProcess(step, process.type, 'PENDING', {
216
- txHash: transactionReceipt.transactionHash,
217
- txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${transactionReceipt.transactionHash}`,
218
- });
219
- }
220
- if (isBridgeExecution) {
221
- process = this.statusManager.updateProcess(step, process.type, 'DONE');
222
- }
223
- }
224
- catch (e) {
225
- const error = await parseError(e, step, process);
226
- process = this.statusManager.updateProcess(step, process.type, 'FAILED', {
227
- error: {
228
- message: error.message,
229
- htmlMessage: error.htmlMessage,
230
- code: error.code,
231
- },
232
- });
233
- this.statusManager.updateExecution(step, 'FAILED');
234
- throw error;
235
- }
236
- }
237
- // STEP 5: Wait for the receiving chain
238
- const processTxHash = process.txHash;
239
- if (isBridgeExecution) {
240
- process = this.statusManager.findOrCreateProcess(step, 'RECEIVING_CHAIN', 'PENDING');
241
- }
242
- let statusResponse;
243
- try {
244
- if (!processTxHash) {
245
- throw new Error('Transaction hash is undefined.');
246
- }
247
- statusResponse = (await waitForReceivingTransaction(processTxHash, this.statusManager, process.type, step));
248
- const statusReceiving = statusResponse.receiving;
249
- process = this.statusManager.updateProcess(step, process.type, 'DONE', {
250
- substatus: statusResponse.substatus,
251
- substatusMessage: statusResponse.substatusMessage ||
252
- getSubstatusMessage(statusResponse.status, statusResponse.substatus),
253
- txHash: statusReceiving?.txHash,
254
- txLink: `${toChain.metamask.blockExplorerUrls[0]}tx/${statusReceiving?.txHash}`,
255
- });
256
- this.statusManager.updateExecution(step, 'DONE', {
257
- fromAmount: statusResponse.sending.amount,
258
- toAmount: statusReceiving?.amount,
259
- toToken: statusReceiving?.token,
260
- gasAmount: statusResponse.sending.gasAmount,
261
- gasAmountUSD: statusResponse.sending.gasAmountUSD,
262
- gasPrice: statusResponse.sending.gasPrice,
263
- gasToken: statusResponse.sending.gasToken,
264
- gasUsed: statusResponse.sending.gasUsed,
265
- });
266
- }
267
- catch (e) {
268
- const htmlMessage = await getTransactionFailedMessage(step, process.txLink);
269
- process = this.statusManager.updateProcess(step, process.type, 'FAILED', {
270
- error: {
271
- code: LiFiErrorCode.TransactionFailed,
272
- message: 'Failed while waiting for receiving chain.',
273
- htmlMessage,
274
- },
275
- });
276
- this.statusManager.updateExecution(step, 'FAILED');
277
- console.warn(e);
278
- throw e;
279
- }
280
- // DONE
281
- return step;
282
- };
283
- this.walletClient = options.walletClient;
284
- }
285
- }
@@ -1,60 +0,0 @@
1
- import type { Route } from '@lifi/types';
2
- import type { ProviderType, SDKProvider } from '../providers';
3
- import { ConfigService } from '../services/ConfigService';
4
- import type { SDKOptions } from '../types';
5
- import type { ExecutionSettings } from './types';
6
- export declare class RouteExecutionManager {
7
- private executionDictionary;
8
- private executionPromiseDictionary;
9
- protected configService: ConfigService;
10
- private providers?;
11
- constructor(options: SDKOptions);
12
- /**
13
- * Execute a route.
14
- * @param route - The route that should be executed. Cannot be an active route.
15
- * @param settings - An object containing settings and callbacks.
16
- * @returns The executed route.
17
- * @throws {LiFiError} Throws a LiFiError if the execution fails.
18
- */
19
- executeRoute: (route: Route, settings?: ExecutionSettings) => Promise<Route>;
20
- /**
21
- * Resume the execution of a route that has been stopped or had an error while executing.
22
- * @param route - The route that is to be executed. Cannot be an active route.
23
- * @param settings - An object containing settings and callbacks.
24
- * @returns The executed route.
25
- * @throws {LiFiError} Throws a LiFiError if the execution fails.
26
- */
27
- resumeRoute: (route: Route, settings?: ExecutionSettings) => Promise<Route>;
28
- private executeSteps;
29
- /**
30
- * Updates route execution to background or foreground state.
31
- * @param route - A route that is currently in execution.
32
- * @param settings - An object with execution settings.
33
- */
34
- updateRouteExecution: (route: Route, settings: Pick<ExecutionSettings, 'executeInBackground'>) => void;
35
- /**
36
- * Update the ExecutionSettings for an active route.
37
- * @param settings - An object with execution settings.
38
- * @param route - The active route that gets the new execution settings.
39
- * @throws {ValidationError} Throws a ValidationError if parameters are invalid.
40
- */
41
- updateExecutionSettings: (settings: ExecutionSettings, route: Route) => void;
42
- /**
43
- * Stops the execution of an active route.
44
- * @param route - A route that is currently in execution.
45
- * @returns The stopped route.
46
- */
47
- stopExecution: (route: Route) => Route;
48
- /**
49
- * Get the list of active routes.
50
- * @returns A list of routes.
51
- */
52
- getActiveRoutes: () => Route[];
53
- /**
54
- * Return the current route information for given route. The route has to be active.
55
- * @param route - A route object.
56
- * @returns The updated route.
57
- */
58
- getActiveRoute: (route: Route) => Route | undefined;
59
- getProvider: (type: ProviderType) => SDKProvider | undefined;
60
- }