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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) hide show
  1. package/package.json +31 -86
  2. package/src/_cjs/config.js +48 -0
  3. package/src/_cjs/config.js.map +1 -0
  4. package/{dist/cjs → src/_cjs}/constants.js +3 -5
  5. package/src/_cjs/constants.js.map +1 -0
  6. package/src/_cjs/core/BaseStepExecutor.js +55 -0
  7. package/src/_cjs/core/BaseStepExecutor.js.map +1 -0
  8. package/src/_cjs/core/EVM/EVM.js +46 -0
  9. package/src/_cjs/core/EVM/EVM.js.map +1 -0
  10. package/src/_cjs/core/EVM/EVMStepExecutor.js +277 -0
  11. package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -0
  12. package/{dist/cjs/types → src/_cjs/core/EVM}/abi.js +1 -0
  13. package/src/_cjs/core/EVM/abi.js.map +1 -0
  14. package/{dist/cjs/execution → src/_cjs/core/EVM}/checkAllowance.js +12 -12
  15. package/src/_cjs/core/EVM/checkAllowance.js.map +1 -0
  16. package/{dist/cjs/allowance → src/_cjs/core/EVM}/getAllowance.js +13 -17
  17. package/src/_cjs/core/EVM/getAllowance.js.map +1 -0
  18. package/{dist/cjs/balance/getBalance.js → src/_cjs/core/EVM/getEVMBalance.js} +20 -22
  19. package/src/_cjs/core/EVM/getEVMBalance.js.map +1 -0
  20. package/{dist/cjs/execution → src/_cjs/core/EVM}/multisig.js +7 -11
  21. package/src/_cjs/core/EVM/multisig.js.map +1 -0
  22. package/src/_cjs/core/EVM/publicClient.js +35 -0
  23. package/src/_cjs/core/EVM/publicClient.js.map +1 -0
  24. package/src/_cjs/core/EVM/setAllowance.js +71 -0
  25. package/src/_cjs/core/EVM/setAllowance.js.map +1 -0
  26. package/src/_cjs/core/EVM/switchChain.js +37 -0
  27. package/src/_cjs/core/EVM/switchChain.js.map +1 -0
  28. package/src/_cjs/core/EVM/types.js +9 -0
  29. package/src/_cjs/core/EVM/types.js.map +1 -0
  30. package/{dist/cjs/utils/getMaxPriorityFeePerGas.js → src/_cjs/core/EVM/utils.js} +13 -3
  31. package/src/_cjs/core/EVM/utils.js.map +1 -0
  32. package/src/_cjs/core/Solana/Solana.js +44 -0
  33. package/src/_cjs/core/Solana/Solana.js.map +1 -0
  34. package/src/_cjs/core/Solana/SolanaStepExecutor.js +157 -0
  35. package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -0
  36. package/src/_cjs/core/Solana/connection.js +18 -0
  37. package/src/_cjs/core/Solana/connection.js.map +1 -0
  38. package/src/_cjs/core/Solana/getSolanaBalance.js +60 -0
  39. package/src/_cjs/core/Solana/getSolanaBalance.js.map +1 -0
  40. package/src/_cjs/core/Solana/types.js +10 -0
  41. package/src/_cjs/core/Solana/types.js.map +1 -0
  42. package/src/_cjs/core/StatusManager.js +167 -0
  43. package/src/_cjs/core/StatusManager.js.map +1 -0
  44. package/{dist/cjs/execution → src/_cjs/core}/checkBalance.js +5 -5
  45. package/src/_cjs/core/checkBalance.js.map +1 -0
  46. package/src/_cjs/core/execution.js +134 -0
  47. package/src/_cjs/core/execution.js.map +1 -0
  48. package/src/_cjs/core/executionState.js +23 -0
  49. package/src/_cjs/core/executionState.js.map +1 -0
  50. package/src/_cjs/core/index.js +7 -0
  51. package/src/_cjs/core/index.js.map +1 -0
  52. package/src/_cjs/core/prepareRestart.js +23 -0
  53. package/src/_cjs/core/prepareRestart.js.map +1 -0
  54. package/src/_cjs/core/provider.js +15 -0
  55. package/src/_cjs/core/provider.js.map +1 -0
  56. package/src/_cjs/core/stepComparison.js +25 -0
  57. package/src/_cjs/core/stepComparison.js.map +1 -0
  58. package/{dist/cjs/allowance → src/_cjs/core}/types.js +1 -0
  59. package/src/_cjs/core/types.js.map +1 -0
  60. package/{dist/cjs/execution → src/_cjs/core}/utils.js +16 -10
  61. package/src/_cjs/core/utils.js.map +1 -0
  62. package/{dist/cjs/execution → src/_cjs/core}/waitForReceivingTransaction.js +11 -12
  63. package/src/_cjs/core/waitForReceivingTransaction.js.map +1 -0
  64. package/src/_cjs/createConfig.js +50 -0
  65. package/src/_cjs/createConfig.js.map +1 -0
  66. package/src/_cjs/helpers.js +57 -0
  67. package/src/_cjs/helpers.js.map +1 -0
  68. package/src/_cjs/index.js +20 -0
  69. package/src/_cjs/index.js.map +1 -0
  70. package/src/_cjs/package.json +1 -0
  71. package/src/_cjs/request.js +66 -0
  72. package/src/_cjs/request.js.map +1 -0
  73. package/src/_cjs/services/api.js +304 -0
  74. package/src/_cjs/services/api.js.map +1 -0
  75. package/src/_cjs/services/balance.js +49 -0
  76. package/src/_cjs/services/balance.js.map +1 -0
  77. package/{dist/cjs → src/_cjs}/typeguards.js +1 -0
  78. package/src/_cjs/typeguards.js.map +1 -0
  79. package/src/_cjs/types/index.js +5 -0
  80. package/src/_cjs/types/index.js.map +1 -0
  81. package/{dist/cjs/types/internal.types.js → src/_cjs/types/internal.js} +1 -0
  82. package/src/_cjs/types/internal.js.map +1 -0
  83. package/{dist/cjs → src/_cjs}/utils/errors.js +25 -3
  84. package/src/_cjs/utils/errors.js.map +1 -0
  85. package/src/_cjs/utils/getTransactionMessage.js +31 -0
  86. package/src/_cjs/utils/getTransactionMessage.js.map +1 -0
  87. package/src/_cjs/utils/index.js +9 -0
  88. package/src/_cjs/utils/index.js.map +1 -0
  89. package/{dist/cjs → src/_cjs}/utils/median.js +1 -0
  90. package/src/_cjs/utils/median.js.map +1 -0
  91. package/src/_cjs/utils/parseBackendError.js +27 -0
  92. package/src/_cjs/utils/parseBackendError.js.map +1 -0
  93. package/src/_cjs/utils/parseError.js +67 -0
  94. package/src/_cjs/utils/parseError.js.map +1 -0
  95. package/{dist/cjs → src/_cjs}/utils/utils.js +5 -11
  96. package/src/_cjs/utils/utils.js.map +1 -0
  97. package/{dist/cjs → src/_cjs}/version.js +2 -1
  98. package/src/_cjs/version.js.map +1 -0
  99. package/src/_esm/config.js +45 -0
  100. package/src/_esm/config.js.map +1 -0
  101. package/{dist → src/_esm}/constants.js +2 -4
  102. package/src/_esm/constants.js.map +1 -0
  103. package/src/_esm/core/BaseStepExecutor.js +52 -0
  104. package/src/_esm/core/BaseStepExecutor.js.map +1 -0
  105. package/src/_esm/core/EVM/EVM.js +42 -0
  106. package/src/_esm/core/EVM/EVM.js.map +1 -0
  107. package/src/_esm/core/EVM/EVMStepExecutor.js +305 -0
  108. package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -0
  109. package/{dist/types → src/_esm/core/EVM}/abi.js +1 -0
  110. package/src/_esm/core/EVM/abi.js.map +1 -0
  111. package/{dist/execution → src/_esm/core/EVM}/checkAllowance.js +8 -6
  112. package/src/_esm/core/EVM/checkAllowance.js.map +1 -0
  113. package/{dist/allowance → src/_esm/core/EVM}/getAllowance.js +19 -6
  114. package/src/_esm/core/EVM/getAllowance.js.map +1 -0
  115. package/{dist/balance/getBalance.js → src/_esm/core/EVM/getEVMBalance.js} +10 -12
  116. package/src/_esm/core/EVM/getEVMBalance.js.map +1 -0
  117. package/{dist/execution → src/_esm/core/EVM}/multisig.js +5 -6
  118. package/src/_esm/core/EVM/multisig.js.map +1 -0
  119. package/src/_esm/core/EVM/publicClient.js +37 -0
  120. package/src/_esm/core/EVM/publicClient.js.map +1 -0
  121. package/{dist/allowance → src/_esm/core/EVM}/setAllowance.js +46 -11
  122. package/src/_esm/core/EVM/setAllowance.js.map +1 -0
  123. package/{dist/execution → src/_esm/core/EVM}/switchChain.js +5 -3
  124. package/src/_esm/core/EVM/switchChain.js.map +1 -0
  125. package/src/_esm/core/EVM/types.js +6 -0
  126. package/src/_esm/core/EVM/types.js.map +1 -0
  127. package/{dist/utils/getMaxPriorityFeePerGas.js → src/_esm/core/EVM/utils.js} +11 -1
  128. package/src/_esm/core/EVM/utils.js.map +1 -0
  129. package/src/_esm/core/Solana/Solana.js +40 -0
  130. package/src/_esm/core/Solana/Solana.js.map +1 -0
  131. package/src/_esm/core/Solana/SolanaStepExecutor.js +158 -0
  132. package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -0
  133. package/src/_esm/core/Solana/connection.js +19 -0
  134. package/src/_esm/core/Solana/connection.js.map +1 -0
  135. package/src/_esm/core/Solana/getSolanaBalance.js +56 -0
  136. package/src/_esm/core/Solana/getSolanaBalance.js.map +1 -0
  137. package/src/_esm/core/Solana/types.js +7 -0
  138. package/src/_esm/core/Solana/types.js.map +1 -0
  139. package/src/_esm/core/StatusManager.js +203 -0
  140. package/src/_esm/core/StatusManager.js.map +1 -0
  141. package/{dist/execution → src/_esm/core}/checkBalance.js +3 -2
  142. package/src/_esm/core/checkBalance.js.map +1 -0
  143. package/src/_esm/core/execution.js +173 -0
  144. package/src/_esm/core/execution.js.map +1 -0
  145. package/src/_esm/core/executionState.js +20 -0
  146. package/src/_esm/core/executionState.js.map +1 -0
  147. package/src/_esm/core/index.js +4 -0
  148. package/src/_esm/core/index.js.map +1 -0
  149. package/src/_esm/core/prepareRestart.js +64 -0
  150. package/src/_esm/core/prepareRestart.js.map +1 -0
  151. package/src/_esm/core/provider.js +11 -0
  152. package/src/_esm/core/provider.js.map +1 -0
  153. package/{dist/execution → src/_esm/core}/stepComparison.js +7 -5
  154. package/src/_esm/core/stepComparison.js.map +1 -0
  155. package/src/_esm/core/types.js +2 -0
  156. package/src/_esm/core/types.js.map +1 -0
  157. package/{dist/execution → src/_esm/core}/utils.js +14 -0
  158. package/src/_esm/core/utils.js.map +1 -0
  159. package/{dist/execution → src/_esm/core}/waitForReceivingTransaction.js +9 -7
  160. package/src/_esm/core/waitForReceivingTransaction.js.map +1 -0
  161. package/src/_esm/createConfig.js +47 -0
  162. package/src/_esm/createConfig.js.map +1 -0
  163. package/{dist → src/_esm}/helpers.js +5 -17
  164. package/src/_esm/helpers.js.map +1 -0
  165. package/src/_esm/index.js +12 -0
  166. package/src/_esm/index.js.map +1 -0
  167. package/src/_esm/package.json +1 -0
  168. package/{dist → src/_esm}/request.js +23 -13
  169. package/src/_esm/request.js.map +1 -0
  170. package/src/_esm/services/api.js +372 -0
  171. package/src/_esm/services/api.js.map +1 -0
  172. package/src/_esm/services/balance.js +65 -0
  173. package/src/_esm/services/balance.js.map +1 -0
  174. package/{dist → src/_esm}/typeguards.js +1 -0
  175. package/src/_esm/typeguards.js.map +1 -0
  176. package/src/_esm/types/index.js +2 -0
  177. package/src/_esm/types/index.js.map +1 -0
  178. package/src/_esm/types/internal.js +2 -0
  179. package/src/_esm/types/internal.js.map +1 -0
  180. package/{dist → src/_esm}/utils/errors.js +25 -0
  181. package/src/_esm/utils/errors.js.map +1 -0
  182. package/src/_esm/utils/getTransactionMessage.js +28 -0
  183. package/src/_esm/utils/getTransactionMessage.js.map +1 -0
  184. package/src/_esm/utils/index.js +6 -0
  185. package/src/_esm/utils/index.js.map +1 -0
  186. package/{dist → src/_esm}/utils/median.js +1 -0
  187. package/src/_esm/utils/median.js.map +1 -0
  188. package/src/_esm/utils/parseBackendError.js +24 -0
  189. package/src/_esm/utils/parseBackendError.js.map +1 -0
  190. package/{dist → src/_esm}/utils/parseError.js +4 -53
  191. package/src/_esm/utils/parseError.js.map +1 -0
  192. package/{dist → src/_esm}/utils/utils.js +2 -1
  193. package/src/_esm/utils/utils.js.map +1 -0
  194. package/src/_esm/version.js +3 -0
  195. package/src/_esm/version.js.map +1 -0
  196. package/src/_types/config.d.ts +11 -0
  197. package/src/_types/config.d.ts.map +1 -0
  198. package/{dist/cjs → src/_types}/constants.d.ts +2 -4
  199. package/src/_types/constants.d.ts.map +1 -0
  200. package/src/_types/core/BaseStepExecutor.d.ts +13 -0
  201. package/src/_types/core/BaseStepExecutor.d.ts.map +1 -0
  202. package/src/_types/core/EVM/EVM.d.ts +3 -0
  203. package/src/_types/core/EVM/EVM.d.ts.map +1 -0
  204. package/src/_types/core/EVM/EVMStepExecutor.d.ts +16 -0
  205. package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -0
  206. package/{dist/cjs/types → src/_types/core/EVM}/abi.d.ts +1 -0
  207. package/src/_types/core/EVM/abi.d.ts.map +1 -0
  208. package/src/_types/core/EVM/checkAllowance.d.ts +6 -0
  209. package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -0
  210. package/{dist/cjs/allowance → src/_types/core/EVM}/getAllowance.d.ts +15 -1
  211. package/src/_types/core/EVM/getAllowance.d.ts.map +1 -0
  212. package/src/_types/core/EVM/getEVMBalance.d.ts +3 -0
  213. package/src/_types/core/EVM/getEVMBalance.d.ts.map +1 -0
  214. package/src/_types/core/EVM/multisig.d.ts +6 -0
  215. package/src/_types/core/EVM/multisig.d.ts.map +1 -0
  216. package/src/_types/core/EVM/publicClient.d.ts +8 -0
  217. package/src/_types/core/EVM/publicClient.d.ts.map +1 -0
  218. package/src/_types/core/EVM/setAllowance.d.ts +25 -0
  219. package/src/_types/core/EVM/setAllowance.d.ts.map +1 -0
  220. package/{dist/cjs/execution → src/_types/core/EVM}/switchChain.d.ts +5 -4
  221. package/src/_types/core/EVM/switchChain.d.ts.map +1 -0
  222. package/src/_types/core/EVM/types.d.ts +57 -0
  223. package/src/_types/core/EVM/types.d.ts.map +1 -0
  224. package/src/_types/core/EVM/utils.d.ts +5 -0
  225. package/src/_types/core/EVM/utils.d.ts.map +1 -0
  226. package/src/_types/core/Solana/Solana.d.ts +3 -0
  227. package/src/_types/core/Solana/Solana.d.ts.map +1 -0
  228. package/src/_types/core/Solana/SolanaStepExecutor.d.ts +12 -0
  229. package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -0
  230. package/src/_types/core/Solana/connection.d.ts +8 -0
  231. package/src/_types/core/Solana/connection.d.ts.map +1 -0
  232. package/src/_types/core/Solana/getSolanaBalance.d.ts +3 -0
  233. package/src/_types/core/Solana/getSolanaBalance.d.ts.map +1 -0
  234. package/src/_types/core/Solana/types.d.ts +13 -0
  235. package/src/_types/core/Solana/types.d.ts.map +1 -0
  236. package/{dist/cjs/execution → src/_types/core}/StatusManager.d.ts +13 -16
  237. package/src/_types/core/StatusManager.d.ts.map +1 -0
  238. package/src/_types/core/checkBalance.d.ts +3 -0
  239. package/src/_types/core/checkBalance.d.ts.map +1 -0
  240. package/src/_types/core/execution.d.ts +42 -0
  241. package/src/_types/core/execution.d.ts.map +1 -0
  242. package/src/_types/core/executionState.d.ts +15 -0
  243. package/src/_types/core/executionState.d.ts.map +1 -0
  244. package/src/_types/core/index.d.ts +4 -0
  245. package/src/_types/core/index.d.ts.map +1 -0
  246. package/src/_types/core/prepareRestart.d.ts +3 -0
  247. package/src/_types/core/prepareRestart.d.ts.map +1 -0
  248. package/src/_types/core/provider.d.ts +3 -0
  249. package/src/_types/core/provider.d.ts.map +1 -0
  250. package/{dist/execution → src/_types/core}/stepComparison.d.ts +7 -4
  251. package/src/_types/core/stepComparison.d.ts.map +1 -0
  252. package/src/_types/core/types.d.ts +80 -0
  253. package/src/_types/core/types.d.ts.map +1 -0
  254. package/{dist/execution → src/_types/core}/utils.d.ts +5 -2
  255. package/src/_types/core/utils.d.ts.map +1 -0
  256. package/src/_types/core/waitForReceivingTransaction.d.ts +4 -0
  257. package/src/_types/core/waitForReceivingTransaction.d.ts.map +1 -0
  258. package/src/_types/createConfig.d.ts +7 -0
  259. package/src/_types/createConfig.d.ts.map +1 -0
  260. package/{dist → src/_types}/helpers.d.ts +4 -3
  261. package/src/_types/helpers.d.ts.map +1 -0
  262. package/src/_types/index.d.ts +12 -0
  263. package/src/_types/index.d.ts.map +1 -0
  264. package/{dist → src/_types}/request.d.ts +1 -0
  265. package/src/_types/request.d.ts.map +1 -0
  266. package/src/_types/services/api.d.ts +88 -0
  267. package/src/_types/services/api.d.ts.map +1 -0
  268. package/src/_types/services/balance.d.ts +30 -0
  269. package/src/_types/services/balance.d.ts.map +1 -0
  270. package/{dist/cjs → src/_types}/typeguards.d.ts +3 -2
  271. package/src/_types/typeguards.d.ts.map +1 -0
  272. package/src/_types/types/index.d.ts +2 -0
  273. package/src/_types/types/index.d.ts.map +1 -0
  274. package/src/_types/types/internal.d.ts +56 -0
  275. package/src/_types/types/internal.d.ts.map +1 -0
  276. package/{dist → src/_types}/utils/errors.d.ts +1 -0
  277. package/src/_types/utils/errors.d.ts.map +1 -0
  278. package/src/_types/utils/getTransactionMessage.d.ts +4 -0
  279. package/src/_types/utils/getTransactionMessage.d.ts.map +1 -0
  280. package/src/_types/utils/index.d.ts +6 -0
  281. package/src/_types/utils/index.d.ts.map +1 -0
  282. package/{dist/cjs → src/_types}/utils/median.d.ts +1 -0
  283. package/src/_types/utils/median.d.ts.map +1 -0
  284. package/src/_types/utils/parseBackendError.d.ts +3 -0
  285. package/src/_types/utils/parseBackendError.d.ts.map +1 -0
  286. package/{dist → src/_types}/utils/parseError.d.ts +4 -6
  287. package/src/_types/utils/parseError.d.ts.map +1 -0
  288. package/{dist → src/_types}/utils/utils.d.ts +1 -0
  289. package/src/_types/utils/utils.d.ts.map +1 -0
  290. package/src/_types/version.d.ts +3 -0
  291. package/src/_types/version.d.ts.map +1 -0
  292. package/src/config.ts +47 -0
  293. package/src/constants.ts +4 -0
  294. package/src/core/BaseStepExecutor.ts +40 -0
  295. package/src/core/EVM/EVM.ts +50 -0
  296. package/src/core/EVM/EVMStepExecutor.ts +473 -0
  297. package/src/core/EVM/abi.ts +47 -0
  298. package/src/core/EVM/checkAllowance.ts +152 -0
  299. package/src/core/EVM/getAllowance.ts +144 -0
  300. package/src/core/EVM/getEVMBalance.ts +118 -0
  301. package/src/core/EVM/multisig.ts +53 -0
  302. package/src/core/EVM/publicClient.ts +46 -0
  303. package/src/core/EVM/setAllowance.ts +144 -0
  304. package/src/core/EVM/switchChain.ts +76 -0
  305. package/src/core/EVM/types.ts +75 -0
  306. package/src/core/EVM/utils.ts +47 -0
  307. package/src/core/Solana/Solana.ts +46 -0
  308. package/src/core/Solana/SolanaStepExecutor.ts +253 -0
  309. package/src/core/Solana/connection.ts +19 -0
  310. package/src/core/Solana/getSolanaBalance.ts +72 -0
  311. package/src/core/Solana/types.ts +18 -0
  312. package/src/core/StatusManager.ts +243 -0
  313. package/src/core/checkBalance.ts +48 -0
  314. package/src/core/execution.ts +218 -0
  315. package/src/core/executionState.ts +39 -0
  316. package/src/core/index.ts +3 -0
  317. package/src/core/prepareRestart.ts +82 -0
  318. package/src/core/provider.ts +12 -0
  319. package/src/core/stepComparison.ts +51 -0
  320. package/src/core/types.ts +117 -0
  321. package/src/core/utils.ts +122 -0
  322. package/src/core/waitForReceivingTransaction.ts +74 -0
  323. package/src/createConfig.ts +56 -0
  324. package/src/helpers.ts +83 -0
  325. package/src/index.ts +11 -0
  326. package/src/request.ts +79 -0
  327. package/src/services/api.ts +507 -0
  328. package/src/services/balance.ts +93 -0
  329. package/src/typeguards.ts +89 -0
  330. package/src/types/index.ts +1 -0
  331. package/src/types/internal.ts +58 -0
  332. package/src/utils/errors.ts +231 -0
  333. package/src/utils/getTransactionMessage.ts +46 -0
  334. package/src/utils/index.ts +5 -0
  335. package/src/utils/median.ts +11 -0
  336. package/src/utils/parseBackendError.ts +50 -0
  337. package/src/utils/parseError.ts +204 -0
  338. package/src/utils/utils.ts +48 -0
  339. package/src/version.ts +2 -0
  340. package/dist/LiFi.d.ts +0 -171
  341. package/dist/LiFi.js +0 -246
  342. package/dist/allowance/getAllowance.d.ts +0 -6
  343. package/dist/allowance/index.d.ts +0 -3
  344. package/dist/allowance/index.js +0 -3
  345. package/dist/allowance/setAllowance.d.ts +0 -5
  346. package/dist/allowance/types.d.ts +0 -27
  347. package/dist/allowance/types.js +0 -1
  348. package/dist/balance/getBalance.d.ts +0 -2
  349. package/dist/balance/getTokenBalance.d.ts +0 -8
  350. package/dist/balance/getTokenBalance.js +0 -27
  351. package/dist/balance/index.d.ts +0 -2
  352. package/dist/balance/index.js +0 -2
  353. package/dist/cjs/LiFi.d.ts +0 -171
  354. package/dist/cjs/LiFi.js +0 -276
  355. package/dist/cjs/allowance/index.d.ts +0 -3
  356. package/dist/cjs/allowance/index.js +0 -19
  357. package/dist/cjs/allowance/setAllowance.d.ts +0 -5
  358. package/dist/cjs/allowance/setAllowance.js +0 -56
  359. package/dist/cjs/allowance/types.d.ts +0 -27
  360. package/dist/cjs/balance/getBalance.d.ts +0 -2
  361. package/dist/cjs/balance/getTokenBalance.d.ts +0 -8
  362. package/dist/cjs/balance/getTokenBalance.js +0 -33
  363. package/dist/cjs/balance/index.d.ts +0 -2
  364. package/dist/cjs/balance/index.js +0 -18
  365. package/dist/cjs/connectors.d.ts +0 -8
  366. package/dist/cjs/connectors.js +0 -75
  367. package/dist/cjs/execution/RouteExecutionManager.d.ts +0 -59
  368. package/dist/cjs/execution/RouteExecutionManager.js +0 -202
  369. package/dist/cjs/execution/StatusManager.js +0 -171
  370. package/dist/cjs/execution/StepExecutionManager.d.ts +0 -7
  371. package/dist/cjs/execution/StepExecutionManager.js +0 -267
  372. package/dist/cjs/execution/StepExecutor.d.ts +0 -15
  373. package/dist/cjs/execution/StepExecutor.js +0 -62
  374. package/dist/cjs/execution/checkAllowance.d.ts +0 -4
  375. package/dist/cjs/execution/checkBalance.d.ts +0 -2
  376. package/dist/cjs/execution/index.d.ts +0 -1
  377. package/dist/cjs/execution/index.js +0 -17
  378. package/dist/cjs/execution/multisig.d.ts +0 -4
  379. package/dist/cjs/execution/prepareRestart.d.ts +0 -3
  380. package/dist/cjs/execution/prepareRestart.js +0 -65
  381. package/dist/cjs/execution/stepComparison.d.ts +0 -14
  382. package/dist/cjs/execution/stepComparison.js +0 -37
  383. package/dist/cjs/execution/switchChain.js +0 -54
  384. package/dist/cjs/execution/utils.d.ts +0 -12
  385. package/dist/cjs/execution/waitForReceivingTransaction.d.ts +0 -3
  386. package/dist/cjs/helpers.d.ts +0 -18
  387. package/dist/cjs/helpers.js +0 -84
  388. package/dist/cjs/index.d.ts +0 -5
  389. package/dist/cjs/index.js +0 -24
  390. package/dist/cjs/request.d.ts +0 -9
  391. package/dist/cjs/request.js +0 -60
  392. package/dist/cjs/services/ApiService.d.ts +0 -17
  393. package/dist/cjs/services/ApiService.js +0 -326
  394. package/dist/cjs/services/ChainsService.d.ts +0 -11
  395. package/dist/cjs/services/ChainsService.js +0 -39
  396. package/dist/cjs/services/ConfigService.d.ts +0 -23
  397. package/dist/cjs/services/ConfigService.js +0 -101
  398. package/dist/cjs/types/index.d.ts +0 -4
  399. package/dist/cjs/types/index.js +0 -22
  400. package/dist/cjs/types/internal.types.d.ts +0 -142
  401. package/dist/cjs/utils/errors.d.ts +0 -107
  402. package/dist/cjs/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  403. package/dist/cjs/utils/index.d.ts +0 -5
  404. package/dist/cjs/utils/index.js +0 -21
  405. package/dist/cjs/utils/parseError.d.ts +0 -37
  406. package/dist/cjs/utils/parseError.js +0 -157
  407. package/dist/cjs/utils/utils.d.ts +0 -10
  408. package/dist/cjs/version.d.ts +0 -2
  409. package/dist/connectors.d.ts +0 -8
  410. package/dist/connectors.js +0 -41
  411. package/dist/constants.d.ts +0 -6
  412. package/dist/execution/RouteExecutionManager.d.ts +0 -59
  413. package/dist/execution/RouteExecutionManager.js +0 -195
  414. package/dist/execution/StatusManager.d.ts +0 -67
  415. package/dist/execution/StatusManager.js +0 -167
  416. package/dist/execution/StepExecutionManager.d.ts +0 -7
  417. package/dist/execution/StepExecutionManager.js +0 -260
  418. package/dist/execution/StepExecutor.d.ts +0 -15
  419. package/dist/execution/StepExecutor.js +0 -58
  420. package/dist/execution/checkAllowance.d.ts +0 -4
  421. package/dist/execution/checkBalance.d.ts +0 -2
  422. package/dist/execution/index.d.ts +0 -1
  423. package/dist/execution/index.js +0 -1
  424. package/dist/execution/multisig.d.ts +0 -4
  425. package/dist/execution/prepareRestart.d.ts +0 -3
  426. package/dist/execution/prepareRestart.js +0 -61
  427. package/dist/execution/switchChain.d.ts +0 -21
  428. package/dist/execution/waitForReceivingTransaction.d.ts +0 -3
  429. package/dist/index.d.ts +0 -5
  430. package/dist/index.js +0 -6
  431. package/dist/services/ApiService.d.ts +0 -17
  432. package/dist/services/ApiService.js +0 -321
  433. package/dist/services/ChainsService.d.ts +0 -11
  434. package/dist/services/ChainsService.js +0 -33
  435. package/dist/services/ConfigService.d.ts +0 -23
  436. package/dist/services/ConfigService.js +0 -99
  437. package/dist/typeguards.d.ts +0 -4
  438. package/dist/types/abi.d.ts +0 -5
  439. package/dist/types/index.d.ts +0 -4
  440. package/dist/types/index.js +0 -4
  441. package/dist/types/internal.types.d.ts +0 -142
  442. package/dist/types/internal.types.js +0 -1
  443. package/dist/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  444. package/dist/utils/index.d.ts +0 -5
  445. package/dist/utils/index.js +0 -5
  446. package/dist/utils/median.d.ts +0 -1
  447. package/dist/version.d.ts +0 -2
  448. package/dist/version.js +0 -2
@@ -0,0 +1,507 @@
1
+ import type {
2
+ ChainId,
3
+ ChainKey,
4
+ ChainsRequest,
5
+ ChainsResponse,
6
+ ConnectionsRequest,
7
+ ConnectionsResponse,
8
+ ContractCallQuoteRequest,
9
+ ExtendedChain,
10
+ GasRecommendationRequest,
11
+ GasRecommendationResponse,
12
+ GetStatusRequest,
13
+ LiFiStep,
14
+ QuoteRequest,
15
+ RequestOptions,
16
+ RoutesRequest,
17
+ RoutesResponse,
18
+ StatusResponse,
19
+ Token,
20
+ TokensRequest,
21
+ TokensResponse,
22
+ ToolsRequest,
23
+ ToolsResponse,
24
+ WalletAnalytics,
25
+ WalletAnalyticsRequest,
26
+ } from '@lifi/types'
27
+ import { config } from '../config.js'
28
+ import { request } from '../request.js'
29
+ import { isRoutesRequest, isStep } from '../typeguards.js'
30
+ import { ValidationError } from '../utils/errors.js'
31
+ import { parseBackendError } from '../utils/parseBackendError.js'
32
+ /**
33
+ * Fetch information about a Token
34
+ * @param chain - Id or key of the chain that contains the token
35
+ * @param token - Address or symbol of the token on the requested chain
36
+ * @param options - Request options
37
+ * @throws {LiFiError} - Throws a LiFiError if request fails
38
+ * @returns Token information
39
+ */
40
+ export const getToken = async (
41
+ chain: ChainKey | ChainId,
42
+ token: string,
43
+ options?: RequestOptions
44
+ ): Promise<Token> => {
45
+ if (!chain) {
46
+ throw new ValidationError('Required parameter "chain" is missing.')
47
+ }
48
+ if (!token) {
49
+ throw new ValidationError('Required parameter "token" is missing.')
50
+ }
51
+ try {
52
+ const response = await request<Token>(
53
+ `${config.get().apiUrl}/token?${new URLSearchParams({
54
+ chain,
55
+ token,
56
+ } as Record<string, string>)}`,
57
+ {
58
+ signal: options?.signal,
59
+ }
60
+ )
61
+ return response
62
+ } catch (e) {
63
+ throw await parseBackendError(e)
64
+ }
65
+ }
66
+
67
+ /**
68
+ * Get a quote for a token transfer
69
+ * @param params - The configuration of the requested quote
70
+ * @param options - Request options
71
+ * @throws {LiFiError} - Throws a LiFiError if request fails
72
+ * @returns Quote for a token transfer
73
+ */
74
+ export const getQuote = async (
75
+ params: QuoteRequest,
76
+ options?: RequestOptions
77
+ ): Promise<LiFiStep> => {
78
+ const requiredParameters: Array<keyof QuoteRequest> = [
79
+ 'fromChain',
80
+ 'fromToken',
81
+ 'fromAddress',
82
+ 'fromAmount',
83
+ 'toChain',
84
+ 'toToken',
85
+ ]
86
+ requiredParameters.forEach((requiredParameter) => {
87
+ if (!params[requiredParameter]) {
88
+ throw new ValidationError(
89
+ `Required parameter "${requiredParameter}" is missing.`
90
+ )
91
+ }
92
+ })
93
+ const _config = config.get()
94
+ // apply defaults
95
+ params.integrator ??= _config.integrator
96
+ params.order ??= _config.routeOptions?.order
97
+ params.slippage ??= _config.routeOptions?.slippage
98
+ params.referrer ??= _config.routeOptions?.referrer
99
+ params.fee ??= _config.routeOptions?.fee
100
+ params.allowBridges ??= _config.routeOptions?.bridges?.allow
101
+ params.denyBridges ??= _config.routeOptions?.bridges?.deny
102
+ params.preferBridges ??= _config.routeOptions?.bridges?.prefer
103
+ params.allowExchanges ??= _config.routeOptions?.exchanges?.allow
104
+ params.denyExchanges ??= _config.routeOptions?.exchanges?.deny
105
+ params.preferExchanges ??= _config.routeOptions?.exchanges?.prefer
106
+
107
+ Object.keys(params).forEach(
108
+ (key) =>
109
+ !params[key as keyof QuoteRequest] &&
110
+ delete params[key as keyof QuoteRequest]
111
+ )
112
+
113
+ try {
114
+ const response = await request<LiFiStep>(
115
+ `${_config.apiUrl}/quote?${new URLSearchParams(
116
+ params as unknown as Record<string, string>
117
+ )}`,
118
+ {
119
+ signal: options?.signal,
120
+ }
121
+ )
122
+ return response
123
+ } catch (e) {
124
+ throw await parseBackendError(e)
125
+ }
126
+ }
127
+
128
+ /**
129
+ * Get a quote for a destination contract call
130
+ * @param params - The configuration of the requested destination call
131
+ * @param options - Request options
132
+ * @throws {LiFiError} - Throws a LiFiError if request fails
133
+ * @returns - Returns step.
134
+ */
135
+ export const getContractCallQuote = async (
136
+ params: ContractCallQuoteRequest,
137
+ options?: RequestOptions
138
+ ): Promise<LiFiStep> => {
139
+ // validation
140
+ const requiredParameters: Array<keyof ContractCallQuoteRequest> = [
141
+ 'fromChain',
142
+ 'fromToken',
143
+ 'fromAddress',
144
+ 'toChain',
145
+ 'toToken',
146
+ 'toAmount',
147
+ 'toContractAddress',
148
+ 'toContractCallData',
149
+ 'toContractGasLimit',
150
+ ]
151
+ requiredParameters.forEach((requiredParameter) => {
152
+ if (!params[requiredParameter]) {
153
+ throw new ValidationError(
154
+ `Required parameter "${requiredParameter}" is missing.`
155
+ )
156
+ }
157
+ })
158
+ const _config = config.get()
159
+ // apply defaults
160
+ // option.order is not used in this endpoint
161
+ params.integrator ??= _config.integrator
162
+ params.slippage ??= _config.routeOptions?.slippage
163
+ params.referrer ??= _config.routeOptions?.referrer
164
+ params.fee ??= _config.routeOptions?.fee
165
+ params.allowBridges ??= _config.routeOptions?.bridges?.allow
166
+ params.denyBridges ??= _config.routeOptions?.bridges?.deny
167
+ params.preferBridges ??= _config.routeOptions?.bridges?.prefer
168
+ params.allowExchanges ??= _config.routeOptions?.exchanges?.allow
169
+ params.denyExchanges ??= _config.routeOptions?.exchanges?.deny
170
+ params.preferExchanges ??= _config.routeOptions?.exchanges?.prefer
171
+ // send request
172
+ try {
173
+ const response = await request<LiFiStep>(
174
+ `${_config.apiUrl}/quote/contractCall`,
175
+ {
176
+ method: 'POST',
177
+ headers: {
178
+ 'Content-Type': 'application/json',
179
+ },
180
+ body: JSON.stringify(params),
181
+ signal: options?.signal,
182
+ }
183
+ )
184
+ return response
185
+ } catch (e) {
186
+ throw await parseBackendError(e)
187
+ }
188
+ }
189
+
190
+ /**
191
+ * Check the status of a transfer. For cross chain transfers, the "bridge" parameter is required.
192
+ * @param params - Configuration of the requested status
193
+ * @param options - Request options.
194
+ * @throws {LiFiError} - Throws a LiFiError if request fails
195
+ * @returns Returns status response.
196
+ */
197
+ export const getStatus = async (
198
+ params: GetStatusRequest,
199
+ options?: RequestOptions
200
+ ): Promise<StatusResponse> => {
201
+ if (!params.txHash) {
202
+ throw new ValidationError('Required parameter "txHash" is missing.')
203
+ }
204
+ const queryParams = new URLSearchParams(
205
+ params as unknown as Record<string, string>
206
+ )
207
+ try {
208
+ const response = await request<StatusResponse>(
209
+ `${config.get().apiUrl}/status?${queryParams}`,
210
+ {
211
+ signal: options?.signal,
212
+ }
213
+ )
214
+ return response
215
+ } catch (e) {
216
+ throw await parseBackendError(e)
217
+ }
218
+ }
219
+
220
+ /**
221
+ * Get all available chains
222
+ * @param params - The configuration of the requested chains
223
+ * @param options - Request options
224
+ * @returns A list of all available chains
225
+ * @throws {LiFiError} Throws a LiFiError if request fails.
226
+ */
227
+ export const getChains = async (
228
+ params?: ChainsRequest,
229
+ options?: RequestOptions
230
+ ): Promise<ExtendedChain[]> => {
231
+ if (params) {
232
+ Object.keys(params).forEach(
233
+ (key) =>
234
+ !params[key as keyof ChainsRequest] &&
235
+ delete params[key as keyof ChainsRequest]
236
+ )
237
+ }
238
+ try {
239
+ const response = await request<ChainsResponse>(
240
+ `${config.get().apiUrl}/chains?${new URLSearchParams(
241
+ params as Record<string, string>
242
+ )}`,
243
+ {
244
+ signal: options?.signal,
245
+ }
246
+ )
247
+ return response.chains
248
+ } catch (e) {
249
+ throw await parseBackendError(e)
250
+ }
251
+ }
252
+
253
+ /**
254
+ * Get a set of routes for a request that describes a transfer of tokens.
255
+ * @param params - A description of the transfer.
256
+ * @param options - Request options
257
+ * @returns The resulting routes that can be used to realize the described transfer of tokens.
258
+ * @throws {LiFiError} Throws a LiFiError if request fails.
259
+ */
260
+ export const getRoutes = async (
261
+ params: RoutesRequest,
262
+ options?: RequestOptions
263
+ ): Promise<RoutesResponse> => {
264
+ if (!isRoutesRequest(params)) {
265
+ throw new ValidationError('Invalid routes request.')
266
+ }
267
+ const _config = config.get()
268
+ // apply defaults
269
+ params.options = {
270
+ ..._config.routeOptions,
271
+ ...params.options,
272
+ }
273
+ // send request
274
+ try {
275
+ const response = await request<RoutesResponse>(
276
+ `${_config.apiUrl}/advanced/routes`,
277
+ {
278
+ method: 'POST',
279
+ headers: {
280
+ 'Content-Type': 'application/json',
281
+ },
282
+ body: JSON.stringify(params),
283
+ signal: options?.signal,
284
+ }
285
+ )
286
+ return response
287
+ } catch (e) {
288
+ throw await parseBackendError(e)
289
+ }
290
+ }
291
+
292
+ /**
293
+ * Get the transaction data for a single step of a route
294
+ * @param step - The step object.
295
+ * @param options - Request options
296
+ * @returns The step populated with the transaction data.
297
+ * @throws {LiFiError} Throws a LiFiError if request fails.
298
+ */
299
+ export const getStepTransaction = async (
300
+ step: LiFiStep,
301
+ options?: RequestOptions
302
+ ): Promise<LiFiStep> => {
303
+ if (!isStep(step)) {
304
+ // While the validation fails for some users we should not enforce it
305
+ // eslint-disable-next-line no-console
306
+ console.warn('SDK Validation: Invalid Step', step)
307
+ }
308
+ try {
309
+ const response = await request<LiFiStep>(
310
+ `${config.get().apiUrl}/advanced/stepTransaction`,
311
+ {
312
+ method: 'POST',
313
+ headers: {
314
+ 'Content-Type': 'application/json',
315
+ },
316
+ body: JSON.stringify(step),
317
+ signal: options?.signal,
318
+ }
319
+ )
320
+ return response
321
+ } catch (e) {
322
+ throw await parseBackendError(e)
323
+ }
324
+ }
325
+
326
+ /**
327
+ * Get the available tools to bridge and swap tokens.
328
+ * @param params - The configuration of the requested tools
329
+ * @param options - Request options
330
+ * @returns The tools that are available on the requested chains
331
+ */
332
+ export const getTools = async (
333
+ params?: ToolsRequest,
334
+ options?: RequestOptions
335
+ ): Promise<ToolsResponse> => {
336
+ if (params) {
337
+ Object.keys(params).forEach(
338
+ (key) =>
339
+ !params[key as keyof ToolsRequest] &&
340
+ delete params[key as keyof ToolsRequest]
341
+ )
342
+ }
343
+ try {
344
+ const response = await request<ToolsResponse>(
345
+ `${config.get().apiUrl}/tools?${new URLSearchParams(
346
+ params as Record<string, string>
347
+ )}`,
348
+ {
349
+ signal: options?.signal,
350
+ }
351
+ )
352
+ return response
353
+ } catch (e) {
354
+ throw await parseBackendError(e)
355
+ }
356
+ }
357
+
358
+ /**
359
+ * Get all known tokens.
360
+ * @param params - The configuration of the requested tokens
361
+ * @param options - Request options
362
+ * @returns The tokens that are available on the requested chains
363
+ */
364
+ export const getTokens = async (
365
+ params?: TokensRequest,
366
+ options?: RequestOptions
367
+ ): Promise<TokensResponse> => {
368
+ if (params) {
369
+ Object.keys(params).forEach(
370
+ (key) =>
371
+ !params[key as keyof TokensRequest] &&
372
+ delete params[key as keyof TokensRequest]
373
+ )
374
+ }
375
+
376
+ try {
377
+ const response = await request<TokensResponse>(
378
+ `${config.get().apiUrl}/tokens?${new URLSearchParams(
379
+ params as Record<string, string>
380
+ )}`,
381
+ {
382
+ signal: options?.signal,
383
+ }
384
+ )
385
+ return response
386
+ } catch (e) {
387
+ throw await parseBackendError(e)
388
+ }
389
+ }
390
+
391
+ /**
392
+ * Get gas recommendation for a certain chain
393
+ * @param params - Configuration of the requested gas recommendation.
394
+ * @param options - Request options
395
+ * @throws {LiFiError} Throws a LiFiError if request fails.
396
+ * @returns Gas recommendation response.
397
+ */
398
+ export const getGasRecommendation = async (
399
+ params: GasRecommendationRequest,
400
+ options?: RequestOptions
401
+ ): Promise<GasRecommendationResponse> => {
402
+ if (!params.chainId) {
403
+ throw new ValidationError('Required parameter "chainId" is missing.')
404
+ }
405
+
406
+ const url = new URL(`${config.get().apiUrl}/gas/suggestion/${params.chainId}`)
407
+ if (params.fromChain) {
408
+ url.searchParams.append('fromChain', params.fromChain as unknown as string)
409
+ }
410
+ if (params.fromToken) {
411
+ url.searchParams.append('fromToken', params.fromToken)
412
+ }
413
+
414
+ try {
415
+ const response = await request<GasRecommendationResponse>(url.toString(), {
416
+ signal: options?.signal,
417
+ })
418
+ return response
419
+ } catch (e) {
420
+ throw await parseBackendError(e)
421
+ }
422
+ }
423
+
424
+ /**
425
+ * Get all the available connections for swap/bridging tokens
426
+ * @param connectionRequest ConnectionsRequest
427
+ * @returns ConnectionsResponse
428
+ */
429
+ export const getConnections = async (
430
+ connectionRequest: ConnectionsRequest
431
+ ): Promise<ConnectionsResponse> => {
432
+ const url = new URL(`${config.get().apiUrl}/connections`)
433
+
434
+ const { fromChain, fromToken, toChain, toToken } = connectionRequest
435
+
436
+ if (fromChain) {
437
+ url.searchParams.append('fromChain', fromChain as unknown as string)
438
+ }
439
+ if (fromToken) {
440
+ url.searchParams.append('fromToken', fromToken)
441
+ }
442
+ if (toChain) {
443
+ url.searchParams.append('toChain', toChain as unknown as string)
444
+ }
445
+ if (toToken) {
446
+ url.searchParams.append('toToken', toToken)
447
+ }
448
+ const connectionRequestArrayParams: Array<keyof ConnectionsRequest> = [
449
+ 'allowBridges',
450
+ 'denyBridges',
451
+ 'preferBridges',
452
+ 'allowExchanges',
453
+ 'denyExchanges',
454
+ 'preferExchanges',
455
+ ]
456
+ connectionRequestArrayParams.forEach((parameter) => {
457
+ const connectionRequestArrayParam: string[] = connectionRequest[
458
+ parameter
459
+ ] as string[]
460
+
461
+ if (connectionRequestArrayParam?.length) {
462
+ connectionRequestArrayParam?.forEach((value) => {
463
+ url.searchParams.append(parameter, value)
464
+ })
465
+ }
466
+ })
467
+ try {
468
+ const response = await request<ConnectionsResponse>(url.toString())
469
+ return response
470
+ } catch (e) {
471
+ throw await parseBackendError(e)
472
+ }
473
+ }
474
+
475
+ export const getTransactionHistory = async (
476
+ walletAnalyticsRequest: WalletAnalyticsRequest
477
+ ): Promise<WalletAnalytics> => {
478
+ const _config = config.get()
479
+
480
+ if (!walletAnalyticsRequest.fromTimestamp) {
481
+ throw new ValidationError('Required parameter "fromTimestamp" is missing.')
482
+ }
483
+
484
+ if (!walletAnalyticsRequest.toTimestamp) {
485
+ throw new ValidationError('Required parameter "toTimestamp" is missing.')
486
+ }
487
+
488
+ const url = new URL(
489
+ `${_config.apiUrl}/analytics/wallets/${walletAnalyticsRequest.walletAddress}`
490
+ )
491
+
492
+ url.searchParams.append(
493
+ 'fromTimestamp',
494
+ walletAnalyticsRequest.fromTimestamp.toString()
495
+ )
496
+
497
+ url.searchParams.append(
498
+ 'toTimestamp',
499
+ walletAnalyticsRequest.toTimestamp.toString()
500
+ )
501
+ try {
502
+ const response = await request<WalletAnalytics>(url)
503
+ return response
504
+ } catch (e) {
505
+ throw await parseBackendError(e)
506
+ }
507
+ }
@@ -0,0 +1,93 @@
1
+ import type { Token, TokenAmount } from '@lifi/types'
2
+ import { config } from '../config.js'
3
+ import { isToken } from '../typeguards.js'
4
+ import { ValidationError } from '../utils/errors.js'
5
+
6
+ /**
7
+ * Returns the balances of a specific token a wallet holds across all aggregated chains.
8
+ * @param walletAddress - A wallet address.
9
+ * @param token - A Token object.
10
+ * @returns An object containing the token and the amounts on different chains.
11
+ * @throws {ValidationError} Throws a ValidationError if parameters are invalid.
12
+ */
13
+ export const getTokenBalance = async (
14
+ walletAddress: string,
15
+ token: Token
16
+ ): Promise<TokenAmount | null> => {
17
+ const tokenAmounts = await getTokenBalances(walletAddress, [token])
18
+ return tokenAmounts.length ? tokenAmounts[0] : null
19
+ }
20
+
21
+ /**
22
+ * Returns the balances for a list tokens a wallet holds across all aggregated chains.
23
+ * @param walletAddress - A wallet address.
24
+ * @param tokens - A list of Token objects.
25
+ * @returns A list of objects containing the tokens and the amounts on different chains.
26
+ * @throws {ValidationError} Throws a ValidationError if parameters are invalid.
27
+ */
28
+ export const getTokenBalances = async (
29
+ walletAddress: string,
30
+ tokens: Token[]
31
+ ): Promise<TokenAmount[]> => {
32
+ // split by chain
33
+ const tokensByChain = tokens.reduce(
34
+ (tokens, token) => {
35
+ if (!tokens[token.chainId]) {
36
+ tokens[token.chainId] = []
37
+ }
38
+ tokens[token.chainId].push(token)
39
+ return tokens
40
+ },
41
+ {} as { [chainId: number]: Token[] }
42
+ )
43
+
44
+ const tokenAmountsByChain = await getTokenBalancesByChain(
45
+ walletAddress,
46
+ tokensByChain
47
+ )
48
+ return Object.values(tokenAmountsByChain).flat()
49
+ }
50
+
51
+ /**
52
+ * This method queries the balances of tokens for a specific list of chains for a given wallet.
53
+ * @param walletAddress - A walletaddress.
54
+ * @param tokensByChain - A list of Token objects organized by chain ids.
55
+ * @returns A list of objects containing the tokens and the amounts on different chains organized by the chosen chains.
56
+ * @throws {ValidationError} Throws a ValidationError if parameters are invalid.
57
+ */
58
+ export const getTokenBalancesByChain = async (
59
+ walletAddress: string,
60
+ tokensByChain: { [chainId: number]: Token[] }
61
+ ): Promise<{ [chainId: number]: TokenAmount[] }> => {
62
+ if (!walletAddress) {
63
+ throw new ValidationError('Missing walletAddress.')
64
+ }
65
+
66
+ const tokenList = Object.values(tokensByChain).flat()
67
+ const invalidTokens = tokenList.filter((token) => !isToken(token))
68
+ if (invalidTokens.length) {
69
+ throw new ValidationError(
70
+ `Invalid token passed: address "${invalidTokens[0].address}" on chainId "${invalidTokens[0].chainId}"`
71
+ )
72
+ }
73
+
74
+ const tokenAmountsByChain: { [chainId: number]: TokenAmount[] } = {}
75
+ await Promise.allSettled(
76
+ Object.keys(tokensByChain).map(async (chainIdStr) => {
77
+ const chainId = parseInt(chainIdStr)
78
+ const baseTokenAddress = tokensByChain[chainId][0].address
79
+ const provider = config
80
+ .get()
81
+ .providers?.find((provider) => provider.isAddress(baseTokenAddress))
82
+ if (!provider) {
83
+ throw new Error('SDK Token Provider not found.')
84
+ }
85
+ const tokenAmounts = await provider.getBalance(
86
+ walletAddress,
87
+ tokensByChain[chainId]
88
+ )
89
+ tokenAmountsByChain[chainId] = tokenAmounts
90
+ })
91
+ )
92
+ return tokenAmountsByChain
93
+ }
@@ -0,0 +1,89 @@
1
+ import type {
2
+ Action,
3
+ Estimate,
4
+ LiFiStep,
5
+ RouteOptions,
6
+ RoutesRequest,
7
+ StaticToken,
8
+ } from '@lifi/types'
9
+
10
+ export const isRoutesRequest = (
11
+ routesRequest: RoutesRequest
12
+ ): routesRequest is RoutesRequest => {
13
+ const {
14
+ fromChainId,
15
+ fromAmount,
16
+ fromTokenAddress,
17
+ toChainId,
18
+ toTokenAddress,
19
+ options,
20
+ } = routesRequest
21
+
22
+ return (
23
+ typeof fromChainId === 'number' &&
24
+ typeof fromAmount === 'string' &&
25
+ fromAmount !== '' &&
26
+ typeof fromTokenAddress === 'string' &&
27
+ fromTokenAddress !== '' &&
28
+ typeof toChainId === 'number' &&
29
+ typeof toTokenAddress === 'string' &&
30
+ toTokenAddress !== '' &&
31
+ (!options || isRoutesOptions(options))
32
+ )
33
+ }
34
+
35
+ const isRoutesOptions = (
36
+ routeOptions: RouteOptions
37
+ ): routeOptions is RouteOptions =>
38
+ !routeOptions?.slippage || typeof routeOptions.slippage === 'number'
39
+
40
+ export const isStep = (step: LiFiStep): step is LiFiStep => {
41
+ const { id, type, tool, action, estimate } = step
42
+
43
+ return (
44
+ typeof id === 'string' &&
45
+ ['swap', 'cross', 'lifi'].includes(type) &&
46
+ typeof tool === 'string' &&
47
+ isAction(action) &&
48
+ isEstimate(estimate)
49
+ )
50
+ }
51
+
52
+ const isAction = (action: Action): action is Action => {
53
+ const { fromChainId, fromAmount, fromToken, toChainId, toToken, slippage } =
54
+ action
55
+
56
+ return (
57
+ typeof fromChainId === 'number' &&
58
+ typeof fromAmount === 'string' &&
59
+ fromAmount !== '' &&
60
+ isToken(fromToken) &&
61
+ typeof toChainId === 'number' &&
62
+ isToken(toToken) &&
63
+ typeof slippage === 'number'
64
+ )
65
+ }
66
+
67
+ const isEstimate = (estimate: Estimate): estimate is Estimate => {
68
+ const { fromAmount, toAmount, toAmountMin, approvalAddress } = estimate
69
+
70
+ return (
71
+ typeof fromAmount === 'string' &&
72
+ fromAmount !== '' &&
73
+ typeof toAmount === 'string' &&
74
+ toAmount !== '' &&
75
+ typeof toAmountMin === 'string' &&
76
+ toAmountMin !== '' &&
77
+ typeof approvalAddress === 'string'
78
+ )
79
+ }
80
+
81
+ export const isToken = (token: StaticToken): token is StaticToken => {
82
+ const { address, decimals, chainId } = token
83
+
84
+ return (
85
+ typeof address === 'string' &&
86
+ typeof decimals === 'number' &&
87
+ typeof chainId === 'number'
88
+ )
89
+ }
@@ -0,0 +1 @@
1
+ export * from './internal.js'