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

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