@lifi/sdk 3.0.0-alpha.2 → 3.0.0-alpha.21

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 (446) hide show
  1. package/dist/_cjs/config.js +48 -0
  2. package/dist/_cjs/config.js.map +1 -0
  3. package/dist/{cjs → _cjs}/constants.js +2 -4
  4. package/dist/_cjs/constants.js.map +1 -0
  5. package/dist/_cjs/core/BaseStepExecutor.js +55 -0
  6. package/dist/_cjs/core/BaseStepExecutor.js.map +1 -0
  7. package/dist/_cjs/core/EVM/EVM.js +46 -0
  8. package/dist/_cjs/core/EVM/EVM.js.map +1 -0
  9. package/dist/_cjs/core/EVM/EVMStepExecutor.js +276 -0
  10. package/dist/_cjs/core/EVM/EVMStepExecutor.js.map +1 -0
  11. package/dist/{cjs/types → _cjs/core/EVM}/abi.js +1 -0
  12. package/dist/_cjs/core/EVM/abi.js.map +1 -0
  13. package/dist/{cjs/execution → _cjs/core/EVM}/checkAllowance.js +12 -12
  14. package/dist/_cjs/core/EVM/checkAllowance.js.map +1 -0
  15. package/dist/{cjs/allowance → _cjs/core/EVM}/getAllowance.js +15 -17
  16. package/dist/_cjs/core/EVM/getAllowance.js.map +1 -0
  17. package/dist/{cjs/balance/getBalance.js → _cjs/core/EVM/getEVMBalance.js} +22 -22
  18. package/dist/_cjs/core/EVM/getEVMBalance.js.map +1 -0
  19. package/dist/{cjs/execution → _cjs/core/EVM}/multisig.js +7 -11
  20. package/dist/_cjs/core/EVM/multisig.js.map +1 -0
  21. package/dist/_cjs/core/EVM/publicClient.js +35 -0
  22. package/dist/_cjs/core/EVM/publicClient.js.map +1 -0
  23. package/dist/_cjs/core/EVM/setAllowance.js +71 -0
  24. package/dist/_cjs/core/EVM/setAllowance.js.map +1 -0
  25. package/dist/_cjs/core/EVM/switchChain.js +37 -0
  26. package/dist/_cjs/core/EVM/switchChain.js.map +1 -0
  27. package/dist/_cjs/core/EVM/types.js +9 -0
  28. package/dist/_cjs/core/EVM/types.js.map +1 -0
  29. package/dist/{cjs/utils/getMaxPriorityFeePerGas.js → _cjs/core/EVM/utils.js} +11 -3
  30. package/dist/_cjs/core/EVM/utils.js.map +1 -0
  31. package/dist/_cjs/core/Solana/Solana.js +44 -0
  32. package/dist/_cjs/core/Solana/Solana.js.map +1 -0
  33. package/dist/_cjs/core/Solana/SolanaStepExecutor.js +157 -0
  34. package/dist/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -0
  35. package/dist/_cjs/core/Solana/connection.js +18 -0
  36. package/dist/_cjs/core/Solana/connection.js.map +1 -0
  37. package/dist/_cjs/core/Solana/getSolanaBalance.js +50 -0
  38. package/dist/_cjs/core/Solana/getSolanaBalance.js.map +1 -0
  39. package/dist/_cjs/core/Solana/types.js +10 -0
  40. package/dist/_cjs/core/Solana/types.js.map +1 -0
  41. package/dist/_cjs/core/StatusManager.js +167 -0
  42. package/dist/_cjs/core/StatusManager.js.map +1 -0
  43. package/dist/{cjs/execution → _cjs/core}/checkBalance.js +5 -5
  44. package/dist/_cjs/core/checkBalance.js.map +1 -0
  45. package/dist/_cjs/core/execution.js +134 -0
  46. package/dist/_cjs/core/execution.js.map +1 -0
  47. package/dist/_cjs/core/executionState.js +23 -0
  48. package/dist/_cjs/core/executionState.js.map +1 -0
  49. package/dist/_cjs/core/index.js +7 -0
  50. package/dist/_cjs/core/index.js.map +1 -0
  51. package/dist/_cjs/core/prepareRestart.js +23 -0
  52. package/dist/_cjs/core/prepareRestart.js.map +1 -0
  53. package/dist/_cjs/core/provider.js +15 -0
  54. package/dist/_cjs/core/provider.js.map +1 -0
  55. package/dist/_cjs/core/stepComparison.js +25 -0
  56. package/dist/_cjs/core/stepComparison.js.map +1 -0
  57. package/dist/{cjs/allowance → _cjs/core}/types.js +1 -0
  58. package/dist/_cjs/core/types.js.map +1 -0
  59. package/dist/{cjs/execution → _cjs/core}/utils.js +16 -10
  60. package/dist/_cjs/core/utils.js.map +1 -0
  61. package/dist/{cjs/execution → _cjs/core}/waitForReceivingTransaction.js +10 -12
  62. package/dist/_cjs/core/waitForReceivingTransaction.js.map +1 -0
  63. package/dist/_cjs/createConfig.js +48 -0
  64. package/dist/_cjs/createConfig.js.map +1 -0
  65. package/dist/{cjs → _cjs}/helpers.js +11 -25
  66. package/dist/_cjs/helpers.js.map +1 -0
  67. package/dist/_cjs/index.js +20 -0
  68. package/dist/_cjs/index.js.map +1 -0
  69. package/dist/_cjs/package.json +1 -0
  70. package/dist/{cjs → _cjs}/request.js +22 -16
  71. package/dist/_cjs/request.js.map +1 -0
  72. package/dist/_cjs/services/api.js +284 -0
  73. package/dist/_cjs/services/api.js.map +1 -0
  74. package/dist/_cjs/services/balance.js +49 -0
  75. package/dist/_cjs/services/balance.js.map +1 -0
  76. package/dist/{cjs → _cjs}/typeguards.js +1 -0
  77. package/dist/_cjs/typeguards.js.map +1 -0
  78. package/dist/_cjs/types/index.js +5 -0
  79. package/dist/_cjs/types/index.js.map +1 -0
  80. package/dist/{cjs/types/internal.types.js → _cjs/types/internal.js} +1 -0
  81. package/dist/_cjs/types/internal.js.map +1 -0
  82. package/dist/{cjs → _cjs}/utils/errors.js +25 -3
  83. package/dist/_cjs/utils/errors.js.map +1 -0
  84. package/dist/_cjs/utils/getTransactionMessage.js +31 -0
  85. package/dist/_cjs/utils/getTransactionMessage.js.map +1 -0
  86. package/dist/_cjs/utils/index.js +9 -0
  87. package/dist/_cjs/utils/index.js.map +1 -0
  88. package/dist/{cjs → _cjs}/utils/median.js +1 -0
  89. package/dist/_cjs/utils/median.js.map +1 -0
  90. package/dist/_cjs/utils/parseBackendError.js +27 -0
  91. package/dist/_cjs/utils/parseBackendError.js.map +1 -0
  92. package/dist/_cjs/utils/parseError.js +67 -0
  93. package/dist/_cjs/utils/parseError.js.map +1 -0
  94. package/dist/{cjs → _cjs}/utils/utils.js +5 -11
  95. package/dist/_cjs/utils/utils.js.map +1 -0
  96. package/dist/{cjs → _cjs}/version.js +2 -1
  97. package/dist/_cjs/version.js.map +1 -0
  98. package/dist/_esm/config.js +45 -0
  99. package/dist/_esm/config.js.map +1 -0
  100. package/dist/{constants.js → _esm/constants.js} +1 -0
  101. package/dist/_esm/constants.js.map +1 -0
  102. package/dist/_esm/core/BaseStepExecutor.js +52 -0
  103. package/dist/_esm/core/BaseStepExecutor.js.map +1 -0
  104. package/dist/_esm/core/EVM/EVM.js +42 -0
  105. package/dist/_esm/core/EVM/EVM.js.map +1 -0
  106. package/dist/_esm/core/EVM/EVMStepExecutor.js +304 -0
  107. package/dist/_esm/core/EVM/EVMStepExecutor.js.map +1 -0
  108. package/dist/{types → _esm/core/EVM}/abi.js +1 -0
  109. package/dist/_esm/core/EVM/abi.js.map +1 -0
  110. package/dist/{execution → _esm/core/EVM}/checkAllowance.js +8 -6
  111. package/dist/_esm/core/EVM/checkAllowance.js.map +1 -0
  112. package/dist/{allowance → _esm/core/EVM}/getAllowance.js +20 -5
  113. package/dist/_esm/core/EVM/getAllowance.js.map +1 -0
  114. package/dist/{balance/getBalance.js → _esm/core/EVM/getEVMBalance.js} +11 -11
  115. package/dist/_esm/core/EVM/getEVMBalance.js.map +1 -0
  116. package/dist/{execution → _esm/core/EVM}/multisig.js +5 -6
  117. package/dist/_esm/core/EVM/multisig.js.map +1 -0
  118. package/dist/_esm/core/EVM/publicClient.js +37 -0
  119. package/dist/_esm/core/EVM/publicClient.js.map +1 -0
  120. package/dist/{allowance → _esm/core/EVM}/setAllowance.js +46 -11
  121. package/dist/_esm/core/EVM/setAllowance.js.map +1 -0
  122. package/dist/{execution → _esm/core/EVM}/switchChain.js +5 -3
  123. package/dist/_esm/core/EVM/switchChain.js.map +1 -0
  124. package/dist/_esm/core/EVM/types.js +6 -0
  125. package/dist/_esm/core/EVM/types.js.map +1 -0
  126. package/dist/{utils/getMaxPriorityFeePerGas.js → _esm/core/EVM/utils.js} +9 -1
  127. package/dist/_esm/core/EVM/utils.js.map +1 -0
  128. package/dist/_esm/core/Solana/Solana.js +40 -0
  129. package/dist/_esm/core/Solana/Solana.js.map +1 -0
  130. package/dist/_esm/core/Solana/SolanaStepExecutor.js +158 -0
  131. package/dist/_esm/core/Solana/SolanaStepExecutor.js.map +1 -0
  132. package/dist/_esm/core/Solana/connection.js +19 -0
  133. package/dist/_esm/core/Solana/connection.js.map +1 -0
  134. package/dist/_esm/core/Solana/getSolanaBalance.js +46 -0
  135. package/dist/_esm/core/Solana/getSolanaBalance.js.map +1 -0
  136. package/dist/_esm/core/Solana/types.js +7 -0
  137. package/dist/_esm/core/Solana/types.js.map +1 -0
  138. package/dist/_esm/core/StatusManager.js +203 -0
  139. package/dist/_esm/core/StatusManager.js.map +1 -0
  140. package/dist/{execution → _esm/core}/checkBalance.js +3 -2
  141. package/dist/_esm/core/checkBalance.js.map +1 -0
  142. package/dist/_esm/core/execution.js +173 -0
  143. package/dist/_esm/core/execution.js.map +1 -0
  144. package/dist/_esm/core/executionState.js +20 -0
  145. package/dist/_esm/core/executionState.js.map +1 -0
  146. package/dist/_esm/core/index.js +4 -0
  147. package/dist/_esm/core/index.js.map +1 -0
  148. package/dist/_esm/core/prepareRestart.js +64 -0
  149. package/dist/_esm/core/prepareRestart.js.map +1 -0
  150. package/dist/_esm/core/provider.js +11 -0
  151. package/dist/_esm/core/provider.js.map +1 -0
  152. package/dist/{execution → _esm/core}/stepComparison.js +7 -5
  153. package/dist/_esm/core/stepComparison.js.map +1 -0
  154. package/dist/_esm/core/types.js +2 -0
  155. package/dist/_esm/core/types.js.map +1 -0
  156. package/dist/{execution → _esm/core}/utils.js +14 -0
  157. package/dist/_esm/core/utils.js.map +1 -0
  158. package/dist/{execution → _esm/core}/waitForReceivingTransaction.js +8 -7
  159. package/dist/_esm/core/waitForReceivingTransaction.js.map +1 -0
  160. package/dist/_esm/createConfig.js +45 -0
  161. package/dist/_esm/createConfig.js.map +1 -0
  162. package/dist/{helpers.js → _esm/helpers.js} +4 -3
  163. package/dist/_esm/helpers.js.map +1 -0
  164. package/dist/_esm/index.js +12 -0
  165. package/dist/_esm/index.js.map +1 -0
  166. package/dist/_esm/package.json +1 -0
  167. package/dist/{request.js → _esm/request.js} +19 -9
  168. package/dist/_esm/request.js.map +1 -0
  169. package/dist/_esm/services/api.js +353 -0
  170. package/dist/_esm/services/api.js.map +1 -0
  171. package/dist/_esm/services/balance.js +65 -0
  172. package/dist/_esm/services/balance.js.map +1 -0
  173. package/dist/{typeguards.js → _esm/typeguards.js} +1 -0
  174. package/dist/_esm/typeguards.js.map +1 -0
  175. package/dist/_esm/types/index.js +2 -0
  176. package/dist/_esm/types/index.js.map +1 -0
  177. package/dist/_esm/types/internal.js +2 -0
  178. package/dist/_esm/types/internal.js.map +1 -0
  179. package/dist/{utils → _esm/utils}/errors.js +25 -0
  180. package/dist/_esm/utils/errors.js.map +1 -0
  181. package/dist/_esm/utils/getTransactionMessage.js +28 -0
  182. package/dist/_esm/utils/getTransactionMessage.js.map +1 -0
  183. package/dist/_esm/utils/index.js +6 -0
  184. package/dist/_esm/utils/index.js.map +1 -0
  185. package/dist/{utils → _esm/utils}/median.js +1 -0
  186. package/dist/_esm/utils/median.js.map +1 -0
  187. package/dist/_esm/utils/parseBackendError.js +24 -0
  188. package/dist/_esm/utils/parseBackendError.js.map +1 -0
  189. package/dist/{utils → _esm/utils}/parseError.js +4 -53
  190. package/dist/_esm/utils/parseError.js.map +1 -0
  191. package/dist/{utils → _esm/utils}/utils.js +2 -1
  192. package/dist/_esm/utils/utils.js.map +1 -0
  193. package/dist/_esm/version.js +3 -0
  194. package/dist/_esm/version.js.map +1 -0
  195. package/dist/_types/config.d.ts +11 -0
  196. package/dist/_types/config.d.ts.map +1 -0
  197. package/dist/{cjs → _types}/constants.d.ts +1 -0
  198. package/dist/_types/constants.d.ts.map +1 -0
  199. package/dist/_types/core/BaseStepExecutor.d.ts +13 -0
  200. package/dist/_types/core/BaseStepExecutor.d.ts.map +1 -0
  201. package/dist/_types/core/EVM/EVM.d.ts +3 -0
  202. package/dist/_types/core/EVM/EVM.d.ts.map +1 -0
  203. package/dist/_types/core/EVM/EVMStepExecutor.d.ts +17 -0
  204. package/dist/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -0
  205. package/dist/{cjs/types → _types/core/EVM}/abi.d.ts +1 -0
  206. package/dist/_types/core/EVM/abi.d.ts.map +1 -0
  207. package/dist/_types/core/EVM/checkAllowance.d.ts +6 -0
  208. package/dist/_types/core/EVM/checkAllowance.d.ts.map +1 -0
  209. package/dist/{cjs/allowance → _types/core/EVM}/getAllowance.d.ts +15 -1
  210. package/dist/_types/core/EVM/getAllowance.d.ts.map +1 -0
  211. package/dist/_types/core/EVM/getEVMBalance.d.ts +3 -0
  212. package/dist/_types/core/EVM/getEVMBalance.d.ts.map +1 -0
  213. package/dist/_types/core/EVM/multisig.d.ts +6 -0
  214. package/dist/_types/core/EVM/multisig.d.ts.map +1 -0
  215. package/dist/_types/core/EVM/publicClient.d.ts +8 -0
  216. package/dist/_types/core/EVM/publicClient.d.ts.map +1 -0
  217. package/dist/_types/core/EVM/setAllowance.d.ts +25 -0
  218. package/dist/_types/core/EVM/setAllowance.d.ts.map +1 -0
  219. package/dist/{execution → _types/core/EVM}/switchChain.d.ts +6 -4
  220. package/dist/_types/core/EVM/switchChain.d.ts.map +1 -0
  221. package/dist/_types/core/EVM/types.d.ts +57 -0
  222. package/dist/_types/core/EVM/types.d.ts.map +1 -0
  223. package/dist/_types/core/EVM/utils.d.ts +5 -0
  224. package/dist/_types/core/EVM/utils.d.ts.map +1 -0
  225. package/dist/_types/core/Solana/Solana.d.ts +3 -0
  226. package/dist/_types/core/Solana/Solana.d.ts.map +1 -0
  227. package/dist/_types/core/Solana/SolanaStepExecutor.d.ts +13 -0
  228. package/dist/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -0
  229. package/dist/_types/core/Solana/connection.d.ts +8 -0
  230. package/dist/_types/core/Solana/connection.d.ts.map +1 -0
  231. package/dist/_types/core/Solana/getSolanaBalance.d.ts +3 -0
  232. package/dist/_types/core/Solana/getSolanaBalance.d.ts.map +1 -0
  233. package/dist/_types/core/Solana/types.d.ts +13 -0
  234. package/dist/_types/core/Solana/types.d.ts.map +1 -0
  235. package/dist/{cjs/execution → _types/core}/StatusManager.d.ts +12 -16
  236. package/dist/_types/core/StatusManager.d.ts.map +1 -0
  237. package/dist/_types/core/checkBalance.d.ts +3 -0
  238. package/dist/_types/core/checkBalance.d.ts.map +1 -0
  239. package/dist/_types/core/execution.d.ts +42 -0
  240. package/dist/_types/core/execution.d.ts.map +1 -0
  241. package/dist/_types/core/executionState.d.ts +16 -0
  242. package/dist/_types/core/executionState.d.ts.map +1 -0
  243. package/dist/_types/core/index.d.ts +4 -0
  244. package/dist/_types/core/index.d.ts.map +1 -0
  245. package/dist/_types/core/prepareRestart.d.ts +3 -0
  246. package/dist/_types/core/prepareRestart.d.ts.map +1 -0
  247. package/dist/_types/core/provider.d.ts +3 -0
  248. package/dist/_types/core/provider.d.ts.map +1 -0
  249. package/dist/{execution → _types/core}/stepComparison.d.ts +7 -4
  250. package/dist/_types/core/stepComparison.d.ts.map +1 -0
  251. package/dist/_types/core/types.d.ts +71 -0
  252. package/dist/_types/core/types.d.ts.map +1 -0
  253. package/dist/{execution → _types/core}/utils.d.ts +5 -2
  254. package/dist/_types/core/utils.d.ts.map +1 -0
  255. package/dist/_types/core/waitForReceivingTransaction.d.ts +4 -0
  256. package/dist/_types/core/waitForReceivingTransaction.d.ts.map +1 -0
  257. package/dist/_types/createConfig.d.ts +7 -0
  258. package/dist/_types/createConfig.d.ts.map +1 -0
  259. package/dist/{helpers.d.ts → _types/helpers.d.ts} +4 -3
  260. package/dist/_types/helpers.d.ts.map +1 -0
  261. package/dist/_types/index.d.ts +12 -0
  262. package/dist/_types/index.d.ts.map +1 -0
  263. package/dist/{request.d.ts → _types/request.d.ts} +1 -0
  264. package/dist/_types/request.d.ts.map +1 -0
  265. package/dist/_types/services/api.d.ts +87 -0
  266. package/dist/_types/services/api.d.ts.map +1 -0
  267. package/dist/_types/services/balance.d.ts +30 -0
  268. package/dist/_types/services/balance.d.ts.map +1 -0
  269. package/dist/{cjs → _types}/typeguards.d.ts +3 -2
  270. package/dist/_types/typeguards.d.ts.map +1 -0
  271. package/dist/_types/types/index.d.ts +2 -0
  272. package/dist/_types/types/index.d.ts.map +1 -0
  273. package/dist/_types/types/internal.d.ts +56 -0
  274. package/dist/_types/types/internal.d.ts.map +1 -0
  275. package/dist/{utils → _types/utils}/errors.d.ts +1 -0
  276. package/dist/_types/utils/errors.d.ts.map +1 -0
  277. package/dist/_types/utils/getTransactionMessage.d.ts +4 -0
  278. package/dist/_types/utils/getTransactionMessage.d.ts.map +1 -0
  279. package/dist/_types/utils/index.d.ts +6 -0
  280. package/dist/_types/utils/index.d.ts.map +1 -0
  281. package/dist/{cjs → _types}/utils/median.d.ts +1 -0
  282. package/dist/_types/utils/median.d.ts.map +1 -0
  283. package/dist/_types/utils/parseBackendError.d.ts +3 -0
  284. package/dist/_types/utils/parseBackendError.d.ts.map +1 -0
  285. package/dist/{utils → _types/utils}/parseError.d.ts +4 -6
  286. package/dist/_types/utils/parseError.d.ts.map +1 -0
  287. package/dist/{utils → _types/utils}/utils.d.ts +1 -0
  288. package/dist/_types/utils/utils.d.ts.map +1 -0
  289. package/dist/_types/version.d.ts +3 -0
  290. package/dist/_types/version.d.ts.map +1 -0
  291. package/dist/config.ts +47 -0
  292. package/dist/constants.ts +7 -0
  293. package/dist/core/BaseStepExecutor.ts +40 -0
  294. package/dist/core/EVM/EVM.ts +50 -0
  295. package/dist/core/EVM/EVMStepExecutor.ts +472 -0
  296. package/dist/core/EVM/abi.ts +47 -0
  297. package/dist/core/EVM/checkAllowance.ts +152 -0
  298. package/dist/core/EVM/getAllowance.ts +146 -0
  299. package/dist/core/EVM/getEVMBalance.ts +120 -0
  300. package/dist/core/EVM/multisig.ts +53 -0
  301. package/dist/core/EVM/publicClient.ts +46 -0
  302. package/dist/core/EVM/setAllowance.ts +144 -0
  303. package/dist/core/EVM/switchChain.ts +77 -0
  304. package/dist/core/EVM/types.ts +75 -0
  305. package/dist/core/EVM/utils.ts +43 -0
  306. package/dist/core/Solana/Solana.ts +46 -0
  307. package/dist/core/Solana/SolanaStepExecutor.ts +253 -0
  308. package/dist/core/Solana/connection.ts +19 -0
  309. package/dist/core/Solana/getSolanaBalance.ts +62 -0
  310. package/dist/core/Solana/types.ts +18 -0
  311. package/dist/core/StatusManager.ts +238 -0
  312. package/dist/core/checkBalance.ts +48 -0
  313. package/dist/core/execution.ts +218 -0
  314. package/dist/core/executionState.ts +40 -0
  315. package/dist/core/index.ts +3 -0
  316. package/dist/core/prepareRestart.ts +81 -0
  317. package/dist/core/provider.ts +12 -0
  318. package/dist/core/stepComparison.ts +51 -0
  319. package/dist/core/types.ts +103 -0
  320. package/dist/core/utils.ts +122 -0
  321. package/dist/core/waitForReceivingTransaction.ts +73 -0
  322. package/dist/createConfig.ts +54 -0
  323. package/dist/helpers.ts +97 -0
  324. package/dist/index.ts +11 -0
  325. package/dist/request.ts +79 -0
  326. package/dist/services/api.ts +472 -0
  327. package/dist/services/balance.ts +93 -0
  328. package/dist/typeguards.ts +89 -0
  329. package/dist/types/index.ts +1 -0
  330. package/dist/types/internal.ts +58 -0
  331. package/dist/utils/errors.ts +231 -0
  332. package/dist/utils/getTransactionMessage.ts +46 -0
  333. package/dist/utils/index.ts +5 -0
  334. package/dist/utils/median.ts +11 -0
  335. package/dist/utils/parseBackendError.ts +50 -0
  336. package/dist/utils/parseError.ts +204 -0
  337. package/dist/utils/utils.ts +48 -0
  338. package/dist/version.ts +2 -0
  339. package/package.json +27 -86
  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.d.ts +0 -21
  384. package/dist/cjs/execution/switchChain.js +0 -54
  385. package/dist/cjs/execution/utils.d.ts +0 -12
  386. package/dist/cjs/execution/waitForReceivingTransaction.d.ts +0 -3
  387. package/dist/cjs/helpers.d.ts +0 -18
  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/services/ApiService.d.ts +0 -17
  392. package/dist/cjs/services/ApiService.js +0 -326
  393. package/dist/cjs/services/ChainsService.d.ts +0 -11
  394. package/dist/cjs/services/ChainsService.js +0 -39
  395. package/dist/cjs/services/ConfigService.d.ts +0 -23
  396. package/dist/cjs/services/ConfigService.js +0 -101
  397. package/dist/cjs/types/index.d.ts +0 -4
  398. package/dist/cjs/types/index.js +0 -22
  399. package/dist/cjs/types/internal.types.d.ts +0 -142
  400. package/dist/cjs/utils/errors.d.ts +0 -107
  401. package/dist/cjs/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  402. package/dist/cjs/utils/index.d.ts +0 -5
  403. package/dist/cjs/utils/index.js +0 -21
  404. package/dist/cjs/utils/parseError.d.ts +0 -37
  405. package/dist/cjs/utils/parseError.js +0 -157
  406. package/dist/cjs/utils/utils.d.ts +0 -10
  407. package/dist/cjs/version.d.ts +0 -2
  408. package/dist/connectors.d.ts +0 -8
  409. package/dist/connectors.js +0 -41
  410. package/dist/constants.d.ts +0 -6
  411. package/dist/execution/RouteExecutionManager.d.ts +0 -59
  412. package/dist/execution/RouteExecutionManager.js +0 -195
  413. package/dist/execution/StatusManager.d.ts +0 -67
  414. package/dist/execution/StatusManager.js +0 -167
  415. package/dist/execution/StepExecutionManager.d.ts +0 -7
  416. package/dist/execution/StepExecutionManager.js +0 -260
  417. package/dist/execution/StepExecutor.d.ts +0 -15
  418. package/dist/execution/StepExecutor.js +0 -58
  419. package/dist/execution/checkAllowance.d.ts +0 -4
  420. package/dist/execution/checkBalance.d.ts +0 -2
  421. package/dist/execution/index.d.ts +0 -1
  422. package/dist/execution/index.js +0 -1
  423. package/dist/execution/multisig.d.ts +0 -4
  424. package/dist/execution/prepareRestart.d.ts +0 -3
  425. package/dist/execution/prepareRestart.js +0 -61
  426. package/dist/execution/waitForReceivingTransaction.d.ts +0 -3
  427. package/dist/index.d.ts +0 -5
  428. package/dist/index.js +0 -6
  429. package/dist/services/ApiService.d.ts +0 -17
  430. package/dist/services/ApiService.js +0 -321
  431. package/dist/services/ChainsService.d.ts +0 -11
  432. package/dist/services/ChainsService.js +0 -33
  433. package/dist/services/ConfigService.d.ts +0 -23
  434. package/dist/services/ConfigService.js +0 -99
  435. package/dist/typeguards.d.ts +0 -4
  436. package/dist/types/abi.d.ts +0 -5
  437. package/dist/types/index.d.ts +0 -4
  438. package/dist/types/index.js +0 -4
  439. package/dist/types/internal.types.d.ts +0 -142
  440. package/dist/types/internal.types.js +0 -1
  441. package/dist/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  442. package/dist/utils/index.d.ts +0 -5
  443. package/dist/utils/index.js +0 -5
  444. package/dist/utils/median.d.ts +0 -1
  445. package/dist/version.d.ts +0 -2
  446. package/dist/version.js +0 -2
@@ -0,0 +1,103 @@
1
+ import type {
2
+ ChainType,
3
+ LiFiStep,
4
+ Route,
5
+ Token,
6
+ TokenAmount,
7
+ } from '@lifi/types'
8
+ import type { WalletClient } from 'viem'
9
+
10
+ export interface SDKProvider {
11
+ readonly type: ChainType
12
+ isAddress(address: string): boolean
13
+ getStepExecutor(options: StepExecutorOptions): Promise<StepExecutor>
14
+ getBalance(walletAddress: string, tokens: Token[]): Promise<TokenAmount[]>
15
+ }
16
+
17
+ export interface StepExecutorOptions {
18
+ routeId: string
19
+ executionOptions?: ExecutionOptions
20
+ }
21
+
22
+ export interface InteractionSettings {
23
+ allowInteraction?: boolean
24
+ allowUpdates?: boolean
25
+ allowExecution?: boolean
26
+ }
27
+
28
+ export interface StepExecutor {
29
+ allowUserInteraction: boolean
30
+ allowExecution: boolean
31
+ setInteraction(settings?: InteractionSettings): void
32
+ executeStep(step: LiFiStep): Promise<LiFiStep>
33
+ }
34
+
35
+ export type TransactionParameters = {
36
+ chainId?: number
37
+ to?: string
38
+ from?: string
39
+ nonce?: number
40
+ data?: string
41
+ value?: bigint
42
+ gas?: bigint
43
+ gasPrice?: bigint
44
+ maxFeePerGas?: bigint
45
+ maxPriorityFeePerGas?: bigint
46
+ }
47
+
48
+ export interface RouteExecutionData {
49
+ route: Route
50
+ executors: StepExecutor[]
51
+ executionOptions?: ExecutionOptions
52
+ }
53
+
54
+ export type RouteExecutionDataDictionary = Partial<
55
+ Record<string, RouteExecutionData>
56
+ >
57
+
58
+ export type RouteExecutionDictionary = Partial<Record<string, Promise<Route>>>
59
+
60
+ export type UpdateRouteHook = (updatedRoute: Route) => void
61
+
62
+ export interface TransactionRequestParameters extends TransactionParameters {
63
+ requestType: 'approve' | 'transaction'
64
+ }
65
+
66
+ export type TransactionRequestUpdateHook = (
67
+ updatedTxRequest: TransactionRequestParameters
68
+ ) => Promise<TransactionParameters>
69
+
70
+ export type SwitchChainHook = (
71
+ chainId: number
72
+ ) => Promise<WalletClient | undefined>
73
+
74
+ export interface AcceptSlippageUpdateHookParams {
75
+ toToken: Token
76
+ oldToAmount: string
77
+ newToAmount: string
78
+ oldSlippage: number
79
+ newSlippage: number
80
+ }
81
+
82
+ export type AcceptSlippageUpdateHook = (
83
+ params: AcceptSlippageUpdateHookParams
84
+ ) => Promise<boolean | undefined>
85
+
86
+ export interface ExchangeRateUpdateParams {
87
+ toToken: Token
88
+ oldToAmount: string
89
+ newToAmount: string
90
+ }
91
+
92
+ export type AcceptExchangeRateUpdateHook = (
93
+ params: ExchangeRateUpdateParams
94
+ ) => Promise<boolean | undefined>
95
+
96
+ export interface ExecutionOptions {
97
+ acceptExchangeRateUpdateHook?: AcceptExchangeRateUpdateHook
98
+ switchChainHook?: SwitchChainHook
99
+ updateRouteHook?: UpdateRouteHook
100
+ updateTransactionRequestHook?: TransactionRequestUpdateHook
101
+ executeInBackground?: boolean
102
+ infiniteApproval?: boolean
103
+ }
@@ -0,0 +1,122 @@
1
+ import {
2
+ type ChainId,
3
+ type LiFiStep,
4
+ type ProcessType,
5
+ type Status,
6
+ type StatusMessage,
7
+ type Substatus,
8
+ } from '@lifi/types'
9
+ import { config } from '../config.js'
10
+
11
+ export const getRpcUrl = async (chainId: ChainId): Promise<string> => {
12
+ const rpcUrls = await getRpcUrls(chainId)
13
+ return rpcUrls[0]
14
+ }
15
+
16
+ export const getRpcUrls = async (chainId: ChainId): Promise<string[]> => {
17
+ const rpcUrls = (await config.getRPCUrls())[chainId]
18
+ if (!rpcUrls?.length) {
19
+ throw new Error('RPC URL not found')
20
+ }
21
+ return rpcUrls
22
+ }
23
+
24
+ const processMessages: Record<ProcessType, Partial<Record<Status, string>>> = {
25
+ TOKEN_ALLOWANCE: {
26
+ STARTED: 'Setting token allowance.',
27
+ PENDING: 'Waiting for token allowance.',
28
+ DONE: 'Token allowance set.',
29
+ },
30
+ SWITCH_CHAIN: {
31
+ PENDING: 'Chain switch required.',
32
+ DONE: 'Chain switched successfully.',
33
+ },
34
+ SWAP: {
35
+ STARTED: 'Preparing swap transaction.',
36
+ ACTION_REQUIRED: 'Please sign the transaction.',
37
+ PENDING: 'Waiting for swap transaction.',
38
+ DONE: 'Swap completed.',
39
+ },
40
+ CROSS_CHAIN: {
41
+ STARTED: 'Preparing bridge transaction.',
42
+ ACTION_REQUIRED: 'Please sign the transaction.',
43
+ PENDING: 'Waiting for bridge transaction.',
44
+ DONE: 'Bridge transaction confirmed.',
45
+ },
46
+ RECEIVING_CHAIN: {
47
+ PENDING: 'Waiting for destination chain.',
48
+ DONE: 'Bridge completed.',
49
+ },
50
+ TRANSACTION: {},
51
+ }
52
+ const substatusMessages: Record<
53
+ StatusMessage,
54
+ Partial<Record<Substatus, string>>
55
+ > = {
56
+ PENDING: {
57
+ BRIDGE_NOT_AVAILABLE: 'Bridge communication is temporarily unavailable.',
58
+ CHAIN_NOT_AVAILABLE: 'RPC communication is temporarily unavailable.',
59
+ NOT_PROCESSABLE_REFUND_NEEDED:
60
+ 'The transfer cannot be completed successfully. A refund operation is required.',
61
+ UNKNOWN_ERROR:
62
+ 'An unexpected error occurred. Please seek assistance in the LI.FI discord server.',
63
+ WAIT_SOURCE_CONFIRMATIONS:
64
+ 'The bridge deposit has been received. The bridge is waiting for more confirmations to start the off-chain logic.',
65
+ WAIT_DESTINATION_TRANSACTION:
66
+ 'The bridge off-chain logic is being executed. Wait for the transaction to appear on the destination chain.',
67
+ },
68
+ DONE: {
69
+ PARTIAL:
70
+ 'Some of the received tokens are not the requested destination tokens.',
71
+ REFUNDED: 'The tokens were refunded to the sender address.',
72
+ COMPLETED: 'The transfer is complete.',
73
+ },
74
+ FAILED: {},
75
+ INVALID: {},
76
+ NOT_FOUND: {},
77
+ }
78
+
79
+ export function getProcessMessage(
80
+ type: ProcessType,
81
+ status: Status
82
+ ): string | undefined {
83
+ const processMessage = processMessages[type][status]
84
+ return processMessage
85
+ }
86
+
87
+ export function getSubstatusMessage(
88
+ status: StatusMessage,
89
+ substatus?: Substatus
90
+ ): string | undefined {
91
+ if (!substatus) {
92
+ return
93
+ }
94
+ const message = substatusMessages[status][substatus]
95
+ return message
96
+ }
97
+
98
+ /**
99
+ * Used to check if changed exchange rate is in the range of slippage threshold.
100
+ * We use a slippage value as a threshold to trigger the rate change hook.
101
+ * This can result in almost doubled slippage for the user and need to be revisited.
102
+ * @param oldStep
103
+ * @param newStep
104
+ * @returns Boolean
105
+ */
106
+ export function checkStepSlippageThreshold(
107
+ oldStep: LiFiStep,
108
+ newStep: LiFiStep
109
+ ): boolean {
110
+ const setSlippage = oldStep.action.slippage
111
+ const oldEstimatedToAmount = BigInt(oldStep.estimate.toAmountMin)
112
+ const newEstimatedToAmount = BigInt(newStep.estimate.toAmountMin)
113
+ const amountDifference = oldEstimatedToAmount - newEstimatedToAmount
114
+ // oldEstimatedToAmount can be 0 when we use conract calls
115
+ let actualSlippage = 0
116
+ if (oldEstimatedToAmount > 0) {
117
+ actualSlippage =
118
+ Number((amountDifference * 1_000_000_000n) / oldEstimatedToAmount) /
119
+ 1_000_000_000
120
+ }
121
+ return actualSlippage <= setSlippage
122
+ }
@@ -0,0 +1,73 @@
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
+ bridge: step.tool,
27
+ fromChain: step.action.fromChainId,
28
+ toChain: step.action.toChainId,
29
+ txHash,
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 'FAILED':
54
+ default:
55
+ return reject()
56
+ }
57
+ })
58
+
59
+ let status
60
+
61
+ if (txHash in TRANSACTION_HASH_OBSERVERS) {
62
+ status = await TRANSACTION_HASH_OBSERVERS[txHash]
63
+ } else {
64
+ TRANSACTION_HASH_OBSERVERS[txHash] = repeatUntilDone(_getStatus, 5_000)
65
+ status = await TRANSACTION_HASH_OBSERVERS[txHash]
66
+ }
67
+
68
+ if (!status.receiving) {
69
+ throw new ServerError("Status doesn't contain receiving information.")
70
+ }
71
+
72
+ return status
73
+ }
@@ -0,0 +1,54 @@
1
+ /* eslint-disable @typescript-eslint/no-empty-function */
2
+ import type { ChainId } from '@lifi/types'
3
+ import { config } from './config.js'
4
+ import { isEVM } from './core/EVM/types.js'
5
+ import { checkPackageUpdates } from './helpers.js'
6
+ import { getChains } from './services/api.js'
7
+ import type { SDKOptions } from './types/index.js'
8
+ import { name, version } from './version.js'
9
+
10
+ function createBaseConfig(options: SDKOptions) {
11
+ if (!options.integrator) {
12
+ throw new Error(
13
+ 'Integrator not found. Please see documentation https://docs.li.fi/integrate-li.fi-js-sdk/set-up-the-sdk'
14
+ )
15
+ }
16
+ config.set(options)
17
+ checkPackageUpdates(name, version, options.disableVersionCheck)
18
+ }
19
+
20
+ export async function createChainsConfig() {
21
+ const _config = config.get()
22
+ const chainTypes = _config.providers?.map((provider) => provider.type)
23
+ config.loading = getChains({ chainTypes: chainTypes }).then((chains) => {
24
+ config.chains = chains
25
+ const evmProvider = _config.providers?.find(isEVM)
26
+ const multicallAddresses: Partial<Record<ChainId, string>> = {}
27
+ for (const chain of chains) {
28
+ const chainId = chain.id as ChainId
29
+
30
+ // set RPCs if they were not configured by the user before
31
+ if (!_config.rpcUrls[chainId]?.length) {
32
+ _config.rpcUrls[chainId] = chain.metamask.rpcUrls
33
+ }
34
+
35
+ // set multicall addresses if they exist and were not configured by the user before
36
+ if (chain.multicallAddress && !evmProvider?.multicall?.[chainId]) {
37
+ multicallAddresses[chainId] = chain.multicallAddress
38
+ }
39
+ }
40
+ evmProvider?.setOptions({
41
+ multicall: multicallAddresses,
42
+ })
43
+ })
44
+ await config.loading
45
+ }
46
+
47
+ export function createConfig(options: SDKOptions) {
48
+ createBaseConfig(options)
49
+ createChainsConfig()
50
+ return {
51
+ set: config.set,
52
+ get: config.get,
53
+ }
54
+ }
@@ -0,0 +1,97 @@
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
+ function semverCompare(a: string, b: string) {
18
+ if (a.startsWith(b + '-')) {
19
+ return -1
20
+ }
21
+ if (b.startsWith(a + '-')) {
22
+ return 1
23
+ }
24
+ return a.localeCompare(b, undefined, {
25
+ numeric: true,
26
+ sensitivity: 'case',
27
+ caseFirst: 'upper',
28
+ })
29
+ }
30
+
31
+ export const checkPackageUpdates = async (
32
+ packageName?: string,
33
+ packageVersion?: string,
34
+ disableCheck?: boolean
35
+ ) => {
36
+ if (disableCheck || process.env.NODE_ENV !== 'development') {
37
+ return
38
+ }
39
+ try {
40
+ const pkgName = packageName ?? name
41
+ const response = await request<{ version: string }>(
42
+ `https://registry.npmjs.org/${pkgName}/latest`,
43
+ { skipTrackingHeaders: true }
44
+ )
45
+ const latestVersion = response.version
46
+ const currentVersion = packageVersion ?? version
47
+ if (semverCompare(latestVersion, currentVersion)) {
48
+ console.warn(
49
+ // eslint-disable-next-line max-len
50
+ `${pkgName}: new package version is available. Please update as soon as possible to enjoy the newest features. Current version: ${currentVersion}. Latest version: ${latestVersion}.`
51
+ )
52
+ }
53
+ } catch (error) {
54
+ // Cannot verify version, might be network error etc. We don't bother showing anything in that case
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Converts a quote to Route
60
+ * @param step - Step returned from the quote endpoint.
61
+ * @returns - The route to be executed.
62
+ * @throws {ValidationError} Throws a ValidationError if the step has missing values.
63
+ */
64
+ export const convertQuoteToRoute = (step: LiFiStep): Route => {
65
+ if (!step.estimate.fromAmountUSD) {
66
+ throw new ValidationError("Missing 'fromAmountUSD' in step estimate.")
67
+ }
68
+
69
+ if (!step.estimate.toAmountUSD) {
70
+ throw new ValidationError("Missing 'toAmountUSD' in step estimate.")
71
+ }
72
+
73
+ const route: Route = {
74
+ fromToken: step.action.fromToken,
75
+ toToken: step.action.toToken,
76
+ fromAmount: step.action.fromAmount,
77
+ toAmount: step.estimate.toAmount,
78
+ id: step.id,
79
+ fromChainId: step.action.fromToken.chainId,
80
+ toChainId: step.action.toToken.chainId,
81
+ fromAmountUSD: step.estimate.fromAmountUSD,
82
+ toAmountUSD: step.estimate.toAmountUSD,
83
+ steps: [step],
84
+ toAmountMin: step.estimate.toAmountMin,
85
+ insurance: { state: 'NOT_INSURABLE', feeAmountUsd: '0' },
86
+ }
87
+
88
+ return route
89
+ }
90
+
91
+ export const fetchTxErrorDetails = async (txHash: string, chainId: number) => {
92
+ const response = await request<TenderlyResponse>(
93
+ `https://api.tenderly.co/api/v1/public-contract/${chainId}/tx/${txHash}`
94
+ )
95
+
96
+ return response
97
+ }
package/dist/index.ts ADDED
@@ -0,0 +1,11 @@
1
+ export * from '@lifi/types'
2
+ export { EVM } from './core/EVM/EVM.js'
3
+ export { Solana } from './core/Solana/Solana.js'
4
+ export * from './core/index.js'
5
+ export { createConfig } from './createConfig.js'
6
+ export * from './helpers.js'
7
+ export * from './services/api.js'
8
+ export * from './services/balance.js'
9
+ export * from './types/index.js'
10
+ export * from './utils/errors.js'
11
+ export { LiFiError, type ErrorCode } from './utils/errors.js'
@@ -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
+ }