@lifi/sdk 3.0.0-alpha.9 → 3.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/package.json +40 -98
  2. package/src/_cjs/config.js +90 -0
  3. package/src/_cjs/config.js.map +1 -0
  4. package/{dist/cjs → src/_cjs}/constants.js +3 -5
  5. package/src/_cjs/constants.js.map +1 -0
  6. package/src/_cjs/core/BaseStepExecutor.js +55 -0
  7. package/src/_cjs/core/BaseStepExecutor.js.map +1 -0
  8. package/src/_cjs/core/EVM/EVM.js +43 -0
  9. package/src/_cjs/core/EVM/EVM.js.map +1 -0
  10. package/src/_cjs/core/EVM/EVMStepExecutor.js +304 -0
  11. package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -0
  12. package/{dist/cjs/types → src/_cjs/core/EVM}/abi.js +1 -0
  13. package/src/_cjs/core/EVM/abi.js.map +1 -0
  14. package/{dist/cjs/execution → src/_cjs/core/EVM}/checkAllowance.js +19 -12
  15. package/src/_cjs/core/EVM/checkAllowance.js.map +1 -0
  16. package/{dist/cjs/allowance → src/_cjs/core/EVM}/getAllowance.js +13 -17
  17. package/src/_cjs/core/EVM/getAllowance.js.map +1 -0
  18. package/src/_cjs/core/EVM/getENSAddress.js +20 -0
  19. package/src/_cjs/core/EVM/getENSAddress.js.map +1 -0
  20. package/{dist/cjs/balance/getBalance.js → src/_cjs/core/EVM/getEVMBalance.js} +20 -22
  21. package/src/_cjs/core/EVM/getEVMBalance.js.map +1 -0
  22. package/{dist/cjs/execution → src/_cjs/core/EVM}/multisig.js +7 -8
  23. package/src/_cjs/core/EVM/multisig.js.map +1 -0
  24. package/src/_cjs/core/EVM/publicClient.js +43 -0
  25. package/src/_cjs/core/EVM/publicClient.js.map +1 -0
  26. package/{dist/cjs/allowance → src/_cjs/core/EVM}/setAllowance.js +11 -12
  27. package/src/_cjs/core/EVM/setAllowance.js.map +1 -0
  28. package/src/_cjs/core/EVM/switchChain.js +38 -0
  29. package/src/_cjs/core/EVM/switchChain.js.map +1 -0
  30. package/src/_cjs/core/EVM/types.js +9 -0
  31. package/src/_cjs/core/EVM/types.js.map +1 -0
  32. package/{dist/cjs/utils/getMaxPriorityFeePerGas.js → src/_cjs/core/EVM/utils.js} +13 -3
  33. package/src/_cjs/core/EVM/utils.js.map +1 -0
  34. package/src/_cjs/core/Solana/KeypairWalletAdapter.js +88 -0
  35. package/src/_cjs/core/Solana/KeypairWalletAdapter.js.map +1 -0
  36. package/src/_cjs/core/Solana/Solana.js +38 -0
  37. package/src/_cjs/core/Solana/Solana.js.map +1 -0
  38. package/src/_cjs/core/Solana/SolanaStepExecutor.js +200 -0
  39. package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -0
  40. package/src/_cjs/core/Solana/connection.js +19 -0
  41. package/src/_cjs/core/Solana/connection.js.map +1 -0
  42. package/src/_cjs/core/Solana/getSNSAddress.js +26 -0
  43. package/src/_cjs/core/Solana/getSNSAddress.js.map +1 -0
  44. package/src/_cjs/core/Solana/getSolanaBalance.js +60 -0
  45. package/src/_cjs/core/Solana/getSolanaBalance.js.map +1 -0
  46. package/src/_cjs/core/Solana/isAddress.js +15 -0
  47. package/src/_cjs/core/Solana/isAddress.js.map +1 -0
  48. package/src/_cjs/core/Solana/types.js +10 -0
  49. package/src/_cjs/core/Solana/types.js.map +1 -0
  50. package/src/_cjs/core/StatusManager.js +168 -0
  51. package/src/_cjs/core/StatusManager.js.map +1 -0
  52. package/{dist/cjs/execution → src/_cjs/core}/checkBalance.js +6 -6
  53. package/src/_cjs/core/checkBalance.js.map +1 -0
  54. package/src/_cjs/core/execution.js +138 -0
  55. package/src/_cjs/core/execution.js.map +1 -0
  56. package/src/_cjs/core/executionState.js +29 -0
  57. package/src/_cjs/core/executionState.js.map +1 -0
  58. package/src/_cjs/core/index.js +7 -0
  59. package/src/_cjs/core/index.js.map +1 -0
  60. package/src/_cjs/core/prepareRestart.js +23 -0
  61. package/src/_cjs/core/prepareRestart.js.map +1 -0
  62. package/src/_cjs/core/provider.js +15 -0
  63. package/src/_cjs/core/provider.js.map +1 -0
  64. package/src/_cjs/core/rpc.js +18 -0
  65. package/src/_cjs/core/rpc.js.map +1 -0
  66. package/src/_cjs/core/stepComparison.js +25 -0
  67. package/src/_cjs/core/stepComparison.js.map +1 -0
  68. package/{dist/cjs/allowance → src/_cjs/core}/types.js +1 -0
  69. package/src/_cjs/core/types.js.map +1 -0
  70. package/{dist/cjs/execution → src/_cjs/core}/utils.js +2 -11
  71. package/src/_cjs/core/utils.js.map +1 -0
  72. package/{dist/cjs/execution → src/_cjs/core}/waitForReceivingTransaction.js +13 -14
  73. package/src/_cjs/core/waitForReceivingTransaction.js.map +1 -0
  74. package/src/_cjs/createConfig.js +34 -0
  75. package/src/_cjs/createConfig.js.map +1 -0
  76. package/src/_cjs/helpers.js +50 -0
  77. package/src/_cjs/helpers.js.map +1 -0
  78. package/src/_cjs/index.js +30 -0
  79. package/src/_cjs/index.js.map +1 -0
  80. package/src/_cjs/package.json +1 -0
  81. package/{dist/cjs → src/_cjs}/request.js +18 -15
  82. package/src/_cjs/request.js.map +1 -0
  83. package/src/_cjs/services/api.js +309 -0
  84. package/src/_cjs/services/api.js.map +1 -0
  85. package/src/_cjs/services/balance.js +49 -0
  86. package/src/_cjs/services/balance.js.map +1 -0
  87. package/src/_cjs/services/getNameServiceAddress.js +29 -0
  88. package/src/_cjs/services/getNameServiceAddress.js.map +1 -0
  89. package/{dist/cjs → src/_cjs}/typeguards.js +1 -0
  90. package/src/_cjs/typeguards.js.map +1 -0
  91. package/src/_cjs/types/index.js +5 -0
  92. package/src/_cjs/types/index.js.map +1 -0
  93. package/{dist/cjs → src/_cjs}/types/internal.js +1 -0
  94. package/src/_cjs/types/internal.js.map +1 -0
  95. package/src/_cjs/utils/base64ToUint8Array.js +14 -0
  96. package/src/_cjs/utils/base64ToUint8Array.js.map +1 -0
  97. package/{dist/cjs → src/_cjs}/utils/errors.js +26 -3
  98. package/src/_cjs/utils/errors.js.map +1 -0
  99. package/src/_cjs/utils/getTransactionMessage.js +31 -0
  100. package/src/_cjs/utils/getTransactionMessage.js.map +1 -0
  101. package/src/_cjs/utils/index.js +9 -0
  102. package/src/_cjs/utils/index.js.map +1 -0
  103. package/{dist/cjs → src/_cjs}/utils/median.js +1 -0
  104. package/src/_cjs/utils/median.js.map +1 -0
  105. package/src/_cjs/utils/parseBackendError.js +27 -0
  106. package/src/_cjs/utils/parseBackendError.js.map +1 -0
  107. package/src/_cjs/utils/parseError.js +69 -0
  108. package/src/_cjs/utils/parseError.js.map +1 -0
  109. package/{dist/cjs → src/_cjs}/utils/utils.js +5 -11
  110. package/src/_cjs/utils/utils.js.map +1 -0
  111. package/{dist/cjs → src/_cjs}/version.js +2 -1
  112. package/src/_cjs/version.js.map +1 -0
  113. package/src/_esm/config.js +87 -0
  114. package/src/_esm/config.js.map +1 -0
  115. package/{dist → src/_esm}/constants.js +2 -4
  116. package/src/_esm/constants.js.map +1 -0
  117. package/src/_esm/core/BaseStepExecutor.js +52 -0
  118. package/src/_esm/core/BaseStepExecutor.js.map +1 -0
  119. package/src/_esm/core/EVM/EVM.js +39 -0
  120. package/src/_esm/core/EVM/EVM.js.map +1 -0
  121. package/src/_esm/core/EVM/EVMStepExecutor.js +329 -0
  122. package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -0
  123. package/{dist/types → src/_esm/core/EVM}/abi.js +1 -0
  124. package/src/_esm/core/EVM/abi.js.map +1 -0
  125. package/{dist/execution → src/_esm/core/EVM}/checkAllowance.js +14 -5
  126. package/src/_esm/core/EVM/checkAllowance.js.map +1 -0
  127. package/{dist/allowance → src/_esm/core/EVM}/getAllowance.js +19 -6
  128. package/src/_esm/core/EVM/getAllowance.js.map +1 -0
  129. package/src/_esm/core/EVM/getENSAddress.js +17 -0
  130. package/src/_esm/core/EVM/getENSAddress.js.map +1 -0
  131. package/{dist/balance/getBalance.js → src/_esm/core/EVM/getEVMBalance.js} +10 -12
  132. package/src/_esm/core/EVM/getEVMBalance.js.map +1 -0
  133. package/{dist/execution → src/_esm/core/EVM}/multisig.js +5 -6
  134. package/src/_esm/core/EVM/multisig.js.map +1 -0
  135. package/src/_esm/core/EVM/publicClient.js +46 -0
  136. package/src/_esm/core/EVM/publicClient.js.map +1 -0
  137. package/{dist/allowance → src/_esm/core/EVM}/setAllowance.js +23 -4
  138. package/src/_esm/core/EVM/setAllowance.js.map +1 -0
  139. package/{dist/execution → src/_esm/core/EVM}/switchChain.js +6 -4
  140. package/src/_esm/core/EVM/switchChain.js.map +1 -0
  141. package/src/_esm/core/EVM/types.js +6 -0
  142. package/src/_esm/core/EVM/types.js.map +1 -0
  143. package/{dist/utils/getMaxPriorityFeePerGas.js → src/_esm/core/EVM/utils.js} +12 -1
  144. package/src/_esm/core/EVM/utils.js.map +1 -0
  145. package/src/_esm/core/Solana/KeypairWalletAdapter.js +92 -0
  146. package/src/_esm/core/Solana/KeypairWalletAdapter.js.map +1 -0
  147. package/src/_esm/core/Solana/Solana.js +34 -0
  148. package/src/_esm/core/Solana/Solana.js.map +1 -0
  149. package/src/_esm/core/Solana/SolanaStepExecutor.js +214 -0
  150. package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -0
  151. package/src/_esm/core/Solana/connection.js +20 -0
  152. package/src/_esm/core/Solana/connection.js.map +1 -0
  153. package/src/_esm/core/Solana/getSNSAddress.js +26 -0
  154. package/src/_esm/core/Solana/getSNSAddress.js.map +1 -0
  155. package/src/_esm/core/Solana/getSolanaBalance.js +56 -0
  156. package/src/_esm/core/Solana/getSolanaBalance.js.map +1 -0
  157. package/src/_esm/core/Solana/isAddress.js +11 -0
  158. package/src/_esm/core/Solana/isAddress.js.map +1 -0
  159. package/src/_esm/core/Solana/types.js +7 -0
  160. package/src/_esm/core/Solana/types.js.map +1 -0
  161. package/src/_esm/core/StatusManager.js +204 -0
  162. package/src/_esm/core/StatusManager.js.map +1 -0
  163. package/{dist/execution → src/_esm/core}/checkBalance.js +4 -3
  164. package/src/_esm/core/checkBalance.js.map +1 -0
  165. package/src/_esm/core/execution.js +176 -0
  166. package/src/_esm/core/execution.js.map +1 -0
  167. package/src/_esm/core/executionState.js +26 -0
  168. package/src/_esm/core/executionState.js.map +1 -0
  169. package/src/_esm/core/index.js +4 -0
  170. package/src/_esm/core/index.js.map +1 -0
  171. package/src/_esm/core/prepareRestart.js +19 -0
  172. package/src/_esm/core/prepareRestart.js.map +1 -0
  173. package/src/_esm/core/provider.js +11 -0
  174. package/src/_esm/core/provider.js.map +1 -0
  175. package/src/_esm/core/rpc.js +14 -0
  176. package/src/_esm/core/rpc.js.map +1 -0
  177. package/{dist/execution → src/_esm/core}/stepComparison.js +6 -4
  178. package/src/_esm/core/stepComparison.js.map +1 -0
  179. package/src/_esm/core/types.js +2 -0
  180. package/src/_esm/core/types.js.map +1 -0
  181. package/{dist/execution → src/_esm/core}/utils.js +4 -3
  182. package/src/_esm/core/utils.js.map +1 -0
  183. package/{dist/execution → src/_esm/core}/waitForReceivingTransaction.js +11 -9
  184. package/src/_esm/core/waitForReceivingTransaction.js.map +1 -0
  185. package/src/_esm/createConfig.js +30 -0
  186. package/src/_esm/createConfig.js.map +1 -0
  187. package/{dist → src/_esm}/helpers.js +6 -30
  188. package/src/_esm/helpers.js.map +1 -0
  189. package/src/_esm/index.js +17 -0
  190. package/src/_esm/index.js.map +1 -0
  191. package/src/_esm/package.json +1 -0
  192. package/{dist → src/_esm}/request.js +14 -10
  193. package/src/_esm/request.js.map +1 -0
  194. package/src/_esm/services/api.js +378 -0
  195. package/src/_esm/services/api.js.map +1 -0
  196. package/src/_esm/services/balance.js +65 -0
  197. package/src/_esm/services/balance.js.map +1 -0
  198. package/src/_esm/services/getNameServiceAddress.js +25 -0
  199. package/src/_esm/services/getNameServiceAddress.js.map +1 -0
  200. package/{dist → src/_esm}/typeguards.js +1 -0
  201. package/src/_esm/typeguards.js.map +1 -0
  202. package/src/_esm/types/index.js +2 -0
  203. package/src/_esm/types/index.js.map +1 -0
  204. package/src/_esm/types/internal.js +2 -0
  205. package/src/_esm/types/internal.js.map +1 -0
  206. package/src/_esm/utils/base64ToUint8Array.js +10 -0
  207. package/src/_esm/utils/base64ToUint8Array.js.map +1 -0
  208. package/{dist → src/_esm}/utils/errors.js +26 -0
  209. package/src/_esm/utils/errors.js.map +1 -0
  210. package/src/_esm/utils/getTransactionMessage.js +28 -0
  211. package/src/_esm/utils/getTransactionMessage.js.map +1 -0
  212. package/src/_esm/utils/index.js +6 -0
  213. package/src/_esm/utils/index.js.map +1 -0
  214. package/{dist → src/_esm}/utils/median.js +1 -0
  215. package/src/_esm/utils/median.js.map +1 -0
  216. package/src/_esm/utils/parseBackendError.js +24 -0
  217. package/src/_esm/utils/parseBackendError.js.map +1 -0
  218. package/{dist → src/_esm}/utils/parseError.js +6 -53
  219. package/src/_esm/utils/parseError.js.map +1 -0
  220. package/{dist → src/_esm}/utils/utils.js +2 -1
  221. package/src/_esm/utils/utils.js.map +1 -0
  222. package/src/_esm/version.js +3 -0
  223. package/src/_esm/version.js.map +1 -0
  224. package/src/_types/config.d.ts +15 -0
  225. package/src/_types/config.d.ts.map +1 -0
  226. package/{dist/cjs → src/_types}/constants.d.ts +2 -4
  227. package/src/_types/constants.d.ts.map +1 -0
  228. package/src/_types/core/BaseStepExecutor.d.ts +13 -0
  229. package/src/_types/core/BaseStepExecutor.d.ts.map +1 -0
  230. package/src/_types/core/EVM/EVM.d.ts +3 -0
  231. package/src/_types/core/EVM/EVM.d.ts.map +1 -0
  232. package/src/_types/core/EVM/EVMStepExecutor.d.ts +17 -0
  233. package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -0
  234. package/{dist/cjs/types → src/_types/core/EVM}/abi.d.ts +1 -0
  235. package/src/_types/core/EVM/abi.d.ts.map +1 -0
  236. package/src/_types/core/EVM/checkAllowance.d.ts +6 -0
  237. package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -0
  238. package/{dist/cjs/allowance → src/_types/core/EVM}/getAllowance.d.ts +15 -1
  239. package/src/_types/core/EVM/getAllowance.d.ts.map +1 -0
  240. package/src/_types/core/EVM/getENSAddress.d.ts +2 -0
  241. package/src/_types/core/EVM/getENSAddress.d.ts.map +1 -0
  242. package/src/_types/core/EVM/getEVMBalance.d.ts +3 -0
  243. package/src/_types/core/EVM/getEVMBalance.d.ts.map +1 -0
  244. package/src/_types/core/EVM/multisig.d.ts +6 -0
  245. package/src/_types/core/EVM/multisig.d.ts.map +1 -0
  246. package/src/_types/core/EVM/publicClient.d.ts +8 -0
  247. package/src/_types/core/EVM/publicClient.d.ts.map +1 -0
  248. package/src/_types/core/EVM/setAllowance.d.ts +25 -0
  249. package/src/_types/core/EVM/setAllowance.d.ts.map +1 -0
  250. package/{dist/execution → src/_types/core/EVM}/switchChain.d.ts +4 -4
  251. package/src/_types/core/EVM/switchChain.d.ts.map +1 -0
  252. package/src/_types/core/EVM/types.d.ts +55 -0
  253. package/src/_types/core/EVM/types.d.ts.map +1 -0
  254. package/src/_types/core/EVM/utils.d.ts +10 -0
  255. package/src/_types/core/EVM/utils.d.ts.map +1 -0
  256. package/src/_types/core/Solana/KeypairWalletAdapter.d.ts +28 -0
  257. package/src/_types/core/Solana/KeypairWalletAdapter.d.ts.map +1 -0
  258. package/src/_types/core/Solana/Solana.d.ts +3 -0
  259. package/src/_types/core/Solana/Solana.d.ts.map +1 -0
  260. package/src/_types/core/Solana/SolanaStepExecutor.d.ts +13 -0
  261. package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -0
  262. package/src/_types/core/Solana/connection.d.ts +8 -0
  263. package/src/_types/core/Solana/connection.d.ts.map +1 -0
  264. package/src/_types/core/Solana/getSNSAddress.d.ts +2 -0
  265. package/src/_types/core/Solana/getSNSAddress.d.ts.map +1 -0
  266. package/src/_types/core/Solana/getSolanaBalance.d.ts +3 -0
  267. package/src/_types/core/Solana/getSolanaBalance.d.ts.map +1 -0
  268. package/src/_types/core/Solana/isAddress.d.ts +2 -0
  269. package/src/_types/core/Solana/isAddress.d.ts.map +1 -0
  270. package/src/_types/core/Solana/types.d.ts +11 -0
  271. package/src/_types/core/Solana/types.d.ts.map +1 -0
  272. package/{dist/cjs/execution → src/_types/core}/StatusManager.d.ts +14 -28
  273. package/src/_types/core/StatusManager.d.ts.map +1 -0
  274. package/{dist/cjs/execution → src/_types/core}/checkBalance.d.ts +1 -0
  275. package/src/_types/core/checkBalance.d.ts.map +1 -0
  276. package/src/_types/core/execution.d.ts +42 -0
  277. package/src/_types/core/execution.d.ts.map +1 -0
  278. package/src/_types/core/executionState.d.ts +17 -0
  279. package/src/_types/core/executionState.d.ts.map +1 -0
  280. package/src/_types/core/index.d.ts +4 -0
  281. package/src/_types/core/index.d.ts.map +1 -0
  282. package/src/_types/core/prepareRestart.d.ts +3 -0
  283. package/src/_types/core/prepareRestart.d.ts.map +1 -0
  284. package/src/_types/core/provider.d.ts +3 -0
  285. package/src/_types/core/provider.d.ts.map +1 -0
  286. package/src/_types/core/rpc.d.ts +4 -0
  287. package/src/_types/core/rpc.d.ts.map +1 -0
  288. package/{dist/execution → src/_types/core}/stepComparison.d.ts +5 -3
  289. package/src/_types/core/stepComparison.d.ts.map +1 -0
  290. package/src/_types/core/types.d.ts +81 -0
  291. package/src/_types/core/types.d.ts.map +1 -0
  292. package/{dist/execution → src/_types/core}/utils.d.ts +3 -2
  293. package/src/_types/core/utils.d.ts.map +1 -0
  294. package/{dist/cjs/execution → src/_types/core}/waitForReceivingTransaction.d.ts +2 -1
  295. package/src/_types/core/waitForReceivingTransaction.d.ts.map +1 -0
  296. package/src/_types/createConfig.d.ts +4 -0
  297. package/src/_types/createConfig.d.ts.map +1 -0
  298. package/{dist/cjs → src/_types}/helpers.d.ts +3 -9
  299. package/src/_types/helpers.d.ts.map +1 -0
  300. package/src/_types/index.d.ts +18 -0
  301. package/src/_types/index.d.ts.map +1 -0
  302. package/{dist → src/_types}/request.d.ts +1 -0
  303. package/src/_types/request.d.ts.map +1 -0
  304. package/src/_types/services/api.d.ts +89 -0
  305. package/src/_types/services/api.d.ts.map +1 -0
  306. package/src/_types/services/balance.d.ts +30 -0
  307. package/src/_types/services/balance.d.ts.map +1 -0
  308. package/src/_types/services/getNameServiceAddress.d.ts +3 -0
  309. package/src/_types/services/getNameServiceAddress.d.ts.map +1 -0
  310. package/{dist/cjs → src/_types}/typeguards.d.ts +1 -0
  311. package/src/_types/typeguards.d.ts.map +1 -0
  312. package/src/_types/types/index.d.ts +2 -0
  313. package/src/_types/types/index.d.ts.map +1 -0
  314. package/{dist → src/_types}/types/internal.d.ts +14 -15
  315. package/src/_types/types/internal.d.ts.map +1 -0
  316. package/src/_types/utils/base64ToUint8Array.d.ts +2 -0
  317. package/src/_types/utils/base64ToUint8Array.d.ts.map +1 -0
  318. package/{dist/cjs → src/_types}/utils/errors.d.ts +3 -1
  319. package/src/_types/utils/errors.d.ts.map +1 -0
  320. package/src/_types/utils/getTransactionMessage.d.ts +4 -0
  321. package/src/_types/utils/getTransactionMessage.d.ts.map +1 -0
  322. package/src/_types/utils/index.d.ts +6 -0
  323. package/src/_types/utils/index.d.ts.map +1 -0
  324. package/{dist/cjs → src/_types}/utils/median.d.ts +1 -0
  325. package/src/_types/utils/median.d.ts.map +1 -0
  326. package/src/_types/utils/parseBackendError.d.ts +3 -0
  327. package/src/_types/utils/parseBackendError.d.ts.map +1 -0
  328. package/{dist → src/_types}/utils/parseError.d.ts +2 -4
  329. package/src/_types/utils/parseError.d.ts.map +1 -0
  330. package/{dist → src/_types}/utils/utils.d.ts +1 -0
  331. package/src/_types/utils/utils.d.ts.map +1 -0
  332. package/src/_types/version.d.ts +3 -0
  333. package/src/_types/version.d.ts.map +1 -0
  334. package/src/config.ts +91 -0
  335. package/src/constants.ts +4 -0
  336. package/src/core/BaseStepExecutor.ts +40 -0
  337. package/src/core/EVM/EVM.ts +47 -0
  338. package/src/core/EVM/EVMStepExecutor.ts +500 -0
  339. package/src/core/EVM/abi.ts +47 -0
  340. package/src/core/EVM/checkAllowance.ts +168 -0
  341. package/src/core/EVM/getAllowance.ts +144 -0
  342. package/src/core/EVM/getENSAddress.ts +18 -0
  343. package/src/core/EVM/getEVMBalance.ts +118 -0
  344. package/src/core/EVM/multisig.ts +53 -0
  345. package/src/core/EVM/publicClient.ts +54 -0
  346. package/src/core/EVM/setAllowance.ts +143 -0
  347. package/src/core/EVM/switchChain.ts +77 -0
  348. package/src/core/EVM/types.ts +73 -0
  349. package/src/core/EVM/utils.ts +48 -0
  350. package/src/core/Solana/KeypairWalletAdapter.ts +100 -0
  351. package/src/core/Solana/Solana.ts +41 -0
  352. package/src/core/Solana/SolanaStepExecutor.ts +331 -0
  353. package/src/core/Solana/connection.ts +20 -0
  354. package/src/core/Solana/getSNSAddress.ts +33 -0
  355. package/src/core/Solana/getSolanaBalance.ts +72 -0
  356. package/src/core/Solana/isAddress.ts +10 -0
  357. package/src/core/Solana/types.ts +17 -0
  358. package/src/core/StatusManager.ts +233 -0
  359. package/src/core/checkBalance.ts +48 -0
  360. package/src/core/execution.ts +214 -0
  361. package/src/core/executionState.ts +44 -0
  362. package/src/core/index.ts +3 -0
  363. package/src/core/prepareRestart.ts +26 -0
  364. package/src/core/provider.ts +12 -0
  365. package/src/core/rpc.ts +15 -0
  366. package/src/core/stepComparison.ts +51 -0
  367. package/src/core/types.ts +118 -0
  368. package/src/core/utils.ts +108 -0
  369. package/src/core/waitForReceivingTransaction.ts +74 -0
  370. package/src/createConfig.ts +35 -0
  371. package/src/helpers.ts +69 -0
  372. package/src/index.ts +24 -0
  373. package/src/request.ts +79 -0
  374. package/src/services/api.ts +509 -0
  375. package/src/services/balance.ts +93 -0
  376. package/src/services/getNameServiceAddress.ts +30 -0
  377. package/src/typeguards.ts +89 -0
  378. package/src/types/index.ts +1 -0
  379. package/src/types/internal.ts +62 -0
  380. package/src/utils/base64ToUint8Array.ts +9 -0
  381. package/src/utils/errors.ts +232 -0
  382. package/src/utils/getTransactionMessage.ts +46 -0
  383. package/src/utils/index.ts +5 -0
  384. package/src/utils/median.ts +11 -0
  385. package/src/utils/parseBackendError.ts +50 -0
  386. package/src/utils/parseError.ts +210 -0
  387. package/src/utils/utils.ts +48 -0
  388. package/src/version.ts +2 -0
  389. package/dist/LiFi.d.ts +0 -178
  390. package/dist/LiFi.js +0 -253
  391. package/dist/allowance/getAllowance.d.ts +0 -6
  392. package/dist/allowance/index.d.ts +0 -3
  393. package/dist/allowance/index.js +0 -3
  394. package/dist/allowance/setAllowance.d.ts +0 -6
  395. package/dist/allowance/types.d.ts +0 -27
  396. package/dist/allowance/types.js +0 -1
  397. package/dist/balance/getBalance.d.ts +0 -2
  398. package/dist/balance/getTokenBalance.d.ts +0 -8
  399. package/dist/balance/getTokenBalance.js +0 -27
  400. package/dist/balance/index.d.ts +0 -2
  401. package/dist/balance/index.js +0 -2
  402. package/dist/cjs/LiFi.d.ts +0 -178
  403. package/dist/cjs/LiFi.js +0 -283
  404. package/dist/cjs/allowance/index.d.ts +0 -3
  405. package/dist/cjs/allowance/index.js +0 -19
  406. package/dist/cjs/allowance/setAllowance.d.ts +0 -6
  407. package/dist/cjs/allowance/types.d.ts +0 -27
  408. package/dist/cjs/balance/getBalance.d.ts +0 -2
  409. package/dist/cjs/balance/getTokenBalance.d.ts +0 -8
  410. package/dist/cjs/balance/getTokenBalance.js +0 -33
  411. package/dist/cjs/balance/index.d.ts +0 -2
  412. package/dist/cjs/balance/index.js +0 -18
  413. package/dist/cjs/connectors.d.ts +0 -8
  414. package/dist/cjs/connectors.js +0 -72
  415. package/dist/cjs/execution/BaseStepExecutor.d.ts +0 -12
  416. package/dist/cjs/execution/BaseStepExecutor.js +0 -27
  417. package/dist/cjs/execution/EVMStepExecutor.d.ts +0 -13
  418. package/dist/cjs/execution/EVMStepExecutor.js +0 -292
  419. package/dist/cjs/execution/RouteExecutionManager.d.ts +0 -60
  420. package/dist/cjs/execution/RouteExecutionManager.js +0 -204
  421. package/dist/cjs/execution/StatusManager.js +0 -171
  422. package/dist/cjs/execution/StepExecutionManager.d.ts +0 -7
  423. package/dist/cjs/execution/StepExecutionManager.js +0 -272
  424. package/dist/cjs/execution/checkAllowance.d.ts +0 -5
  425. package/dist/cjs/execution/index.d.ts +0 -2
  426. package/dist/cjs/execution/index.js +0 -18
  427. package/dist/cjs/execution/multisig.d.ts +0 -4
  428. package/dist/cjs/execution/prepareRestart.d.ts +0 -2
  429. package/dist/cjs/execution/prepareRestart.js +0 -65
  430. package/dist/cjs/execution/stepComparison.d.ts +0 -15
  431. package/dist/cjs/execution/stepComparison.js +0 -37
  432. package/dist/cjs/execution/switchChain.d.ts +0 -22
  433. package/dist/cjs/execution/switchChain.js +0 -55
  434. package/dist/cjs/execution/types.d.ts +0 -82
  435. package/dist/cjs/execution/types.js +0 -2
  436. package/dist/cjs/execution/utils.d.ts +0 -12
  437. package/dist/cjs/helpers.js +0 -84
  438. package/dist/cjs/index.d.ts +0 -9
  439. package/dist/cjs/index.js +0 -30
  440. package/dist/cjs/providers/EVM.d.ts +0 -10
  441. package/dist/cjs/providers/EVM.js +0 -34
  442. package/dist/cjs/providers/Solana.d.ts +0 -9
  443. package/dist/cjs/providers/Solana.js +0 -38
  444. package/dist/cjs/providers/index.d.ts +0 -1
  445. package/dist/cjs/providers/index.js +0 -17
  446. package/dist/cjs/providers/types.d.ts +0 -12
  447. package/dist/cjs/providers/types.js +0 -8
  448. package/dist/cjs/request.d.ts +0 -9
  449. package/dist/cjs/services/ApiService.d.ts +0 -16
  450. package/dist/cjs/services/ApiService.js +0 -323
  451. package/dist/cjs/services/ChainsService.d.ts +0 -11
  452. package/dist/cjs/services/ChainsService.js +0 -40
  453. package/dist/cjs/services/ConfigService.d.ts +0 -26
  454. package/dist/cjs/services/ConfigService.js +0 -104
  455. package/dist/cjs/types/index.d.ts +0 -2
  456. package/dist/cjs/types/index.js +0 -18
  457. package/dist/cjs/types/internal.d.ts +0 -60
  458. package/dist/cjs/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  459. package/dist/cjs/utils/index.d.ts +0 -5
  460. package/dist/cjs/utils/index.js +0 -21
  461. package/dist/cjs/utils/parseError.d.ts +0 -37
  462. package/dist/cjs/utils/parseError.js +0 -154
  463. package/dist/cjs/utils/utils.d.ts +0 -10
  464. package/dist/cjs/version.d.ts +0 -2
  465. package/dist/connectors.d.ts +0 -8
  466. package/dist/connectors.js +0 -41
  467. package/dist/constants.d.ts +0 -6
  468. package/dist/execution/BaseStepExecutor.d.ts +0 -12
  469. package/dist/execution/BaseStepExecutor.js +0 -23
  470. package/dist/execution/EVMStepExecutor.d.ts +0 -13
  471. package/dist/execution/EVMStepExecutor.js +0 -285
  472. package/dist/execution/RouteExecutionManager.d.ts +0 -60
  473. package/dist/execution/RouteExecutionManager.js +0 -200
  474. package/dist/execution/StatusManager.d.ts +0 -68
  475. package/dist/execution/StatusManager.js +0 -167
  476. package/dist/execution/StepExecutionManager.d.ts +0 -7
  477. package/dist/execution/StepExecutionManager.js +0 -265
  478. package/dist/execution/checkAllowance.d.ts +0 -5
  479. package/dist/execution/checkBalance.d.ts +0 -2
  480. package/dist/execution/index.d.ts +0 -2
  481. package/dist/execution/index.js +0 -2
  482. package/dist/execution/multisig.d.ts +0 -4
  483. package/dist/execution/prepareRestart.d.ts +0 -2
  484. package/dist/execution/prepareRestart.js +0 -61
  485. package/dist/execution/types.d.ts +0 -82
  486. package/dist/execution/types.js +0 -1
  487. package/dist/execution/waitForReceivingTransaction.d.ts +0 -3
  488. package/dist/helpers.d.ts +0 -18
  489. package/dist/index.d.ts +0 -9
  490. package/dist/index.js +0 -9
  491. package/dist/providers/EVM.d.ts +0 -10
  492. package/dist/providers/EVM.js +0 -29
  493. package/dist/providers/Solana.d.ts +0 -9
  494. package/dist/providers/Solana.js +0 -33
  495. package/dist/providers/index.d.ts +0 -1
  496. package/dist/providers/index.js +0 -1
  497. package/dist/providers/types.d.ts +0 -12
  498. package/dist/providers/types.js +0 -5
  499. package/dist/services/ApiService.d.ts +0 -16
  500. package/dist/services/ApiService.js +0 -321
  501. package/dist/services/ChainsService.d.ts +0 -11
  502. package/dist/services/ChainsService.js +0 -33
  503. package/dist/services/ConfigService.d.ts +0 -26
  504. package/dist/services/ConfigService.js +0 -100
  505. package/dist/typeguards.d.ts +0 -4
  506. package/dist/types/abi.d.ts +0 -5
  507. package/dist/types/index.d.ts +0 -2
  508. package/dist/types/index.js +0 -2
  509. package/dist/types/internal.js +0 -1
  510. package/dist/utils/errors.d.ts +0 -107
  511. package/dist/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  512. package/dist/utils/index.d.ts +0 -5
  513. package/dist/utils/index.js +0 -5
  514. package/dist/utils/median.d.ts +0 -1
  515. package/dist/version.d.ts +0 -2
  516. package/dist/version.js +0 -2
@@ -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: RouteExtended) => 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,108 @@
1
+ import {
2
+ type LiFiStep,
3
+ type ProcessStatus,
4
+ type ProcessType,
5
+ type StatusMessage,
6
+ type Substatus,
7
+ } from '@lifi/types'
8
+
9
+ const processMessages: Record<
10
+ ProcessType,
11
+ Partial<Record<ProcessStatus, string>>
12
+ > = {
13
+ TOKEN_ALLOWANCE: {
14
+ STARTED: 'Setting token allowance.',
15
+ PENDING: 'Waiting for token allowance.',
16
+ DONE: 'Token allowance set.',
17
+ },
18
+ SWITCH_CHAIN: {
19
+ PENDING: 'Chain switch required.',
20
+ DONE: 'Chain switched successfully.',
21
+ },
22
+ SWAP: {
23
+ STARTED: 'Preparing swap transaction.',
24
+ ACTION_REQUIRED: 'Please sign the transaction.',
25
+ PENDING: 'Waiting for swap transaction.',
26
+ DONE: 'Swap completed.',
27
+ },
28
+ CROSS_CHAIN: {
29
+ STARTED: 'Preparing bridge transaction.',
30
+ ACTION_REQUIRED: 'Please sign the transaction.',
31
+ PENDING: 'Waiting for bridge transaction.',
32
+ DONE: 'Bridge transaction confirmed.',
33
+ },
34
+ RECEIVING_CHAIN: {
35
+ PENDING: 'Waiting for destination chain.',
36
+ DONE: 'Bridge completed.',
37
+ },
38
+ TRANSACTION: {},
39
+ }
40
+ const substatusMessages: Record<
41
+ StatusMessage,
42
+ Partial<Record<Substatus, string>>
43
+ > = {
44
+ PENDING: {
45
+ BRIDGE_NOT_AVAILABLE: 'Bridge communication is temporarily unavailable.',
46
+ CHAIN_NOT_AVAILABLE: 'RPC communication is temporarily unavailable.',
47
+ UNKNOWN_ERROR:
48
+ 'An unexpected error occurred. Please seek assistance in the LI.FI discord server.',
49
+ WAIT_SOURCE_CONFIRMATIONS:
50
+ 'The bridge deposit has been received. The bridge is waiting for more confirmations to start the off-chain logic.',
51
+ WAIT_DESTINATION_TRANSACTION:
52
+ 'The bridge off-chain logic is being executed. Wait for the transaction to appear on the destination chain.',
53
+ },
54
+ DONE: {
55
+ PARTIAL:
56
+ 'Some of the received tokens are not the requested destination tokens.',
57
+ REFUNDED: 'The tokens were refunded to the sender address.',
58
+ COMPLETED: 'The transfer is complete.',
59
+ },
60
+ FAILED: {},
61
+ INVALID: {},
62
+ NOT_FOUND: {},
63
+ }
64
+
65
+ export function getProcessMessage(
66
+ type: ProcessType,
67
+ status: ProcessStatus
68
+ ): string | undefined {
69
+ const processMessage = processMessages[type][status]
70
+ return processMessage
71
+ }
72
+
73
+ export function getSubstatusMessage(
74
+ status: StatusMessage,
75
+ substatus?: Substatus
76
+ ): string | undefined {
77
+ if (!substatus) {
78
+ return
79
+ }
80
+ const message = substatusMessages[status][substatus]
81
+ return message
82
+ }
83
+
84
+ /**
85
+ * Used to check if changed exchange rate is in the range of slippage threshold.
86
+ * We use a slippage value as a threshold to trigger the rate change hook.
87
+ * This can result in almost doubled slippage for the user and need to be revisited.
88
+ * @param oldStep
89
+ * @param newStep
90
+ * @returns Boolean
91
+ */
92
+ export function checkStepSlippageThreshold(
93
+ oldStep: LiFiStep,
94
+ newStep: LiFiStep
95
+ ): boolean {
96
+ const setSlippage = oldStep.action.slippage
97
+ const oldEstimatedToAmount = BigInt(oldStep.estimate.toAmountMin)
98
+ const newEstimatedToAmount = BigInt(newStep.estimate.toAmountMin)
99
+ const amountDifference = oldEstimatedToAmount - newEstimatedToAmount
100
+ // oldEstimatedToAmount can be 0 when we use contract calls
101
+ let actualSlippage = 0
102
+ if (oldEstimatedToAmount > 0) {
103
+ actualSlippage =
104
+ Number((amountDifference * 1_000_000_000n) / oldEstimatedToAmount) /
105
+ 1_000_000_000
106
+ }
107
+ return actualSlippage <= setSlippage
108
+ }
@@ -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,35 @@
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
+ if (!options.disableVersionCheck && process.env.NODE_ENV === 'development') {
17
+ checkPackageUpdates(name, version)
18
+ }
19
+ return _config
20
+ }
21
+
22
+ export async function createChainsConfig() {
23
+ config.loading = getChains({ chainTypes: [ChainType.EVM, ChainType.SVM] })
24
+ .then((chains) => config.setChains(chains))
25
+ .catch()
26
+ await config.loading
27
+ }
28
+
29
+ export function createConfig(options: SDKConfig) {
30
+ const _config = createBaseConfig(options)
31
+ if (_config.preloadChains) {
32
+ createChainsConfig()
33
+ }
34
+ return _config
35
+ }
package/src/helpers.ts ADDED
@@ -0,0 +1,69 @@
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
+ export const checkPackageUpdates = async (
8
+ packageName?: string,
9
+ packageVersion?: string
10
+ ) => {
11
+ try {
12
+ const pkgName = packageName ?? name
13
+ const response = await request<{ version: string }>(
14
+ `https://registry.npmjs.org/${pkgName}/latest`,
15
+ { skipTrackingHeaders: true }
16
+ )
17
+ const latestVersion = response.version
18
+ const currentVersion = packageVersion ?? version
19
+ if (latestVersion > currentVersion) {
20
+ console.warn(
21
+ // eslint-disable-next-line max-len
22
+ `${pkgName}: new package version is available. Please update as soon as possible to enjoy the newest features. Current version: ${currentVersion}. Latest version: ${latestVersion}.`
23
+ )
24
+ }
25
+ } catch (error) {
26
+ // Cannot verify version, might be network error etc. We don't bother showing anything in that case
27
+ }
28
+ }
29
+
30
+ /**
31
+ * Converts a quote to Route
32
+ * @param step - Step returned from the quote endpoint.
33
+ * @returns - The route to be executed.
34
+ * @throws {ValidationError} Throws a ValidationError if the step has missing values.
35
+ */
36
+ export const convertQuoteToRoute = (step: LiFiStep): Route => {
37
+ if (!step.estimate.fromAmountUSD) {
38
+ throw new ValidationError("Missing 'fromAmountUSD' in step estimate.")
39
+ }
40
+
41
+ if (!step.estimate.toAmountUSD) {
42
+ throw new ValidationError("Missing 'toAmountUSD' in step estimate.")
43
+ }
44
+
45
+ const route: Route = {
46
+ fromToken: step.action.fromToken,
47
+ toToken: step.action.toToken,
48
+ fromAmount: step.action.fromAmount,
49
+ toAmount: step.estimate.toAmount,
50
+ id: step.id,
51
+ fromChainId: step.action.fromToken.chainId,
52
+ toChainId: step.action.toToken.chainId,
53
+ fromAmountUSD: step.estimate.fromAmountUSD,
54
+ toAmountUSD: step.estimate.toAmountUSD,
55
+ steps: [step],
56
+ toAmountMin: step.estimate.toAmountMin,
57
+ insurance: { state: 'NOT_INSURABLE', feeAmountUsd: '0' },
58
+ }
59
+
60
+ return route
61
+ }
62
+
63
+ export const fetchTxErrorDetails = async (txHash: string, chainId: number) => {
64
+ const response = await request<TenderlyResponse>(
65
+ `https://api.tenderly.co/api/v1/public-contract/${chainId}/tx/${txHash}`
66
+ )
67
+
68
+ return response
69
+ }
package/src/index.ts ADDED
@@ -0,0 +1,24 @@
1
+ export * from '@lifi/types'
2
+ export { config } from './config.js'
3
+ export { EVM } from './core/EVM/EVM.js'
4
+ export { getTokenAllowance } from './core/EVM/getAllowance.js'
5
+ export { setTokenAllowance } from './core/EVM/setAllowance.js'
6
+ export type {
7
+ MultisigConfig,
8
+ MultisigTransaction,
9
+ MultisigTxDetails,
10
+ } from './core/EVM/types.js'
11
+ export {
12
+ KeypairWalletAdapter,
13
+ KeypairWalletName,
14
+ } from './core/Solana/KeypairWalletAdapter.js'
15
+ export { Solana } from './core/Solana/Solana.js'
16
+ export * from './core/index.js'
17
+ export { createConfig } from './createConfig.js'
18
+ export * from './helpers.js'
19
+ export * from './services/api.js'
20
+ export * from './services/balance.js'
21
+ export * from './services/getNameServiceAddress.js'
22
+ export * from './types/index.js'
23
+ export * from './utils/errors.js'
24
+ 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
+ }