@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,204 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RouteExecutionManager = void 0;
4
- const ConfigService_1 = require("../services/ConfigService");
5
- const errors_1 = require("../utils/errors");
6
- const StatusManager_1 = require("./StatusManager");
7
- const prepareRestart_1 = require("./prepareRestart");
8
- class RouteExecutionManager {
9
- constructor(options) {
10
- this.executionDictionary = {};
11
- this.executionPromiseDictionary = {};
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
- this.executeRoute = async (route, settings) => {
20
- // Deep clone to prevent side effects
21
- const clonedRoute = structuredClone(route);
22
- let executionPromise = this.executionPromiseDictionary[clonedRoute.id];
23
- // Check if route is already running
24
- if (executionPromise) {
25
- return executionPromise;
26
- }
27
- executionPromise = this.executeSteps(clonedRoute, settings);
28
- this.executionPromiseDictionary[clonedRoute.id] = executionPromise;
29
- return executionPromise;
30
- };
31
- /**
32
- * Resume the execution of a route that has been stopped or had an error while executing.
33
- * @param route - The route that is to be executed. Cannot be an active route.
34
- * @param settings - An object containing settings and callbacks.
35
- * @returns The executed route.
36
- * @throws {LiFiError} Throws a LiFiError if the execution fails.
37
- */
38
- this.resumeRoute = async (route, settings) => {
39
- // Deep clone to prevent side effects
40
- const clonedRoute = structuredClone(route);
41
- const execution = this.executionDictionary[clonedRoute.id];
42
- if (execution) {
43
- const executionHalted = execution.executors.some((executor) => !executor.allowExecution);
44
- if (!executionHalted) {
45
- // Check if we want to resume route execution in the background
46
- this.updateRouteExecution(route, {
47
- executeInBackground: settings?.executeInBackground,
48
- });
49
- const executionPromise = this.executionPromiseDictionary[clonedRoute.id];
50
- return executionPromise ?? clonedRoute;
51
- }
52
- }
53
- await (0, prepareRestart_1.prepareRestart)(clonedRoute);
54
- const executionPromise = this.executeSteps(clonedRoute, settings);
55
- this.executionPromiseDictionary[clonedRoute.id] = executionPromise;
56
- return executionPromise;
57
- };
58
- this.executeSteps = async (route, settings) => {
59
- const config = this.configService.getConfig();
60
- const execution = {
61
- route,
62
- executors: [],
63
- settings: { ...config.defaultExecutionSettings, ...settings },
64
- };
65
- this.executionDictionary[route.id] = execution;
66
- const statusManager = new StatusManager_1.StatusManager(route, execution.settings, (route) => {
67
- if (this.executionDictionary[route.id]) {
68
- execution.route = route;
69
- }
70
- });
71
- // Loop over steps and execute them
72
- for (let index = 0; index < route.steps.length; index++) {
73
- const execution = this.executionDictionary[route.id];
74
- // Check if execution has stopped in the meantime
75
- if (!execution) {
76
- break;
77
- }
78
- const step = route.steps[index];
79
- const previousStep = route.steps[index - 1];
80
- // Check if the step is already done
81
- //
82
- if (step.execution?.status === 'DONE') {
83
- continue;
84
- }
85
- // Update amount using output of previous execution. In the future this should be handled by calling `updateRoute`
86
- if (previousStep?.execution?.toAmount) {
87
- step.action.fromAmount = previousStep.execution.toAmount;
88
- }
89
- try {
90
- const provider = this.providers?.find((provider) => provider.isProviderStep(step));
91
- if (!provider) {
92
- throw new Error('SDK Execution Provider not found.');
93
- }
94
- const stepExecutor = await provider.getStepExecutor({
95
- statusManager,
96
- settings: execution.settings,
97
- });
98
- execution.executors.push(stepExecutor);
99
- // Check if we want to execute this step in the background
100
- this.updateRouteExecution(route, execution.settings);
101
- const executedStep = await stepExecutor.executeStep(step);
102
- // We may reach this point if user interaction isn't allowed. We want to stop execution until we resume it
103
- if (executedStep.execution?.status !== 'DONE') {
104
- this.stopExecution(route);
105
- }
106
- // Execution stopped during the current step, we don't want to continue to the next step so we return already
107
- if (stepExecutor.allowExecution) {
108
- return route;
109
- }
110
- }
111
- catch (e) {
112
- this.stopExecution(route);
113
- throw e;
114
- }
115
- }
116
- // Clean up after the execution
117
- delete this.executionDictionary[route.id];
118
- return route;
119
- };
120
- /**
121
- * Updates route execution to background or foreground state.
122
- * @param route - A route that is currently in execution.
123
- * @param settings - An object with execution settings.
124
- */
125
- this.updateRouteExecution = (route, settings) => {
126
- const execution = this.executionDictionary[route.id];
127
- if (!execution) {
128
- return;
129
- }
130
- for (const executor of execution.executors) {
131
- executor.setInteraction({
132
- allowInteraction: !settings.executeInBackground,
133
- allowUpdates: true,
134
- });
135
- }
136
- // Update active route settings so we know what the current state of execution is
137
- execution.settings = {
138
- ...execution.settings,
139
- ...settings,
140
- };
141
- };
142
- /**
143
- * Update the ExecutionSettings for an active route.
144
- * @param settings - An object with execution settings.
145
- * @param route - The active route that gets the new execution settings.
146
- * @throws {ValidationError} Throws a ValidationError if parameters are invalid.
147
- */
148
- this.updateExecutionSettings = (settings, route) => {
149
- const execution = this.executionDictionary[route.id];
150
- if (!execution) {
151
- throw new errors_1.ValidationError("Can't set ExecutionSettings for the inactive route.");
152
- }
153
- const config = this.configService.getConfig();
154
- execution.settings = {
155
- ...config.defaultExecutionSettings,
156
- ...settings,
157
- };
158
- };
159
- /**
160
- * Stops the execution of an active route.
161
- * @param route - A route that is currently in execution.
162
- * @returns The stopped route.
163
- */
164
- this.stopExecution = (route) => {
165
- const execution = this.executionDictionary[route.id];
166
- if (!execution) {
167
- return route;
168
- }
169
- for (const executor of execution.executors) {
170
- executor.setInteraction({
171
- allowInteraction: false,
172
- allowUpdates: false,
173
- allowExecution: false,
174
- });
175
- }
176
- delete this.executionDictionary[route.id];
177
- return route;
178
- };
179
- /**
180
- * Get the list of active routes.
181
- * @returns A list of routes.
182
- */
183
- this.getActiveRoutes = () => {
184
- return Object.values(this.executionDictionary)
185
- .map((dict) => dict?.route)
186
- .filter(Boolean);
187
- };
188
- /**
189
- * Return the current route information for given route. The route has to be active.
190
- * @param route - A route object.
191
- * @returns The updated route.
192
- */
193
- this.getActiveRoute = (route) => {
194
- return this.executionDictionary[route.id]?.route;
195
- };
196
- this.getProvider = (type) => {
197
- return this.providers?.find((provider) => provider.type === type);
198
- };
199
- this.configService = ConfigService_1.ConfigService.getInstance();
200
- this.configService.updateConfig(options);
201
- this.providers = options.providers;
202
- }
203
- }
204
- exports.RouteExecutionManager = RouteExecutionManager;
@@ -1,171 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StatusManager = void 0;
4
- const types_1 = require("@lifi/types");
5
- const utils_1 = require("./utils");
6
- /**
7
- * Manages status updates of a route and provides various functions for tracking processes
8
- * @param {Route} route The route this StatusManger belongs to.
9
- * @param {InternalExecutionSettings} settings The ExecutionSettings for this route.
10
- * @param {InternalUpdateRouteCallback} internalUpdateRouteCallback Internal callback to propage route changes.
11
- * @returns {StatusManager} An instance of StatusManager.
12
- */
13
- class StatusManager {
14
- constructor(route, settings, internalUpdateRouteCallback) {
15
- this.shouldUpdate = true;
16
- /**
17
- * Initializes the execution object of a Step.
18
- * @param step The current step in execution
19
- * @returns The initialized execution object for this step and a function to update this step
20
- */
21
- this.initExecutionObject = (step) => {
22
- const currentExecution = step.execution || structuredClone(types_1.emptyExecution);
23
- if (!step.execution) {
24
- step.execution = currentExecution;
25
- step.execution.status = 'PENDING';
26
- this.updateStepInRoute(step);
27
- }
28
- // Change status to PENDING after resuming from FAILED
29
- if (currentExecution.status === 'FAILED') {
30
- currentExecution.status = 'PENDING';
31
- this.updateStepInRoute(step);
32
- }
33
- return currentExecution;
34
- };
35
- /**
36
- * Create and push a new process into the execution.
37
- * @param step The step that should contain the new process.
38
- * @param type Type of the process. Used to identify already existing processes.
39
- * @param status By default created procces is set to the STARTED status. We can override new process with the needed status.
40
- * @returns Returns process.
41
- */
42
- this.findOrCreateProcess = (step, type, status) => {
43
- if (!step.execution?.process) {
44
- throw new Error("Execution hasn't been initialized.");
45
- }
46
- const process = step.execution.process.find((p) => p.type === type);
47
- if (process) {
48
- if (status && process.status !== status) {
49
- process.status = status;
50
- this.updateStepInRoute(step);
51
- }
52
- return process;
53
- }
54
- const newProcess = {
55
- type: type,
56
- startedAt: Date.now(),
57
- message: (0, utils_1.getProcessMessage)(type, status ?? 'STARTED'),
58
- status: status ?? 'STARTED',
59
- };
60
- step.execution.process.push(newProcess);
61
- this.updateStepInRoute(step);
62
- return newProcess;
63
- };
64
- /**
65
- * Update a process object.
66
- * @param step The step where the process should be updated
67
- * @param type The process type to update
68
- * @param status The status the process gets.
69
- * @param [params] Additional parameters to append to the process.
70
- * @returns The update process
71
- */
72
- this.updateProcess = (step, type, status, params) => {
73
- if (!step.execution) {
74
- throw new Error("Can't update an empty step execution.");
75
- }
76
- const currentProcess = step?.execution?.process.find((p) => p.type === type);
77
- if (!currentProcess) {
78
- throw new Error("Can't find a process for the given type.");
79
- }
80
- switch (status) {
81
- case 'CANCELLED':
82
- currentProcess.doneAt = Date.now();
83
- break;
84
- case 'FAILED':
85
- currentProcess.doneAt = Date.now();
86
- step.execution.status = 'FAILED';
87
- break;
88
- case 'DONE':
89
- currentProcess.doneAt = Date.now();
90
- break;
91
- case 'PENDING':
92
- step.execution.status = 'PENDING';
93
- break;
94
- case 'ACTION_REQUIRED':
95
- step.execution.status = 'ACTION_REQUIRED';
96
- break;
97
- default:
98
- break;
99
- }
100
- currentProcess.status = status;
101
- currentProcess.message = (0, utils_1.getProcessMessage)(type, status);
102
- // set extra parameters or overwritte the standard params set in the switch statement
103
- if (params) {
104
- for (const [key, value] of Object.entries(params)) {
105
- currentProcess[key] = value;
106
- }
107
- }
108
- // Sort processes, the ones with DONE status go first
109
- step.execution.process = [
110
- ...step?.execution?.process.filter((process) => process.status === 'DONE'),
111
- ...step?.execution?.process.filter((process) => process.status !== 'DONE'),
112
- ];
113
- this.updateStepInRoute(step); // updates the step in the route
114
- return currentProcess;
115
- };
116
- /**
117
- * Remove a process from the execution
118
- * @param step The step where the process should be removed from
119
- * @param type The process type to remove
120
- */
121
- this.removeProcess = (step, type) => {
122
- if (!step.execution) {
123
- throw new Error("Execution hasn't been initialized.");
124
- }
125
- const index = step.execution.process.findIndex((p) => p.type === type);
126
- step.execution.process.splice(index, 1);
127
- this.updateStepInRoute(step);
128
- };
129
- this.updateStepInRoute = (step) => {
130
- if (!this.shouldUpdate) {
131
- return step;
132
- }
133
- const stepIndex = this.route.steps.findIndex((routeStep) => routeStep.id === step.id);
134
- if (stepIndex === -1) {
135
- throw new Error("Couldn't find a step to update.");
136
- }
137
- this.route.steps[stepIndex] = Object.assign(this.route.steps[stepIndex], step);
138
- this.settings.updateRouteHook(this.route);
139
- this.internalUpdateRouteCallback(this.route);
140
- return this.route.steps[stepIndex];
141
- };
142
- this.route = route;
143
- this.settings = settings;
144
- this.internalUpdateRouteCallback = internalUpdateRouteCallback;
145
- }
146
- /**
147
- * Updates the execution object of a Step.
148
- * @param step The current step in execution
149
- * @param status The status for the execution
150
- * @param receipt Optional. Information about received tokens
151
- * @returns The step with the updated execution object
152
- */
153
- updateExecution(step, status, receipt) {
154
- if (!step.execution) {
155
- throw Error("Can't update empty execution.");
156
- }
157
- step.execution.status = status;
158
- if (receipt) {
159
- step.execution = {
160
- ...step.execution,
161
- ...receipt,
162
- };
163
- }
164
- this.updateStepInRoute(step);
165
- return step;
166
- }
167
- allowUpdates(value) {
168
- this.shouldUpdate = value;
169
- }
170
- }
171
- exports.StatusManager = StatusManager;
@@ -1,7 +0,0 @@
1
- import type { LiFiStep } from '@lifi/types';
2
- import type { ExecutionParams } from './types';
3
- export declare class StepExecutionManager {
4
- allowUserInteraction: boolean;
5
- allowInteraction: (value: boolean) => void;
6
- execute: ({ walletClient, step, statusManager, settings, }: ExecutionParams) => Promise<LiFiStep>;
7
- }
@@ -1,272 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.StepExecutionManager = void 0;
7
- const viem_1 = require("viem");
8
- const ApiService_1 = __importDefault(require("../services/ApiService"));
9
- const ChainsService_1 = require("../services/ChainsService");
10
- const ConfigService_1 = require("../services/ConfigService");
11
- const utils_1 = require("../utils");
12
- const errors_1 = require("../utils/errors");
13
- const parseError_1 = require("../utils/parseError");
14
- const utils_2 = require("../utils/utils");
15
- const checkAllowance_1 = require("./checkAllowance");
16
- const checkBalance_1 = require("./checkBalance");
17
- const multisig_1 = require("./multisig");
18
- const stepComparison_1 = require("./stepComparison");
19
- const switchChain_1 = require("./switchChain");
20
- const utils_3 = require("./utils");
21
- const waitForReceivingTransaction_1 = require("./waitForReceivingTransaction");
22
- class StepExecutionManager {
23
- constructor() {
24
- this.allowUserInteraction = true;
25
- this.allowInteraction = (value) => {
26
- this.allowUserInteraction = value;
27
- };
28
- this.execute = async ({ walletClient, step, statusManager, settings, }) => {
29
- const client = walletClient.extend(viem_1.publicActions);
30
- const config = ConfigService_1.ConfigService.getInstance().getConfig();
31
- const isMultisigWalletClient = !!config.multisig?.isMultisigWalletClient;
32
- const multisigBatchTransactions = [];
33
- const shouldBatchTransactions = config.multisig?.shouldBatchTransactions &&
34
- !!config.multisig.sendBatchTransaction;
35
- step.execution = statusManager.initExecutionObject(step);
36
- const chainsService = ChainsService_1.ChainsService.getInstance();
37
- const fromChain = await chainsService.getChainById(step.action.fromChainId);
38
- const toChain = await chainsService.getChainById(step.action.toChainId);
39
- const isBridgeExecution = fromChain.id !== toChain.id;
40
- const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP';
41
- // STEP 1: Check allowance
42
- const existingProcess = step.execution.process.find((p) => p.type === currentProcessType);
43
- // Check token approval only if fromToken is not the native token => no approval needed in that case
44
- const checkForAllowance = !existingProcess?.txHash &&
45
- !(0, utils_2.isZeroAddress)(step.action.fromToken.address) &&
46
- (shouldBatchTransactions || !isMultisigWalletClient);
47
- if (checkForAllowance) {
48
- const data = await (0, checkAllowance_1.checkAllowance)(client, step, statusManager, settings, fromChain, this.allowUserInteraction, shouldBatchTransactions);
49
- if (data) {
50
- // allowance doesn't need value
51
- const baseTransaction = {
52
- to: step.action.fromToken.address,
53
- data,
54
- };
55
- multisigBatchTransactions.push(baseTransaction);
56
- }
57
- }
58
- // STEP 2: Get transaction
59
- let process = statusManager.findOrCreateProcess(step, currentProcessType);
60
- if (process.status !== 'DONE') {
61
- const multisigProcess = step.execution.process.find((p) => !!p.multisigTxHash);
62
- try {
63
- if (isMultisigWalletClient && multisigProcess) {
64
- const multisigTxHash = multisigProcess.multisigTxHash;
65
- if (!multisigTxHash) {
66
- throw new errors_1.ValidationError('Multisig internal transaction hash is undefined.');
67
- }
68
- await (0, multisig_1.updateMultisigRouteProcess)(multisigTxHash, step, statusManager, process.type, fromChain);
69
- }
70
- let txHash;
71
- if (process.txHash) {
72
- // Make sure that the chain is still correct
73
- const updatedWalletClient = await (0, switchChain_1.switchChain)(walletClient, statusManager, step, settings.switchChainHook, this.allowUserInteraction);
74
- if (!updatedWalletClient) {
75
- // Chain switch was not successful, stop execution here
76
- return step;
77
- }
78
- walletClient = updatedWalletClient;
79
- // Load exiting transaction
80
- txHash = process.txHash;
81
- }
82
- else {
83
- process = statusManager.updateProcess(step, process.type, 'STARTED');
84
- // Check balance
85
- await (0, checkBalance_1.checkBalance)(client.account.address, step);
86
- // Create new transaction
87
- if (!step.transactionRequest) {
88
- const updatedStep = await ApiService_1.default.getStepTransaction(step);
89
- const comparedStep = await (0, stepComparison_1.stepComparison)(statusManager, step, updatedStep, settings, this.allowUserInteraction);
90
- step = {
91
- ...comparedStep,
92
- execution: step.execution,
93
- };
94
- }
95
- if (!step.transactionRequest) {
96
- throw new errors_1.TransactionError(errors_1.LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
97
- }
98
- // STEP 3: Send the transaction
99
- // Make sure that the chain is still correct
100
- const updatedWalletClient = await (0, switchChain_1.switchChain)(walletClient, statusManager, step, settings.switchChainHook, this.allowUserInteraction);
101
- if (!updatedWalletClient) {
102
- // Chain switch was not successful, stop execution here
103
- return step;
104
- }
105
- walletClient = updatedWalletClient;
106
- process = statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED');
107
- if (!this.allowUserInteraction) {
108
- return step;
109
- }
110
- let transactionRequest = {
111
- to: step.transactionRequest.to,
112
- from: step.transactionRequest.from,
113
- data: step.transactionRequest.data,
114
- value: step.transactionRequest.value
115
- ? BigInt(step.transactionRequest.value)
116
- : undefined,
117
- gas: step.transactionRequest.gasLimit
118
- ? BigInt(step.transactionRequest.gasLimit)
119
- : undefined,
120
- // gasPrice: step.transactionRequest.gasPrice
121
- // ? BigInt(step.transactionRequest.gasPrice as string)
122
- // : undefined,
123
- // maxFeePerGas: step.transactionRequest.maxFeePerGas
124
- // ? BigInt(step.transactionRequest.maxFeePerGas as string)
125
- // : undefined,
126
- maxPriorityFeePerGas: walletClient.account?.type === 'local'
127
- ? await (0, utils_1.getMaxPriorityFeePerGas)(client)
128
- : step.transactionRequest.maxPriorityFeePerGas
129
- ? BigInt(step.transactionRequest.maxPriorityFeePerGas)
130
- : undefined,
131
- };
132
- if (settings.updateTransactionRequestHook) {
133
- const customizedTransactionRequest = await settings.updateTransactionRequestHook({
134
- requestType: 'transaction',
135
- ...transactionRequest,
136
- });
137
- transactionRequest = {
138
- ...transactionRequest,
139
- ...customizedTransactionRequest,
140
- };
141
- }
142
- if (shouldBatchTransactions &&
143
- config.multisig?.sendBatchTransaction) {
144
- if (transactionRequest.to && transactionRequest.data) {
145
- const populatedTransaction = {
146
- value: transactionRequest.value,
147
- to: transactionRequest.to,
148
- data: transactionRequest.data,
149
- };
150
- multisigBatchTransactions.push(populatedTransaction);
151
- txHash = await config.multisig?.sendBatchTransaction(multisigBatchTransactions);
152
- }
153
- else {
154
- throw new errors_1.TransactionError(errors_1.LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
155
- }
156
- }
157
- else {
158
- txHash = await walletClient.sendTransaction({
159
- to: transactionRequest.to,
160
- account: walletClient.account,
161
- data: transactionRequest.data,
162
- gas: transactionRequest.gas,
163
- gasPrice: transactionRequest.gasPrice,
164
- maxFeePerGas: transactionRequest.maxFeePerGas,
165
- maxPriorityFeePerGas: transactionRequest.maxPriorityFeePerGas,
166
- chain: null,
167
- });
168
- }
169
- // STEP 4: Wait for the transaction
170
- if (isMultisigWalletClient) {
171
- process = statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED', {
172
- multisigTxHash: txHash,
173
- });
174
- }
175
- else {
176
- process = statusManager.updateProcess(step, process.type, 'PENDING', {
177
- txHash: txHash,
178
- txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
179
- });
180
- }
181
- }
182
- let replacementReason;
183
- const transactionReceipt = await client.waitForTransactionReceipt({
184
- hash: txHash,
185
- onReplaced(response) {
186
- replacementReason = response.reason;
187
- statusManager.updateProcess(step, process.type, 'PENDING', {
188
- txHash: response.transaction.hash,
189
- txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${response.transaction.hash}`,
190
- });
191
- },
192
- });
193
- if (replacementReason === 'cancelled') {
194
- throw new errors_1.TransactionError(errors_1.LiFiErrorCode.TransactionCanceled, 'User canceled transaction.');
195
- }
196
- // if it's multisig wallet client and the process is in ACTION_REQUIRED
197
- // then signatures are still needed
198
- if (isMultisigWalletClient && process.status === 'ACTION_REQUIRED') {
199
- await (0, multisig_1.updateMultisigRouteProcess)(transactionReceipt.transactionHash, step, statusManager, process.type, fromChain);
200
- }
201
- if (!isMultisigWalletClient) {
202
- process = statusManager.updateProcess(step, process.type, 'PENDING', {
203
- txHash: transactionReceipt.transactionHash,
204
- txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${transactionReceipt.transactionHash}`,
205
- });
206
- }
207
- if (isBridgeExecution) {
208
- process = statusManager.updateProcess(step, process.type, 'DONE');
209
- }
210
- }
211
- catch (e) {
212
- const error = await (0, parseError_1.parseError)(e, step, process);
213
- process = statusManager.updateProcess(step, process.type, 'FAILED', {
214
- error: {
215
- message: error.message,
216
- htmlMessage: error.htmlMessage,
217
- code: error.code,
218
- },
219
- });
220
- statusManager.updateExecution(step, 'FAILED');
221
- throw error;
222
- }
223
- }
224
- // STEP 5: Wait for the receiving chain
225
- const processTxHash = process.txHash;
226
- if (isBridgeExecution) {
227
- process = statusManager.findOrCreateProcess(step, 'RECEIVING_CHAIN', 'PENDING');
228
- }
229
- let statusResponse;
230
- try {
231
- if (!processTxHash) {
232
- throw new Error('Transaction hash is undefined.');
233
- }
234
- statusResponse = (await (0, waitForReceivingTransaction_1.waitForReceivingTransaction)(processTxHash, statusManager, process.type, step));
235
- const statusReceiving = statusResponse.receiving;
236
- process = statusManager.updateProcess(step, process.type, 'DONE', {
237
- substatus: statusResponse.substatus,
238
- substatusMessage: statusResponse.substatusMessage ||
239
- (0, utils_3.getSubstatusMessage)(statusResponse.status, statusResponse.substatus),
240
- txHash: statusReceiving?.txHash,
241
- txLink: `${toChain.metamask.blockExplorerUrls[0]}tx/${statusReceiving?.txHash}`,
242
- });
243
- statusManager.updateExecution(step, 'DONE', {
244
- fromAmount: statusResponse.sending.amount,
245
- toAmount: statusReceiving?.amount,
246
- toToken: statusReceiving?.token,
247
- gasAmount: statusResponse.sending.gasAmount,
248
- gasAmountUSD: statusResponse.sending.gasAmountUSD,
249
- gasPrice: statusResponse.sending.gasPrice,
250
- gasToken: statusResponse.sending.gasToken,
251
- gasUsed: statusResponse.sending.gasUsed,
252
- });
253
- }
254
- catch (e) {
255
- const htmlMessage = await (0, parseError_1.getTransactionFailedMessage)(step, process.txLink);
256
- process = statusManager.updateProcess(step, process.type, 'FAILED', {
257
- error: {
258
- code: errors_1.LiFiErrorCode.TransactionFailed,
259
- message: 'Failed while waiting for receiving chain.',
260
- htmlMessage,
261
- },
262
- });
263
- statusManager.updateExecution(step, 'FAILED');
264
- console.warn(e);
265
- throw e;
266
- }
267
- // DONE
268
- return step;
269
- };
270
- }
271
- }
272
- exports.StepExecutionManager = StepExecutionManager;
@@ -1,5 +0,0 @@
1
- import type { Chain, LiFiStep } from '@lifi/types';
2
- import type { Hash, WalletClient } from 'viem';
3
- import type { StatusManager } from '../execution/StatusManager';
4
- import type { InternalExecutionSettings } from './types';
5
- export declare const checkAllowance: (walletClient: WalletClient, step: LiFiStep, statusManager: StatusManager, settings: InternalExecutionSettings, chain: Chain, allowUserInteraction?: boolean, shouldBatchTransactions?: boolean) => Promise<Hash | void>;
@@ -1,2 +0,0 @@
1
- export * from './StatusManager';
2
- export * from './types';