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

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 +134 -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 +172 -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 +210 -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,118 @@
1
+ import type {
2
+ ChainType,
3
+ Execution,
4
+ LiFiStep,
5
+ Route,
6
+ Step,
7
+ Token,
8
+ TokenAmount,
9
+ } from '@lifi/types'
10
+ import type { WalletClient } from 'viem'
11
+
12
+ export interface SDKProvider {
13
+ readonly type: ChainType
14
+ isAddress(address: string): boolean
15
+ resolveAddress(name: string): Promise<string | undefined>
16
+ getStepExecutor(options: StepExecutorOptions): Promise<StepExecutor>
17
+ getBalance(walletAddress: string, tokens: Token[]): Promise<TokenAmount[]>
18
+ }
19
+
20
+ export interface StepExecutorOptions {
21
+ routeId: string
22
+ executionOptions?: ExecutionOptions
23
+ }
24
+
25
+ export interface InteractionSettings {
26
+ allowInteraction?: boolean
27
+ allowUpdates?: boolean
28
+ allowExecution?: boolean
29
+ }
30
+
31
+ export interface StepExecutor {
32
+ allowUserInteraction: boolean
33
+ allowExecution: boolean
34
+ setInteraction(settings?: InteractionSettings): void
35
+ executeStep(step: LiFiStepExtended): Promise<LiFiStepExtended>
36
+ }
37
+
38
+ export interface RouteExtended extends Omit<Route, 'steps'> {
39
+ steps: LiFiStepExtended[]
40
+ }
41
+
42
+ export interface LiFiStepExtended extends LiFiStep {
43
+ execution?: Execution
44
+ }
45
+
46
+ export type StepExtended = Step & {
47
+ execution?: Execution
48
+ }
49
+
50
+ export type TransactionParameters = {
51
+ chainId?: number
52
+ to?: string
53
+ from?: string
54
+ nonce?: number
55
+ data?: string
56
+ value?: bigint
57
+ gas?: bigint
58
+ gasPrice?: bigint
59
+ maxFeePerGas?: bigint
60
+ maxPriorityFeePerGas?: bigint
61
+ }
62
+
63
+ export interface RouteExecutionData {
64
+ route: Route
65
+ executors: StepExecutor[]
66
+ executionOptions?: ExecutionOptions
67
+ }
68
+
69
+ export type RouteExecutionDataDictionary = Partial<
70
+ Record<string, RouteExecutionData>
71
+ >
72
+
73
+ export type RouteExecutionDictionary = Partial<Record<string, Promise<Route>>>
74
+
75
+ export type UpdateRouteHook = (updatedRoute: Route) => void
76
+
77
+ export interface TransactionRequestParameters extends TransactionParameters {
78
+ requestType: 'approve' | 'transaction'
79
+ }
80
+
81
+ export type TransactionRequestUpdateHook = (
82
+ updatedTxRequest: TransactionRequestParameters
83
+ ) => Promise<TransactionParameters>
84
+
85
+ export type SwitchChainHook = (
86
+ chainId: number
87
+ ) => Promise<WalletClient | undefined>
88
+
89
+ export interface AcceptSlippageUpdateHookParams {
90
+ toToken: Token
91
+ oldToAmount: string
92
+ newToAmount: string
93
+ oldSlippage: number
94
+ newSlippage: number
95
+ }
96
+
97
+ export type AcceptSlippageUpdateHook = (
98
+ params: AcceptSlippageUpdateHookParams
99
+ ) => Promise<boolean | undefined>
100
+
101
+ export interface ExchangeRateUpdateParams {
102
+ toToken: Token
103
+ oldToAmount: string
104
+ newToAmount: string
105
+ }
106
+
107
+ export type AcceptExchangeRateUpdateHook = (
108
+ params: ExchangeRateUpdateParams
109
+ ) => Promise<boolean | undefined>
110
+
111
+ export interface ExecutionOptions {
112
+ acceptExchangeRateUpdateHook?: AcceptExchangeRateUpdateHook
113
+ switchChainHook?: SwitchChainHook
114
+ updateRouteHook?: UpdateRouteHook
115
+ updateTransactionRequestHook?: TransactionRequestUpdateHook
116
+ executeInBackground?: boolean
117
+ infiniteApproval?: boolean
118
+ }
@@ -0,0 +1,105 @@
1
+ import {
2
+ type LiFiStep,
3
+ type ProcessType,
4
+ type Status,
5
+ type StatusMessage,
6
+ type Substatus,
7
+ } from '@lifi/types'
8
+
9
+ const processMessages: Record<ProcessType, Partial<Record<Status, string>>> = {
10
+ TOKEN_ALLOWANCE: {
11
+ STARTED: 'Setting token allowance.',
12
+ PENDING: 'Waiting for token allowance.',
13
+ DONE: 'Token allowance set.',
14
+ },
15
+ SWITCH_CHAIN: {
16
+ PENDING: 'Chain switch required.',
17
+ DONE: 'Chain switched successfully.',
18
+ },
19
+ SWAP: {
20
+ STARTED: 'Preparing swap transaction.',
21
+ ACTION_REQUIRED: 'Please sign the transaction.',
22
+ PENDING: 'Waiting for swap transaction.',
23
+ DONE: 'Swap completed.',
24
+ },
25
+ CROSS_CHAIN: {
26
+ STARTED: 'Preparing bridge transaction.',
27
+ ACTION_REQUIRED: 'Please sign the transaction.',
28
+ PENDING: 'Waiting for bridge transaction.',
29
+ DONE: 'Bridge transaction confirmed.',
30
+ },
31
+ RECEIVING_CHAIN: {
32
+ PENDING: 'Waiting for destination chain.',
33
+ DONE: 'Bridge completed.',
34
+ },
35
+ TRANSACTION: {},
36
+ }
37
+ const substatusMessages: Record<
38
+ StatusMessage,
39
+ Partial<Record<Substatus, string>>
40
+ > = {
41
+ PENDING: {
42
+ BRIDGE_NOT_AVAILABLE: 'Bridge communication is temporarily unavailable.',
43
+ CHAIN_NOT_AVAILABLE: 'RPC communication is temporarily unavailable.',
44
+ UNKNOWN_ERROR:
45
+ 'An unexpected error occurred. Please seek assistance in the LI.FI discord server.',
46
+ WAIT_SOURCE_CONFIRMATIONS:
47
+ 'The bridge deposit has been received. The bridge is waiting for more confirmations to start the off-chain logic.',
48
+ WAIT_DESTINATION_TRANSACTION:
49
+ 'The bridge off-chain logic is being executed. Wait for the transaction to appear on the destination chain.',
50
+ },
51
+ DONE: {
52
+ PARTIAL:
53
+ 'Some of the received tokens are not the requested destination tokens.',
54
+ REFUNDED: 'The tokens were refunded to the sender address.',
55
+ COMPLETED: 'The transfer is complete.',
56
+ },
57
+ FAILED: {},
58
+ INVALID: {},
59
+ NOT_FOUND: {},
60
+ }
61
+
62
+ export function getProcessMessage(
63
+ type: ProcessType,
64
+ status: Status
65
+ ): string | undefined {
66
+ const processMessage = processMessages[type][status]
67
+ return processMessage
68
+ }
69
+
70
+ export function getSubstatusMessage(
71
+ status: StatusMessage,
72
+ substatus?: Substatus
73
+ ): string | undefined {
74
+ if (!substatus) {
75
+ return
76
+ }
77
+ const message = substatusMessages[status][substatus]
78
+ return message
79
+ }
80
+
81
+ /**
82
+ * Used to check if changed exchange rate is in the range of slippage threshold.
83
+ * We use a slippage value as a threshold to trigger the rate change hook.
84
+ * This can result in almost doubled slippage for the user and need to be revisited.
85
+ * @param oldStep
86
+ * @param newStep
87
+ * @returns Boolean
88
+ */
89
+ export function checkStepSlippageThreshold(
90
+ oldStep: LiFiStep,
91
+ newStep: LiFiStep
92
+ ): boolean {
93
+ const setSlippage = oldStep.action.slippage
94
+ const oldEstimatedToAmount = BigInt(oldStep.estimate.toAmountMin)
95
+ const newEstimatedToAmount = BigInt(newStep.estimate.toAmountMin)
96
+ const amountDifference = oldEstimatedToAmount - newEstimatedToAmount
97
+ // oldEstimatedToAmount can be 0 when we use contract calls
98
+ let actualSlippage = 0
99
+ if (oldEstimatedToAmount > 0) {
100
+ actualSlippage =
101
+ Number((amountDifference * 1_000_000_000n) / oldEstimatedToAmount) /
102
+ 1_000_000_000
103
+ }
104
+ return actualSlippage <= setSlippage
105
+ }
@@ -0,0 +1,74 @@
1
+ import type {
2
+ FullStatusData,
3
+ LiFiStep,
4
+ ProcessType,
5
+ StatusResponse,
6
+ } from '@lifi/types'
7
+ import { getStatus } from '../services/api.js'
8
+ import { ServerError } from '../utils/errors.js'
9
+ import { repeatUntilDone } from '../utils/utils.js'
10
+ import type { StatusManager } from './StatusManager.js'
11
+ import { getSubstatusMessage } from './utils.js'
12
+
13
+ const TRANSACTION_HASH_OBSERVERS: Record<string, Promise<StatusResponse>> = {}
14
+
15
+ export async function waitForReceivingTransaction(
16
+ txHash: string,
17
+ statusManager: StatusManager,
18
+ processType: ProcessType,
19
+ step: LiFiStep
20
+ ): Promise<StatusResponse> {
21
+ const _getStatus = (): Promise<StatusResponse | undefined> =>
22
+ new Promise(async (resolve, reject) => {
23
+ let statusResponse: StatusResponse
24
+ try {
25
+ statusResponse = await getStatus({
26
+ fromChain: step.action.fromChainId,
27
+ toChain: step.action.toChainId,
28
+ txHash,
29
+ ...(step.tool !== 'custom' && { bridge: step.tool }),
30
+ })
31
+ } catch (e: any) {
32
+ console.debug('Fetching status from backend failed.', e)
33
+ return resolve(undefined)
34
+ }
35
+
36
+ switch (statusResponse.status) {
37
+ case 'DONE':
38
+ return resolve(statusResponse)
39
+ case 'PENDING':
40
+ statusManager?.updateProcess(step, processType, 'PENDING', {
41
+ substatus: statusResponse.substatus,
42
+ substatusMessage:
43
+ statusResponse.substatusMessage ||
44
+ getSubstatusMessage(
45
+ statusResponse.status,
46
+ statusResponse.substatus
47
+ ),
48
+ txLink: (statusResponse as FullStatusData).bridgeExplorerLink,
49
+ })
50
+ return resolve(undefined)
51
+ case 'NOT_FOUND':
52
+ return resolve(undefined)
53
+ case 'INVALID':
54
+ case 'FAILED':
55
+ default:
56
+ return reject()
57
+ }
58
+ })
59
+
60
+ let status
61
+
62
+ if (txHash in TRANSACTION_HASH_OBSERVERS) {
63
+ status = await TRANSACTION_HASH_OBSERVERS[txHash]
64
+ } else {
65
+ TRANSACTION_HASH_OBSERVERS[txHash] = repeatUntilDone(_getStatus, 5_000)
66
+ status = await TRANSACTION_HASH_OBSERVERS[txHash]
67
+ }
68
+
69
+ if (!('receiving' in status)) {
70
+ throw new ServerError("Status doesn't contain receiving information.")
71
+ }
72
+
73
+ return status
74
+ }
@@ -0,0 +1,33 @@
1
+ /* eslint-disable @typescript-eslint/no-empty-function */
2
+ import { ChainType } from '@lifi/types'
3
+ import { config } from './config.js'
4
+ import { checkPackageUpdates } from './helpers.js'
5
+ import { getChains } from './services/api.js'
6
+ import type { SDKConfig } from './types/index.js'
7
+ import { name, version } from './version.js'
8
+
9
+ function createBaseConfig(options: SDKConfig) {
10
+ if (!options.integrator) {
11
+ throw new Error(
12
+ 'Integrator not found. Please see documentation https://docs.li.fi/integrate-li.fi-js-sdk/set-up-the-sdk'
13
+ )
14
+ }
15
+ const _config = config.set(options)
16
+ checkPackageUpdates(name, version, options.disableVersionCheck)
17
+ return _config
18
+ }
19
+
20
+ export async function createChainsConfig() {
21
+ config.loading = getChains({ chainTypes: [ChainType.EVM, ChainType.SVM] })
22
+ .then((chains) => config.setChains(chains))
23
+ .catch()
24
+ await config.loading
25
+ }
26
+
27
+ export function createConfig(options: SDKConfig) {
28
+ const _config = createBaseConfig(options)
29
+ if (_config.preloadChains) {
30
+ createChainsConfig()
31
+ }
32
+ return _config
33
+ }
package/src/helpers.ts ADDED
@@ -0,0 +1,83 @@
1
+ import type { LiFiStep, Route } from '@lifi/types'
2
+ import { request } from './request.js'
3
+ import type { TenderlyResponse } from './types/index.js'
4
+ import { ValidationError } from './utils/errors.js'
5
+ import { name, version } from './version.js'
6
+
7
+ /**
8
+ * Returns a random number between min (inclusive) and max (inclusive)
9
+ * @param min - minimum number.
10
+ * @param max - maximum number.
11
+ * @returns - random number.
12
+ */
13
+ export const getRandomNumber = (min: number, max: number): number => {
14
+ return Math.floor(Math.random() * (max - min + 1) + min)
15
+ }
16
+
17
+ export const checkPackageUpdates = async (
18
+ packageName?: string,
19
+ packageVersion?: string,
20
+ disableCheck?: boolean
21
+ ) => {
22
+ if (disableCheck || process.env.NODE_ENV !== 'development') {
23
+ return
24
+ }
25
+ try {
26
+ const pkgName = packageName ?? name
27
+ const response = await request<{ version: string }>(
28
+ `https://registry.npmjs.org/${pkgName}/latest`,
29
+ { skipTrackingHeaders: true }
30
+ )
31
+ const latestVersion = response.version
32
+ const currentVersion = packageVersion ?? version
33
+ if (latestVersion > currentVersion) {
34
+ console.warn(
35
+ // eslint-disable-next-line max-len
36
+ `${pkgName}: new package version is available. Please update as soon as possible to enjoy the newest features. Current version: ${currentVersion}. Latest version: ${latestVersion}.`
37
+ )
38
+ }
39
+ } catch (error) {
40
+ // Cannot verify version, might be network error etc. We don't bother showing anything in that case
41
+ }
42
+ }
43
+
44
+ /**
45
+ * Converts a quote to Route
46
+ * @param step - Step returned from the quote endpoint.
47
+ * @returns - The route to be executed.
48
+ * @throws {ValidationError} Throws a ValidationError if the step has missing values.
49
+ */
50
+ export const convertQuoteToRoute = (step: LiFiStep): Route => {
51
+ if (!step.estimate.fromAmountUSD) {
52
+ throw new ValidationError("Missing 'fromAmountUSD' in step estimate.")
53
+ }
54
+
55
+ if (!step.estimate.toAmountUSD) {
56
+ throw new ValidationError("Missing 'toAmountUSD' in step estimate.")
57
+ }
58
+
59
+ const route: Route = {
60
+ fromToken: step.action.fromToken,
61
+ toToken: step.action.toToken,
62
+ fromAmount: step.action.fromAmount,
63
+ toAmount: step.estimate.toAmount,
64
+ id: step.id,
65
+ fromChainId: step.action.fromToken.chainId,
66
+ toChainId: step.action.toToken.chainId,
67
+ fromAmountUSD: step.estimate.fromAmountUSD,
68
+ toAmountUSD: step.estimate.toAmountUSD,
69
+ steps: [step],
70
+ toAmountMin: step.estimate.toAmountMin,
71
+ insurance: { state: 'NOT_INSURABLE', feeAmountUsd: '0' },
72
+ }
73
+
74
+ return route
75
+ }
76
+
77
+ export const fetchTxErrorDetails = async (txHash: string, chainId: number) => {
78
+ const response = await request<TenderlyResponse>(
79
+ `https://api.tenderly.co/api/v1/public-contract/${chainId}/tx/${txHash}`
80
+ )
81
+
82
+ return response
83
+ }
package/src/index.ts ADDED
@@ -0,0 +1,18 @@
1
+ export * from '@lifi/types'
2
+ export { config } from './config.js'
3
+ export { EVM } from './core/EVM/EVM.js'
4
+ export type {
5
+ MultisigConfig,
6
+ MultisigTransaction,
7
+ MultisigTxDetails,
8
+ } from './core/EVM/types.js'
9
+ export { Solana } from './core/Solana/Solana.js'
10
+ export * from './core/index.js'
11
+ export { createConfig } from './createConfig.js'
12
+ export * from './helpers.js'
13
+ export * from './services/api.js'
14
+ export * from './services/balance.js'
15
+ export * from './services/getNameServiceAddress.js'
16
+ export * from './types/index.js'
17
+ export * from './utils/errors.js'
18
+ export { LiFiError, type ErrorCode } from './utils/errors.js'
package/src/request.ts ADDED
@@ -0,0 +1,79 @@
1
+ import { config } from './config.js'
2
+ import { HTTPError } from './utils/errors.js'
3
+ import { wait } from './utils/utils.js'
4
+ import { version } from './version.js'
5
+
6
+ export const requestSettings = {
7
+ retries: 1,
8
+ }
9
+
10
+ interface ExtendedRequestInit extends RequestInit {
11
+ retries?: number
12
+ skipTrackingHeaders?: boolean
13
+ }
14
+
15
+ export const request = async <T = Response>(
16
+ url: RequestInfo | URL,
17
+ options: ExtendedRequestInit = {
18
+ retries: requestSettings.retries,
19
+ }
20
+ ): Promise<T> => {
21
+ const { userId, integrator, widgetVersion, apiKey } = config.get()
22
+ if (!integrator) {
23
+ throw new Error(
24
+ 'Integrator not found. Please see documentation https://docs.li.fi/integrate-li.fi-js-sdk/set-up-the-sdk'
25
+ )
26
+ }
27
+ options.retries = options.retries ?? requestSettings.retries
28
+ try {
29
+ if (!options.skipTrackingHeaders) {
30
+ if (apiKey) {
31
+ options.headers = {
32
+ ...options.headers,
33
+ 'x-lifi-api-key': apiKey,
34
+ }
35
+ }
36
+
37
+ if (userId) {
38
+ options.headers = {
39
+ ...options.headers,
40
+ 'x-lifi-userid': userId,
41
+ }
42
+ }
43
+
44
+ if (widgetVersion) {
45
+ options.headers = {
46
+ ...options.headers,
47
+ 'x-lifi-widget': widgetVersion,
48
+ }
49
+ }
50
+
51
+ if (version) {
52
+ options.headers = {
53
+ ...options.headers,
54
+ 'x-lifi-sdk': version,
55
+ }
56
+ }
57
+
58
+ // integrator is mandatory during SDK initialization
59
+ options.headers = {
60
+ ...options.headers,
61
+ 'x-lifi-integrator': integrator,
62
+ }
63
+ }
64
+
65
+ const response: Response = await fetch(url, options)
66
+ if (!response.ok) {
67
+ throw new HTTPError(response)
68
+ }
69
+
70
+ const data: T = await response.json()
71
+ return data
72
+ } catch (error) {
73
+ if (options.retries > 0 && (error as HTTPError)?.status === 500) {
74
+ await wait(500)
75
+ return request<T>(url, { ...options, retries: options.retries - 1 })
76
+ }
77
+ throw error
78
+ }
79
+ }