@rango-dev/widget-embedded 0.18.0 → 0.19.0

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 (476) hide show
  1. package/CHANGELOG.md +1 -113
  2. package/dist/QueueManager.d.ts +2 -5
  3. package/dist/QueueManager.d.ts.map +1 -1
  4. package/dist/Wallets.d.ts +17 -0
  5. package/dist/Wallets.d.ts.map +1 -0
  6. package/dist/Widget.d.ts +9 -0
  7. package/dist/Widget.d.ts.map +1 -0
  8. package/dist/components/AppRouter.d.ts +2 -0
  9. package/dist/components/AppRouter.d.ts.map +1 -1
  10. package/dist/components/AppRoutes.d.ts +6 -1
  11. package/dist/components/AppRoutes.d.ts.map +1 -1
  12. package/dist/components/BlockchainsSection/BlockchainsSection.d.ts.map +1 -1
  13. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts +1 -1
  14. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts.map +1 -1
  15. package/dist/components/ConfirmWalletsModal/ConfirmWallets.helpers.d.ts +3 -1
  16. package/dist/components/ConfirmWalletsModal/ConfirmWallets.helpers.d.ts.map +1 -1
  17. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +62 -691
  18. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts.map +1 -1
  19. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
  20. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.types.d.ts +3 -1
  21. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.types.d.ts.map +1 -1
  22. package/dist/components/ConfirmWalletsModal/WalletList.d.ts.map +1 -1
  23. package/dist/components/ConfirmWalletsModal/WalletList.type.d.ts +4 -1
  24. package/dist/components/ConfirmWalletsModal/WalletList.type.d.ts.map +1 -1
  25. package/dist/components/HeaderButtons/HomeButtons.d.ts.map +1 -1
  26. package/dist/components/Layout/Layout.d.ts.map +1 -1
  27. package/dist/components/Layout/Layout.styles.d.ts.map +1 -1
  28. package/dist/components/Layout/Layout.types.d.ts +2 -2
  29. package/dist/components/Layout/Layout.types.d.ts.map +1 -1
  30. package/dist/components/LoadingSwapDetails/LoadingSwapDetailStep.d.ts +4 -0
  31. package/dist/components/LoadingSwapDetails/LoadingSwapDetailStep.d.ts.map +1 -0
  32. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.d.ts.map +1 -1
  33. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts +0 -1727
  34. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts.map +1 -1
  35. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.types.d.ts +4 -0
  36. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.types.d.ts.map +1 -0
  37. package/dist/components/NoRoutes/NoRoutes.d.ts +4 -0
  38. package/dist/components/NoRoutes/NoRoutes.d.ts.map +1 -0
  39. package/dist/components/NoRoutes/NoRoutes.helper.d.ts +3 -0
  40. package/dist/components/NoRoutes/NoRoutes.helper.d.ts.map +1 -0
  41. package/dist/components/{NoResult/NoResult.styles.d.ts → NoRoutes/NoRoutes.styles.d.ts} +1 -1
  42. package/dist/components/{NoResult/NoResult.styles.d.ts.map → NoRoutes/NoRoutes.styles.d.ts.map} +1 -1
  43. package/dist/components/{NoResult/NoResult.types.d.ts → NoRoutes/NoRoutes.types.d.ts} +3 -3
  44. package/dist/components/NoRoutes/NoRoutes.types.d.ts.map +1 -0
  45. package/dist/components/NoRoutes/index.d.ts +2 -0
  46. package/dist/components/NoRoutes/index.d.ts.map +1 -0
  47. package/dist/components/NotificationContent/NotificationContent.d.ts.map +1 -1
  48. package/dist/components/RouteErrors/RouteErrors.d.ts +4 -0
  49. package/dist/components/RouteErrors/RouteErrors.d.ts.map +1 -0
  50. package/dist/components/{QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts → RouteErrors/RouteErrors.styles.d.ts} +1 -1
  51. package/dist/components/RouteErrors/RouteErrors.styles.d.ts.map +1 -0
  52. package/dist/components/RouteErrors/RouteErrors.types.d.ts +24 -0
  53. package/dist/components/RouteErrors/RouteErrors.types.d.ts.map +1 -0
  54. package/dist/components/RouteErrors/RouteErrorsModal.d.ts +4 -0
  55. package/dist/components/RouteErrors/RouteErrorsModal.d.ts.map +1 -0
  56. package/dist/components/RouteErrors/RouteErrorsModalItem.d.ts +4 -0
  57. package/dist/components/RouteErrors/RouteErrorsModalItem.d.ts.map +1 -0
  58. package/dist/components/RouteErrors/index.d.ts +2 -0
  59. package/dist/components/RouteErrors/index.d.ts.map +1 -0
  60. package/dist/components/Slippage/Slippage.d.ts.map +1 -1
  61. package/dist/components/Slippage/Slippage.styles.d.ts +0 -158
  62. package/dist/components/Slippage/Slippage.styles.d.ts.map +1 -1
  63. package/dist/components/SwapDetails/SwapDetails.Placeholder.d.ts.map +1 -1
  64. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  65. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts +1 -1
  66. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts.map +1 -1
  67. package/dist/components/SwapDetails/SwapDetails.styles.d.ts +0 -628
  68. package/dist/components/SwapDetails/SwapDetails.styles.d.ts.map +1 -1
  69. package/dist/components/SwapDetailsModal/SwapDetailsCompleteModal.d.ts.map +1 -1
  70. package/dist/components/SwapDetailsModal/SwapDetailsModal.WalletState.d.ts.map +1 -1
  71. package/dist/components/SwapDetailsModal/SwapDetailsModal.helpers.d.ts +1 -1
  72. package/dist/components/SwapDetailsModal/SwapDetailsModal.helpers.d.ts.map +1 -1
  73. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts +1 -1
  74. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts.map +1 -1
  75. package/dist/components/SwapsGroup/SwapsGroup.d.ts.map +1 -1
  76. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts +0 -157
  77. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts.map +1 -1
  78. package/dist/components/TokenList/TokenList.d.ts.map +1 -1
  79. package/dist/components/TokenList/TokenList.helpers.d.ts +2 -2
  80. package/dist/components/TokenList/TokenList.helpers.d.ts.map +1 -1
  81. package/dist/components/TokenList/TokenList.styles.d.ts +1 -1100
  82. package/dist/components/TokenList/TokenList.styles.d.ts.map +1 -1
  83. package/dist/components/TokenList/TokenList.types.d.ts +9 -4
  84. package/dist/components/TokenList/TokenList.types.d.ts.map +1 -1
  85. package/dist/components/TokenList/index.d.ts +1 -0
  86. package/dist/components/TokenList/index.d.ts.map +1 -1
  87. package/dist/components/UpdateUrl.d.ts +6 -1
  88. package/dist/components/UpdateUrl.d.ts.map +1 -1
  89. package/dist/components/WidgetEvents.d.ts.map +1 -1
  90. package/dist/constants/errors.d.ts +4 -4
  91. package/dist/constants/errors.d.ts.map +1 -1
  92. package/dist/constants/index.d.ts +0 -1
  93. package/dist/constants/index.d.ts.map +1 -1
  94. package/dist/constants/messages.d.ts +1 -1
  95. package/dist/constants/navigationRoutes.d.ts +2 -1
  96. package/dist/constants/navigationRoutes.d.ts.map +1 -1
  97. package/dist/constants/searchParams.d.ts +1 -2
  98. package/dist/constants/searchParams.d.ts.map +1 -1
  99. package/dist/constants/warnings.d.ts +2 -2
  100. package/dist/constants/warnings.d.ts.map +1 -1
  101. package/dist/hooks/{useConfirmSwap/useConfirmSwap.types.d.ts → useConfirmSwap.d.ts} +7 -5
  102. package/dist/hooks/useConfirmSwap.d.ts.map +1 -0
  103. package/dist/hooks/{useFetchQuote.d.ts → useFetchBestRoute.d.ts} +3 -3
  104. package/dist/hooks/useFetchBestRoute.d.ts.map +1 -0
  105. package/dist/hooks/useLanguage.d.ts +1 -1
  106. package/dist/hooks/useLanguage.d.ts.map +1 -1
  107. package/dist/hooks/useNavigateBack.d.ts +3 -1
  108. package/dist/hooks/useNavigateBack.d.ts.map +1 -1
  109. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.d.ts +1 -1
  110. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts +2 -2
  111. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts.map +1 -1
  112. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts +7 -5
  113. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts.map +1 -1
  114. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts +0 -1
  115. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts.map +1 -1
  116. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts +1 -5
  117. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts.map +1 -1
  118. package/dist/hooks/useSwapInput.d.ts +2 -4
  119. package/dist/hooks/useSwapInput.d.ts.map +1 -1
  120. package/dist/hooks/useSyncStoresWithConfig.d.ts +2 -1
  121. package/dist/hooks/useSyncStoresWithConfig.d.ts.map +1 -1
  122. package/dist/hooks/useTheme.d.ts +1 -1
  123. package/dist/hooks/useTheme.d.ts.map +1 -1
  124. package/dist/hooks/useWalletList.d.ts.map +1 -1
  125. package/dist/index.d.ts +8 -20
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +1 -1
  128. package/dist/index.js.map +4 -4
  129. package/dist/pages/ConfirmSwapPage.d.ts +6 -1
  130. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  131. package/dist/pages/HistoryPage.d.ts.map +1 -1
  132. package/dist/pages/Home.d.ts.map +1 -1
  133. package/dist/pages/LanguagePage.d.ts.map +1 -1
  134. package/dist/pages/LiquiditySourcePage.d.ts +2 -1
  135. package/dist/pages/LiquiditySourcePage.d.ts.map +1 -1
  136. package/dist/pages/SelectBlockchainPage.d.ts.map +1 -1
  137. package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
  138. package/dist/pages/SettingsPage.d.ts +6 -1
  139. package/dist/pages/SettingsPage.d.ts.map +1 -1
  140. package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
  141. package/dist/pages/ThemePage.d.ts.map +1 -1
  142. package/dist/pages/WalletsPage.d.ts +8 -1
  143. package/dist/pages/WalletsPage.d.ts.map +1 -1
  144. package/dist/store/app.d.ts +22 -41
  145. package/dist/store/app.d.ts.map +1 -1
  146. package/dist/store/bestRoute.d.ts +77 -0
  147. package/dist/store/bestRoute.d.ts.map +1 -0
  148. package/dist/store/meta.d.ts +23 -0
  149. package/dist/store/meta.d.ts.map +1 -0
  150. package/dist/store/notification.d.ts +3 -4
  151. package/dist/store/notification.d.ts.map +1 -1
  152. package/dist/store/settings.d.ts +81 -0
  153. package/dist/store/settings.d.ts.map +1 -0
  154. package/dist/store/slices/config.d.ts +2 -3
  155. package/dist/store/slices/config.d.ts.map +1 -1
  156. package/dist/store/slices/data.d.ts +2 -5
  157. package/dist/store/slices/data.d.ts.map +1 -1
  158. package/dist/store/ui.d.ts +1 -2
  159. package/dist/store/ui.d.ts.map +1 -1
  160. package/dist/store/wallets.d.ts +9 -14
  161. package/dist/store/wallets.d.ts.map +1 -1
  162. package/dist/types/config.d.ts +8 -41
  163. package/dist/types/config.d.ts.map +1 -1
  164. package/dist/types/index.d.ts +1 -1
  165. package/dist/types/index.d.ts.map +1 -1
  166. package/dist/types/routing.d.ts +65 -0
  167. package/dist/types/routing.d.ts.map +1 -0
  168. package/dist/types/swap.d.ts +14 -4
  169. package/dist/types/swap.d.ts.map +1 -1
  170. package/dist/types/wallets.d.ts +1 -15
  171. package/dist/types/wallets.d.ts.map +1 -1
  172. package/dist/utils/colors.d.ts.map +1 -1
  173. package/dist/utils/configs.d.ts +0 -1
  174. package/dist/utils/configs.d.ts.map +1 -1
  175. package/dist/utils/meta.d.ts +1 -2
  176. package/dist/utils/meta.d.ts.map +1 -1
  177. package/dist/utils/numbers.d.ts +1 -1
  178. package/dist/utils/numbers.d.ts.map +1 -1
  179. package/dist/utils/providers.d.ts +2 -2
  180. package/dist/utils/providers.d.ts.map +1 -1
  181. package/dist/utils/queue.d.ts +2 -2
  182. package/dist/utils/queue.d.ts.map +1 -1
  183. package/dist/utils/routing.d.ts +28 -0
  184. package/dist/utils/routing.d.ts.map +1 -0
  185. package/dist/utils/settings.d.ts +2 -6
  186. package/dist/utils/settings.d.ts.map +1 -1
  187. package/dist/utils/swap.d.ts +24 -35
  188. package/dist/utils/swap.d.ts.map +1 -1
  189. package/dist/utils/time.d.ts +1 -1
  190. package/dist/utils/time.d.ts.map +1 -1
  191. package/dist/utils/wallets.d.ts +10 -9
  192. package/dist/utils/wallets.d.ts.map +1 -1
  193. package/package.json +10 -12
  194. package/src/QueueManager.tsx +17 -18
  195. package/src/{containers/Wallets/Wallets.tsx → Wallets.tsx} +34 -48
  196. package/src/Widget.tsx +119 -0
  197. package/src/components/AppRouter.tsx +32 -8
  198. package/src/components/AppRoutes.tsx +69 -57
  199. package/src/components/BlockchainList/BlockchainList.styles.ts +2 -2
  200. package/src/components/BlockchainList/BlockchainList.tsx +4 -4
  201. package/src/components/BlockchainsSection/BlockchainsSection.styles.ts +1 -1
  202. package/src/components/BlockchainsSection/BlockchainsSection.tsx +17 -26
  203. package/src/components/ConfirmWalletsModal/ConfirmWallets.helpers.ts +64 -2
  204. package/src/components/ConfirmWalletsModal/ConfirmWallets.styles.ts +10 -29
  205. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +47 -43
  206. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.types.ts +3 -1
  207. package/src/components/ConfirmWalletsModal/WalletList.tsx +8 -9
  208. package/src/components/ConfirmWalletsModal/WalletList.type.ts +4 -1
  209. package/src/components/HeaderButtons/HomeButtons.tsx +18 -28
  210. package/src/components/Layout/Layout.styles.ts +0 -2
  211. package/src/components/Layout/Layout.tsx +7 -20
  212. package/src/components/Layout/Layout.types.ts +2 -2
  213. package/src/components/LoadingSwapDetails/LoadingSwapDetailStep.tsx +41 -0
  214. package/src/components/LoadingSwapDetails/LoadingSwapDetails.styles.ts +61 -65
  215. package/src/components/LoadingSwapDetails/LoadingSwapDetails.tsx +34 -28
  216. package/src/components/LoadingSwapDetails/LoadingSwapDetails.types.ts +3 -0
  217. package/src/components/{NoResult/NoResult.helpers.ts → NoRoutes/NoRoutes.helper.ts} +16 -23
  218. package/src/components/{NoResult/NoResult.styles.ts → NoRoutes/NoRoutes.styles.ts} +0 -2
  219. package/src/components/{NoResult/NoResult.tsx → NoRoutes/NoRoutes.tsx} +17 -12
  220. package/src/components/{NoResult/NoResult.types.ts → NoRoutes/NoRoutes.types.ts} +2 -3
  221. package/src/components/NoRoutes/index.ts +1 -0
  222. package/src/components/NotificationContent/NotificationContent.tsx +3 -5
  223. package/src/components/{QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.ts → RouteErrors/RouteErrors.styles.ts} +1 -8
  224. package/src/components/RouteErrors/RouteErrors.tsx +79 -0
  225. package/src/components/RouteErrors/RouteErrors.types.ts +29 -0
  226. package/src/components/RouteErrors/RouteErrorsModal.tsx +129 -0
  227. package/src/components/{QuoteWarningsAndErrors/QuoteErrorsModalItem.tsx → RouteErrors/RouteErrorsModalItem.tsx} +4 -4
  228. package/src/components/RouteErrors/index.ts +1 -0
  229. package/src/components/Slippage/Slippage.styles.ts +5 -15
  230. package/src/components/Slippage/Slippage.tsx +10 -11
  231. package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +8 -5
  232. package/src/components/SwapDetails/SwapDetails.helpers.tsx +1 -1
  233. package/src/components/SwapDetails/SwapDetails.styles.ts +33 -36
  234. package/src/components/SwapDetails/SwapDetails.tsx +56 -41
  235. package/src/components/SwapDetailsAlerts/SwapDetailsAlerts.Warning.tsx +1 -1
  236. package/src/components/SwapDetailsModal/SwapDetailsCompleteModal.tsx +3 -4
  237. package/src/components/SwapDetailsModal/SwapDetailsModal.Cancel.tsx +2 -2
  238. package/src/components/SwapDetailsModal/SwapDetailsModal.WalletState.tsx +8 -14
  239. package/src/components/SwapDetailsModal/SwapDetailsModal.helpers.tsx +1 -1
  240. package/src/components/SwapDetailsModal/SwapDetailsModal.tsx +1 -1
  241. package/src/components/SwapDetailsModal/SwapDetailsModal.types.ts +1 -1
  242. package/src/components/SwapsGroup/SwapsGroup.styles.ts +1 -10
  243. package/src/components/SwapsGroup/SwapsGroup.tsx +5 -3
  244. package/src/components/SwitchFromAndTo.tsx +2 -2
  245. package/src/components/TokenList/TokenList.helpers.ts +2 -2
  246. package/src/components/TokenList/TokenList.styles.ts +38 -74
  247. package/src/components/TokenList/TokenList.tsx +26 -35
  248. package/src/components/TokenList/TokenList.types.ts +10 -4
  249. package/src/components/TokenList/index.ts +1 -0
  250. package/src/components/UpdateUrl.tsx +30 -35
  251. package/src/components/WidgetEvents.tsx +2 -4
  252. package/src/constants/errors.ts +15 -17
  253. package/src/constants/index.ts +0 -1
  254. package/src/constants/messages.ts +1 -1
  255. package/src/constants/navigationRoutes.ts +8 -7
  256. package/src/constants/searchParams.ts +0 -1
  257. package/src/constants/warnings.ts +7 -7
  258. package/src/hooks/useConfirmSwap.ts +303 -0
  259. package/src/hooks/{useFetchQuote.ts → useFetchBestRoute.ts} +3 -3
  260. package/src/hooks/useLanguage.ts +5 -4
  261. package/src/hooks/useNavigateBack.ts +52 -3
  262. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.ts +1 -1
  263. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.ts +7 -37
  264. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.ts +0 -60
  265. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.test.ts +3 -78
  266. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.ts +6 -15
  267. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.ts +1 -6
  268. package/src/hooks/useSwapInput.ts +48 -141
  269. package/src/hooks/useSyncStoresWithConfig.ts +24 -40
  270. package/src/hooks/useTheme.ts +5 -4
  271. package/src/hooks/useWalletList.ts +5 -3
  272. package/src/index.ts +5 -53
  273. package/src/pages/ConfirmSwapPage.tsx +266 -117
  274. package/src/pages/HistoryPage.tsx +7 -2
  275. package/src/pages/Home.tsx +303 -88
  276. package/src/pages/LanguagePage.tsx +5 -0
  277. package/src/pages/LiquiditySourcePage.tsx +37 -24
  278. package/src/pages/SelectBlockchainPage.tsx +24 -31
  279. package/src/pages/SelectSwapItemsPage.tsx +31 -18
  280. package/src/pages/SettingsPage.tsx +27 -32
  281. package/src/pages/SwapDetailsPage.tsx +7 -6
  282. package/src/pages/ThemePage.tsx +7 -2
  283. package/src/pages/WalletsPage.tsx +19 -9
  284. package/src/services/httpService.ts +1 -1
  285. package/src/store/app.ts +6 -44
  286. package/src/store/{quote.ts → bestRoute.ts} +64 -71
  287. package/src/store/meta.ts +39 -0
  288. package/src/store/settings.ts +158 -0
  289. package/src/store/slices/config.ts +15 -26
  290. package/src/store/slices/data.ts +35 -74
  291. package/src/store/wallets.ts +37 -68
  292. package/src/types/config.ts +8 -53
  293. package/src/types/index.ts +1 -1
  294. package/src/types/routing.ts +77 -0
  295. package/src/types/swap.ts +13 -4
  296. package/src/types/wallets.ts +1 -18
  297. package/src/utils/colors.ts +1 -2
  298. package/src/utils/configs.ts +1 -2
  299. package/src/utils/date.ts +1 -1
  300. package/src/utils/meta.ts +1 -8
  301. package/src/utils/numbers.ts +1 -1
  302. package/src/utils/providers.ts +5 -8
  303. package/src/utils/queue.ts +2 -2
  304. package/src/utils/routing.ts +321 -0
  305. package/src/utils/settings.ts +10 -17
  306. package/src/utils/swap.ts +120 -154
  307. package/src/utils/time.ts +1 -1
  308. package/src/utils/wallets.ts +161 -156
  309. package/dist/components/NoResult/NoResult.d.ts +0 -4
  310. package/dist/components/NoResult/NoResult.d.ts.map +0 -1
  311. package/dist/components/NoResult/NoResult.helpers.d.ts +0 -4
  312. package/dist/components/NoResult/NoResult.helpers.d.ts.map +0 -1
  313. package/dist/components/NoResult/NoResult.types.d.ts.map +0 -1
  314. package/dist/components/NoResult/index.d.ts +0 -2
  315. package/dist/components/NoResult/index.d.ts.map +0 -1
  316. package/dist/components/Quote/Quote.d.ts +0 -4
  317. package/dist/components/Quote/Quote.d.ts.map +0 -1
  318. package/dist/components/Quote/Quote.styles.d.ts +0 -2217
  319. package/dist/components/Quote/Quote.styles.d.ts.map +0 -1
  320. package/dist/components/Quote/Quote.types.d.ts +0 -21
  321. package/dist/components/Quote/Quote.types.d.ts.map +0 -1
  322. package/dist/components/Quote/QuoteSummary.d.ts +0 -11
  323. package/dist/components/Quote/QuoteSummary.d.ts.map +0 -1
  324. package/dist/components/Quote/QuoteSummary.styles.d.ts +0 -315
  325. package/dist/components/Quote/QuoteSummary.styles.d.ts.map +0 -1
  326. package/dist/components/Quote/index.d.ts +0 -3
  327. package/dist/components/Quote/index.d.ts.map +0 -1
  328. package/dist/components/QuoteSkeleton/QuoteSkeleton.d.ts +0 -4
  329. package/dist/components/QuoteSkeleton/QuoteSkeleton.d.ts.map +0 -1
  330. package/dist/components/QuoteSkeleton/QuoteSkeleton.styles.d.ts +0 -633
  331. package/dist/components/QuoteSkeleton/QuoteSkeleton.styles.d.ts.map +0 -1
  332. package/dist/components/QuoteSkeleton/QuoteSkeleton.types.d.ts +0 -6
  333. package/dist/components/QuoteSkeleton/QuoteSkeleton.types.d.ts.map +0 -1
  334. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.d.ts +0 -4
  335. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.d.ts.map +0 -1
  336. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.styles.d.ts +0 -1571
  337. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.styles.d.ts.map +0 -1
  338. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.types.d.ts +0 -6
  339. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.types.d.ts.map +0 -1
  340. package/dist/components/QuoteSkeleton/StepSkeleton.d.ts +0 -4
  341. package/dist/components/QuoteSkeleton/StepSkeleton.d.ts.map +0 -1
  342. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts +0 -786
  343. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts.map +0 -1
  344. package/dist/components/QuoteSkeleton/StepSkeleton.types.d.ts +0 -4
  345. package/dist/components/QuoteSkeleton/StepSkeleton.types.d.ts.map +0 -1
  346. package/dist/components/QuoteSkeleton/index.d.ts +0 -4
  347. package/dist/components/QuoteSkeleton/index.d.ts.map +0 -1
  348. package/dist/components/QuoteWarningsAndErrors/HighValueLossWarningModal.d.ts +0 -11
  349. package/dist/components/QuoteWarningsAndErrors/HighValueLossWarningModal.d.ts.map +0 -1
  350. package/dist/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.d.ts +0 -4
  351. package/dist/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.d.ts.map +0 -1
  352. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts +0 -4
  353. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts.map +0 -1
  354. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts +0 -9
  355. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts.map +0 -1
  356. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts.map +0 -1
  357. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts +0 -23
  358. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts.map +0 -1
  359. package/dist/components/QuoteWarningsAndErrors/SlippageWariningModal.d.ts +0 -11
  360. package/dist/components/QuoteWarningsAndErrors/SlippageWariningModal.d.ts.map +0 -1
  361. package/dist/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.d.ts +0 -11
  362. package/dist/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.d.ts.map +0 -1
  363. package/dist/components/QuoteWarningsAndErrors/index.d.ts +0 -2
  364. package/dist/components/QuoteWarningsAndErrors/index.d.ts.map +0 -1
  365. package/dist/containers/App/App.d.ts +0 -3
  366. package/dist/containers/App/App.d.ts.map +0 -1
  367. package/dist/containers/App/App.styles.d.ts +0 -158
  368. package/dist/containers/App/App.styles.d.ts.map +0 -1
  369. package/dist/containers/App/index.d.ts +0 -2
  370. package/dist/containers/App/index.d.ts.map +0 -1
  371. package/dist/containers/QuoteInfo/QuoteInfo.d.ts +0 -4
  372. package/dist/containers/QuoteInfo/QuoteInfo.d.ts.map +0 -1
  373. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts +0 -788
  374. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts.map +0 -1
  375. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts +0 -20
  376. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts.map +0 -1
  377. package/dist/containers/QuoteInfo/index.d.ts +0 -2
  378. package/dist/containers/QuoteInfo/index.d.ts.map +0 -1
  379. package/dist/containers/Wallets/Wallets.d.ts +0 -6
  380. package/dist/containers/Wallets/Wallets.d.ts.map +0 -1
  381. package/dist/containers/Wallets/Wallets.types.d.ts +0 -11
  382. package/dist/containers/Wallets/Wallets.types.d.ts.map +0 -1
  383. package/dist/containers/Wallets/index.d.ts +0 -2
  384. package/dist/containers/Wallets/index.d.ts.map +0 -1
  385. package/dist/containers/Widget/Widget.d.ts +0 -5
  386. package/dist/containers/Widget/Widget.d.ts.map +0 -1
  387. package/dist/containers/Widget/Widget.types.d.ts +0 -5
  388. package/dist/containers/Widget/Widget.types.d.ts.map +0 -1
  389. package/dist/containers/Widget/index.d.ts +0 -3
  390. package/dist/containers/Widget/index.d.ts.map +0 -1
  391. package/dist/containers/WidgetInfo/WidgetInfo.d.ts +0 -6
  392. package/dist/containers/WidgetInfo/WidgetInfo.d.ts.map +0 -1
  393. package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts +0 -20
  394. package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts.map +0 -1
  395. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts +0 -21
  396. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts.map +0 -1
  397. package/dist/containers/WidgetInfo/index.d.ts +0 -2
  398. package/dist/containers/WidgetInfo/index.d.ts.map +0 -1
  399. package/dist/containers/WidgetProvider/WidgetProvider.d.ts +0 -5
  400. package/dist/containers/WidgetProvider/WidgetProvider.d.ts.map +0 -1
  401. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts +0 -7
  402. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts.map +0 -1
  403. package/dist/containers/WidgetProvider/index.d.ts +0 -2
  404. package/dist/containers/WidgetProvider/index.d.ts.map +0 -1
  405. package/dist/hooks/useConfirmSwap/index.d.ts +0 -2
  406. package/dist/hooks/useConfirmSwap/index.d.ts.map +0 -1
  407. package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts +0 -3
  408. package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts.map +0 -1
  409. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts +0 -19
  410. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts.map +0 -1
  411. package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts.map +0 -1
  412. package/dist/hooks/useFetchQuote.d.ts.map +0 -1
  413. package/dist/hooks/useForceAutoConnect.d.ts +0 -2
  414. package/dist/hooks/useForceAutoConnect.d.ts.map +0 -1
  415. package/dist/store/AppStore.d.ts +0 -47
  416. package/dist/store/AppStore.d.ts.map +0 -1
  417. package/dist/store/quote.d.ts +0 -89
  418. package/dist/store/quote.d.ts.map +0 -1
  419. package/dist/store/slices/settings.d.ts +0 -39
  420. package/dist/store/slices/settings.d.ts.map +0 -1
  421. package/dist/types/quote.d.ts +0 -82
  422. package/dist/types/quote.d.ts.map +0 -1
  423. package/dist/utils/quote.d.ts +0 -32
  424. package/dist/utils/quote.d.ts.map +0 -1
  425. package/src/components/NoResult/index.ts +0 -1
  426. package/src/components/Quote/Quote.styles.ts +0 -249
  427. package/src/components/Quote/Quote.tsx +0 -414
  428. package/src/components/Quote/Quote.types.ts +0 -15
  429. package/src/components/Quote/QuoteSummary.styles.ts +0 -16
  430. package/src/components/Quote/QuoteSummary.tsx +0 -46
  431. package/src/components/Quote/index.ts +0 -2
  432. package/src/components/QuoteSkeleton/QuoteSkeleton.styles.ts +0 -42
  433. package/src/components/QuoteSkeleton/QuoteSkeleton.tsx +0 -30
  434. package/src/components/QuoteSkeleton/QuoteSkeleton.types.ts +0 -5
  435. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.styles.ts +0 -57
  436. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.tsx +0 -76
  437. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.types.ts +0 -6
  438. package/src/components/QuoteSkeleton/StepSkeleton.styles.ts +0 -33
  439. package/src/components/QuoteSkeleton/StepSkeleton.tsx +0 -44
  440. package/src/components/QuoteSkeleton/StepSkeleton.types.ts +0 -1
  441. package/src/components/QuoteSkeleton/index.ts +0 -3
  442. package/src/components/QuoteWarningsAndErrors/HighValueLossWarningModal.tsx +0 -107
  443. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.ts +0 -74
  444. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.tsx +0 -103
  445. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.ts +0 -25
  446. package/src/components/QuoteWarningsAndErrors/SlippageWariningModal.tsx +0 -77
  447. package/src/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.tsx +0 -38
  448. package/src/components/QuoteWarningsAndErrors/index.ts +0 -1
  449. package/src/containers/App/App.styles.ts +0 -18
  450. package/src/containers/App/App.tsx +0 -52
  451. package/src/containers/App/index.ts +0 -1
  452. package/src/containers/QuoteInfo/QuoteInfo.styles.ts +0 -31
  453. package/src/containers/QuoteInfo/QuoteInfo.tsx +0 -99
  454. package/src/containers/QuoteInfo/QuoteInfo.types.ts +0 -20
  455. package/src/containers/QuoteInfo/index.ts +0 -1
  456. package/src/containers/Wallets/Wallets.types.ts +0 -12
  457. package/src/containers/Wallets/index.ts +0 -1
  458. package/src/containers/Widget/Widget.tsx +0 -19
  459. package/src/containers/Widget/Widget.types.ts +0 -5
  460. package/src/containers/Widget/index.ts +0 -2
  461. package/src/containers/WidgetInfo/WidgetInfo.helpers.ts +0 -64
  462. package/src/containers/WidgetInfo/WidgetInfo.tsx +0 -62
  463. package/src/containers/WidgetInfo/WidgetInfo.types.ts +0 -21
  464. package/src/containers/WidgetInfo/index.ts +0 -1
  465. package/src/containers/WidgetProvider/WidgetProvider.tsx +0 -28
  466. package/src/containers/WidgetProvider/WidgetProvider.types.ts +0 -7
  467. package/src/containers/WidgetProvider/index.ts +0 -1
  468. package/src/hooks/useConfirmSwap/index.ts +0 -1
  469. package/src/hooks/useConfirmSwap/useConfirmSwap.helpers.ts +0 -172
  470. package/src/hooks/useConfirmSwap/useConfirmSwap.ts +0 -137
  471. package/src/hooks/useConfirmSwap/useConfirmSwap.types.ts +0 -19
  472. package/src/hooks/useForceAutoConnect.ts +0 -27
  473. package/src/store/AppStore.tsx +0 -41
  474. package/src/store/slices/settings.ts +0 -168
  475. package/src/types/quote.ts +0 -107
  476. package/src/utils/quote.ts +0 -338
@@ -1,8 +1,8 @@
1
- import type { QuoteError } from '../types';
1
+ import type { ConfirmSwapError } from '../types';
2
2
 
3
3
  import { i18n } from '@lingui/core';
4
4
 
5
- import { QuoteErrorType } from '../types';
5
+ import { ConfirmSwapErrorTypes } from '../types';
6
6
 
7
7
  export const errorMessages = () => {
8
8
  return {
@@ -10,22 +10,18 @@ export const errorMessages = () => {
10
10
  liquiditySourcesError: {
11
11
  title: i18n.t('Please reset your liquidity sources.'),
12
12
  description: i18n.t(
13
- 'You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.'
13
+ 'You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources'
14
14
  ),
15
15
  },
16
- noResultError: {
17
- title: i18n.t('No Routes Found.'),
16
+ noRoutesError: {
17
+ title: i18n.t('No Routes Found'),
18
18
  description: i18n.t(
19
19
  "Reasons why Rango couldn't find a route: low liquidity on token, very low input amount or no routes available for the selected input/output token combination."
20
20
  ),
21
21
  },
22
22
  bridgeLimitErrors: {
23
- increaseAmount: i18n.t(
24
- 'Bridge Limit Error: Please increase your amount.'
25
- ),
26
- decreaseAmount: i18n.t(
27
- 'Bridge Limit Error: Please decrease your amount.'
28
- ),
23
+ increaseAmount: i18n.t('Bridge Limit Error: Please increase your amount'),
24
+ decreaseAmount: i18n.t('Bridge Limit Error: Please decrease your amount'),
29
25
  },
30
26
  highValueLossError: {
31
27
  impactTitle: i18n.t('High Price Impact'),
@@ -33,9 +29,9 @@ export const errorMessages = () => {
33
29
  description: i18n.t(
34
30
  'The price impact is significantly higher than the allowed amount. If you are sure, continue, otherwise, change the swap.'
35
31
  ),
36
- confirmMessage: i18n.t('Confirm high price impact'),
32
+ confirmMessage: i18n.t('Confirm High price impact'),
37
33
  },
38
- quoteUpdatedWithHighValueLoss: {
34
+ routeUpdatedWithHighValueLoss: {
39
35
  title: i18n.t(
40
36
  'Route updated and price impact is too high, try again later!'
41
37
  ),
@@ -51,12 +47,14 @@ export const errorMessages = () => {
51
47
  };
52
48
  };
53
49
 
54
- export function getQuoteErrorMessage(error: QuoteError) {
50
+ export function getConfirmSwapErrorMessage(error: ConfirmSwapError) {
55
51
  switch (error.type) {
56
- case QuoteErrorType.NO_RESULT:
57
- return error.diagnosisMessage ?? errorMessages().noResultError.title;
58
- case QuoteErrorType.REQUEST_FAILED:
52
+ case ConfirmSwapErrorTypes.NO_ROUTE:
53
+ return error.diagnosisMessage ?? errorMessages().noRoutesError.title;
54
+ case ConfirmSwapErrorTypes.REQUEST_FAILED:
59
55
  return errorMessages().genericServerError;
56
+ case ConfirmSwapErrorTypes.ROUTE_UPDATED_WITH_HIGH_VALUE_LOSS:
57
+ return errorMessages().routeUpdatedWithHighValueLoss.title;
60
58
  default:
61
59
  return '';
62
60
  }
@@ -1,2 +1 @@
1
1
  export const RANGO_PUBLIC_API_KEY = 'c6381a79-2817-4602-83bf-6a641a409e32';
2
- export const DEFAULT_BASE_URL = 'https://api.rango.exchange';
@@ -5,6 +5,6 @@ export const swapButtonTitles = () => {
5
5
  connectWallet: i18n.t('Connect Wallet'),
6
6
  swap: i18n.t('Swap'),
7
7
  swapAnyway: i18n.t('Swap anyway'),
8
- ethWarning: i18n.t('The route goes through Ethereum. Continue?'),
8
+ ethRouteWarning: i18n.t('The route goes through Ethereum. Continue?'),
9
9
  };
10
10
  };
@@ -1,16 +1,17 @@
1
1
  export const navigationRoutes = {
2
2
  home: '/',
3
3
  fromSwap: 'from-swap',
4
+ fromBlockchain: '/from-swap/blockchains',
5
+ toBlockchain: '/to-swap/blockchains',
4
6
  toSwap: 'to-swap',
5
- blockchains: 'blockchains',
6
7
  settings: 'settings',
7
- liquiditySources: 'liquidity-sources',
8
- themes: 'themes',
9
- bridges: 'bridges',
10
- exchanges: 'exchanges',
11
- languages: 'languages',
8
+ liquiditySources: '/settings/liquidity-sources',
9
+ themes: '/settings/themes',
10
+ bridges: '/settings/bridges',
11
+ exchanges: '/settings/exchanges',
12
+ languages: '/settings/languages',
12
13
  swaps: 'swaps',
13
14
  wallets: 'wallets',
14
15
  confirmSwap: 'confirm-swap',
15
- swapDetails: ':requestId',
16
+ swapDetails: 'swaps/:requestId',
16
17
  };
@@ -4,5 +4,4 @@ export enum SearchParams {
4
4
  'TO_CHAIN' = 'toBlockchain',
5
5
  'TO_TOKEN' = 'toToken',
6
6
  'FROM_AMOUNT' = 'fromAmount',
7
- 'AUTO_CONNECT' = 'autoConnect',
8
7
  }
@@ -1,14 +1,14 @@
1
- import type { QuoteUpdateWarning } from '../types';
1
+ import type { RouteWarning } from '../types';
2
2
 
3
3
  import { i18n } from '@lingui/core';
4
4
 
5
- import { QuoteUpdateType } from '../types';
5
+ import { RouteWarningType } from '../types';
6
6
 
7
- export function getQuoteUpdateWarningMessage(warning: QuoteUpdateWarning) {
7
+ export function getRouteWarningMessage(warning: RouteWarning) {
8
8
  switch (warning.type) {
9
- case QuoteUpdateType.QUOTE_UPDATED:
9
+ case RouteWarningType.ROUTE_UPDATED:
10
10
  return i18n.t('Route has been updated.');
11
- case QuoteUpdateType.QUOTE_AND_OUTPUT_AMOUNT_UPDATED:
11
+ case RouteWarningType.ROUTE_AND_OUTPUT_AMOUNT_UPDATED:
12
12
  return i18n.t(
13
13
  'Output amount changed to {newOutputAmount} ({percentageChange}% change).',
14
14
  {
@@ -16,9 +16,9 @@ export function getQuoteUpdateWarningMessage(warning: QuoteUpdateWarning) {
16
16
  percentageChange: warning.percentageChange,
17
17
  }
18
18
  );
19
- case QuoteUpdateType.QUOTE_SWAPPERS_UPDATED:
19
+ case RouteWarningType.ROUTE_SWAPPERS_UPDATED:
20
20
  return i18n.t('Route swappers has been updated.');
21
- case QuoteUpdateType.QUOTE_COINS_UPDATED:
21
+ case RouteWarningType.ROUTE_COINS_UPDATED:
22
22
  return i18n.t('Route internal coins has been updated.');
23
23
  default:
24
24
  return '';
@@ -0,0 +1,303 @@
1
+ /* eslint-disable @typescript-eslint/no-magic-numbers */
2
+ import type {
3
+ ConfirmSwapError,
4
+ ConfirmSwapWarnings,
5
+ PendingSwapSettings,
6
+ Wallet,
7
+ } from '../types';
8
+ import type { PendingSwap } from '@rango-dev/queue-manager-rango-preset';
9
+ import type { BestRouteResponse } from 'rango-sdk';
10
+
11
+ import { calculatePendingSwap } from '@rango-dev/queue-manager-rango-preset';
12
+ import BigNumber from 'bignumber.js';
13
+ import { useEffect } from 'react';
14
+
15
+ import { errorMessages } from '../constants/errors';
16
+ import { HIGH_SLIPPAGE } from '../constants/swapSettings';
17
+ import { useBestRouteStore } from '../store/bestRoute';
18
+ import { useMetaStore } from '../store/meta';
19
+ import { useSettingsStore } from '../store/settings';
20
+ import { useWalletsStore } from '../store/wallets';
21
+ import {
22
+ ConfirmSwapErrorTypes,
23
+ RouteWarningType,
24
+ SlippageWarningType,
25
+ } from '../types';
26
+ import { numberToString } from '../utils/numbers';
27
+ import {
28
+ isNumberOfSwapsChanged,
29
+ isRouteChanged,
30
+ isRouteInternalCoinsUpdated,
31
+ isRouteSwappersUpdated,
32
+ } from '../utils/routing';
33
+ import {
34
+ createBestRouteRequestBody,
35
+ getBalanceWarnings,
36
+ getMinRequiredSlippage,
37
+ getOutputRatio,
38
+ getPercentageChange,
39
+ getRouteOutputAmount,
40
+ getWalletsForNewSwap,
41
+ hasProperSlippage,
42
+ isOutputAmountChangedALot,
43
+ outputRatioHasWarning,
44
+ } from '../utils/swap';
45
+
46
+ import { useFetchBestRoute } from './useFetchBestRoute';
47
+
48
+ export type ConfirmSwapFetchResult = {
49
+ swap: PendingSwap | null;
50
+ error: ConfirmSwapError | null;
51
+ warnings: ConfirmSwapWarnings | null;
52
+ };
53
+
54
+ export type ConfirmSwap = {
55
+ loading: boolean;
56
+ fetch: (params: Params) => Promise<ConfirmSwapFetchResult>;
57
+ cancelFetch: () => void;
58
+ };
59
+
60
+ type Params = {
61
+ selectedWallets: Wallet[];
62
+ customDestination?: string;
63
+ };
64
+
65
+ /**
66
+ * A request can be successful but in body of the response, it can be some case which is considered as failed.
67
+ */
68
+ function throwErrorIfResponseIsNotValid(
69
+ response: BestRouteResponse,
70
+ params: { inputUsdValue: BigNumber | null; outputUsdValue: number | null }
71
+ ) {
72
+ if (!response.result) {
73
+ throw new Error(errorMessages().noRoutesError.title, {
74
+ cause: {
75
+ type: ConfirmSwapErrorTypes.NO_ROUTE,
76
+ diagnosisMessage: response.diagnosisMessages?.[0],
77
+ },
78
+ });
79
+ }
80
+
81
+ const newRouteOutputUsdValue = new BigNumber(
82
+ response.result?.outputAmount || '0'
83
+ ).multipliedBy(params.outputUsdValue || 0);
84
+
85
+ const outputRatio = getOutputRatio(
86
+ params.inputUsdValue,
87
+ newRouteOutputUsdValue
88
+ );
89
+ const highValueLoss = outputRatioHasWarning(
90
+ params.inputUsdValue,
91
+ outputRatio
92
+ );
93
+
94
+ if (highValueLoss) {
95
+ throw new Error('High value loss for route', {
96
+ cause: {
97
+ type: ConfirmSwapErrorTypes.ROUTE_UPDATED_WITH_HIGH_VALUE_LOSS,
98
+ },
99
+ });
100
+ }
101
+
102
+ return response;
103
+ }
104
+
105
+ function generateWarnings(
106
+ previousRoute: BestRouteResponse,
107
+ currentRoute: BestRouteResponse,
108
+ params: {
109
+ selectedWallets: Wallet[];
110
+ userSlippage: number;
111
+ }
112
+ ): ConfirmSwapWarnings {
113
+ const routeChanged = isRouteChanged(previousRoute, currentRoute);
114
+ const output: ConfirmSwapWarnings = {
115
+ balance: null,
116
+ route: null,
117
+ slippage: null,
118
+ };
119
+
120
+ if (routeChanged) {
121
+ if (isOutputAmountChangedALot(previousRoute, currentRoute)) {
122
+ output.route = {
123
+ type: RouteWarningType.ROUTE_AND_OUTPUT_AMOUNT_UPDATED,
124
+ newOutputAmount: numberToString(getRouteOutputAmount(currentRoute)),
125
+ percentageChange: numberToString(
126
+ getPercentageChange(
127
+ getRouteOutputAmount(previousRoute),
128
+ getRouteOutputAmount(currentRoute)
129
+ ),
130
+ null,
131
+ 2
132
+ ),
133
+ };
134
+ } else if (isNumberOfSwapsChanged(previousRoute, currentRoute)) {
135
+ output.route = {
136
+ type: RouteWarningType.ROUTE_UPDATED,
137
+ };
138
+ } else if (isRouteSwappersUpdated(previousRoute, currentRoute)) {
139
+ output.route = {
140
+ type: RouteWarningType.ROUTE_SWAPPERS_UPDATED,
141
+ };
142
+ } else if (isRouteInternalCoinsUpdated(previousRoute, currentRoute)) {
143
+ output.route = {
144
+ type: RouteWarningType.ROUTE_COINS_UPDATED,
145
+ };
146
+ }
147
+ }
148
+
149
+ const balanceWarnings = getBalanceWarnings(
150
+ currentRoute,
151
+ params.selectedWallets
152
+ );
153
+ const enoughBalance = balanceWarnings.length === 0;
154
+
155
+ if (!enoughBalance) {
156
+ output.balance = {
157
+ messages: balanceWarnings,
158
+ };
159
+ }
160
+
161
+ const minRequiredSlippage = getMinRequiredSlippage(previousRoute);
162
+ const highSlippage = params.userSlippage > HIGH_SLIPPAGE;
163
+
164
+ if (!hasProperSlippage(params.userSlippage.toString(), minRequiredSlippage)) {
165
+ output.slippage = {
166
+ type: SlippageWarningType.INSUFFICIENT_SLIPPAGE,
167
+ slippage: minRequiredSlippage,
168
+ };
169
+ } else if (highSlippage) {
170
+ output.slippage = {
171
+ type: SlippageWarningType.HIGH_SLIPPAGE,
172
+ slippage: params.userSlippage.toString(),
173
+ };
174
+ }
175
+
176
+ return output;
177
+ }
178
+
179
+ export function useConfirmSwap(): ConfirmSwap {
180
+ const {
181
+ fromToken,
182
+ toToken,
183
+ inputAmount,
184
+ inputUsdValue,
185
+ setRoute,
186
+ bestRoute: initialRoute,
187
+ customDestination: customDestinationFromStore,
188
+ } = useBestRouteStore();
189
+
190
+ const {
191
+ slippage,
192
+ customSlippage,
193
+ affiliatePercent,
194
+ affiliateRef,
195
+ affiliateWallets,
196
+ disabledLiquiditySources,
197
+ } = useSettingsStore();
198
+ const { connectedWallets } = useWalletsStore();
199
+
200
+ const { meta } = useMetaStore();
201
+
202
+ const userSlippage = customSlippage || slippage;
203
+
204
+ const { fetch: fetchBestRoute, cancelFetch, loading } = useFetchBestRoute();
205
+
206
+ useEffect(() => cancelFetch, []);
207
+
208
+ const fetch: ConfirmSwap['fetch'] = async (params: Params) => {
209
+ const selectedWallets = params.selectedWallets;
210
+ const customDestination =
211
+ params?.customDestination ?? customDestinationFromStore;
212
+
213
+ if (!fromToken || !toToken || !inputAmount || !initialRoute) {
214
+ return {
215
+ route: null,
216
+ swap: null,
217
+ error: null,
218
+ warnings: null,
219
+ };
220
+ }
221
+
222
+ const requestBody = createBestRouteRequestBody({
223
+ fromToken,
224
+ toToken,
225
+ inputAmount,
226
+ wallets: connectedWallets,
227
+ selectedWallets,
228
+ disabledLiquiditySources,
229
+ slippage: userSlippage,
230
+ affiliateRef,
231
+ affiliatePercent,
232
+ affiliateWallets,
233
+ initialRoute,
234
+ destination: customDestination,
235
+ });
236
+
237
+ let currentRoute: BestRouteResponse;
238
+ try {
239
+ currentRoute = await fetchBestRoute(requestBody).then((response) =>
240
+ throwErrorIfResponseIsNotValid(response, {
241
+ outputUsdValue: toToken.usdPrice,
242
+ inputUsdValue,
243
+ })
244
+ );
245
+ setRoute(currentRoute);
246
+ } catch (error: any) {
247
+ if (error?.code === 'ERR_CANCELED') {
248
+ return {
249
+ swap: null,
250
+ error: {
251
+ type: ConfirmSwapErrorTypes.REQUEST_CANCELED,
252
+ },
253
+ warnings: null,
254
+ };
255
+ }
256
+
257
+ if (error.cause) {
258
+ return {
259
+ swap: null,
260
+ error: error.cause,
261
+ warnings: null,
262
+ };
263
+ }
264
+
265
+ return {
266
+ swap: null,
267
+ error: {
268
+ type: ConfirmSwapErrorTypes.REQUEST_FAILED,
269
+ },
270
+ warnings: null,
271
+ };
272
+ }
273
+
274
+ const swapSettings: PendingSwapSettings = {
275
+ slippage: userSlippage.toString(),
276
+ disabledSwappersGroups: disabledLiquiditySources,
277
+ };
278
+ const swap = calculatePendingSwap(
279
+ inputAmount.toString(),
280
+ currentRoute,
281
+ getWalletsForNewSwap(selectedWallets),
282
+ swapSettings,
283
+ false,
284
+ meta
285
+ );
286
+
287
+ return {
288
+ route: currentRoute,
289
+ swap,
290
+ error: null,
291
+ warnings: generateWarnings(initialRoute, currentRoute, {
292
+ selectedWallets,
293
+ userSlippage,
294
+ }),
295
+ };
296
+ };
297
+
298
+ return {
299
+ loading,
300
+ fetch,
301
+ cancelFetch,
302
+ };
303
+ }
@@ -4,18 +4,18 @@ import { useRef, useState } from 'react';
4
4
 
5
5
  import { httpService } from '../services/httpService';
6
6
 
7
- interface UseFetchQuote {
7
+ interface UseFetchBestRoute {
8
8
  fetch: (requestBody: BestRouteRequest) => Promise<BestRouteResponse>;
9
9
  cancelFetch: () => void;
10
10
  loading: boolean;
11
11
  }
12
12
 
13
- export function useFetchQuote(): UseFetchQuote {
13
+ export function useFetchBestRoute(): UseFetchBestRoute {
14
14
  const [loading, setLoading] = useState(false);
15
15
  const abortController = useRef<AbortController | null>(null);
16
16
  const cancel = () => abortController.current?.abort();
17
17
 
18
- const fetch: UseFetchQuote['fetch'] = async (requestBody) => {
18
+ const fetch: UseFetchBestRoute['fetch'] = async (requestBody) => {
19
19
  cancel();
20
20
  abortController.current = new AbortController();
21
21
 
@@ -3,17 +3,18 @@ import type { LanguageItem } from '../constants/languages';
3
3
  import { type Language } from '@rango-dev/ui';
4
4
 
5
5
  import { DEFAULT_LANGUAGE, LANGUAGES } from '../constants/languages';
6
- import { useAppStore } from '../store/AppStore';
6
+ import { useSettingsStore } from '../store/settings';
7
7
 
8
8
  interface UseLanguage {
9
9
  languages: LanguageItem[];
10
10
  defaultLanguage: Language;
11
11
  activeLanguage: Language;
12
- changeLanguage: (language?: Language) => void;
12
+ changeLanguage: (language: Language) => void;
13
13
  }
14
14
 
15
15
  export function useLanguage(): UseLanguage {
16
- const { setLanguage, language } = useAppStore();
16
+ const language = useSettingsStore.use.language();
17
+ const setLanguage = useSettingsStore.use.setLanguage();
17
18
  const languages = LANGUAGES;
18
19
  const defaultLanguage = DEFAULT_LANGUAGE;
19
20
 
@@ -21,6 +22,6 @@ export function useLanguage(): UseLanguage {
21
22
  activeLanguage: language,
22
23
  languages,
23
24
  defaultLanguage,
24
- changeLanguage: (language) => setLanguage(language || DEFAULT_LANGUAGE),
25
+ changeLanguage: setLanguage,
25
26
  };
26
27
  }
@@ -1,6 +1,55 @@
1
- import { useNavigate } from 'react-router-dom';
1
+ import { useInRouterContext, useNavigate } from 'react-router-dom';
2
2
 
3
- export function useNavigateBack(): () => void {
3
+ import { navigationRoutes } from '../constants/navigationRoutes';
4
+ import { useBestRouteStore } from '../store/bestRoute';
5
+
6
+ export function useNavigateBack() {
7
+ const isRouterInContext = useInRouterContext();
4
8
  const navigate = useNavigate();
5
- return () => navigate(-1);
9
+ const routeWalletsConfirmed = useBestRouteStore.use.routeWalletsConfirmed();
10
+
11
+ navigationRoutes;
12
+
13
+ const navigateBackFrom = (currentRoute: string) => {
14
+ if (currentRoute === navigationRoutes.swapDetails) {
15
+ return navigate('/' + navigationRoutes.swaps, { replace: true });
16
+ }
17
+
18
+ if (
19
+ !isRouterInContext ||
20
+ (window.history.state && window.history.state.idx > 0)
21
+ ) {
22
+ // eslint-disable-next-line @typescript-eslint/no-magic-numbers
23
+ navigate(-1);
24
+ } else {
25
+ if (
26
+ [navigationRoutes.settings, navigationRoutes.wallets].includes(
27
+ currentRoute
28
+ ) &&
29
+ routeWalletsConfirmed
30
+ ) {
31
+ return navigate('/' + navigationRoutes.confirmSwap, { replace: true });
32
+ }
33
+ if (
34
+ [
35
+ navigationRoutes.fromSwap,
36
+ navigationRoutes.toSwap,
37
+ navigationRoutes.settings,
38
+ navigationRoutes.wallets,
39
+ navigationRoutes.swaps,
40
+ navigationRoutes.confirmSwap,
41
+ ].includes(currentRoute)
42
+ ) {
43
+ navigate(navigationRoutes.home, { replace: true });
44
+ } else if (currentRoute === navigationRoutes.fromBlockchain) {
45
+ navigate('/' + navigationRoutes.fromSwap, { replace: true });
46
+ } else if (currentRoute === navigationRoutes.toBlockchain) {
47
+ navigate('/' + navigationRoutes.fromSwap, { replace: true });
48
+ } else if (currentRoute === navigationRoutes.liquiditySources) {
49
+ navigate('/' + navigationRoutes.settings, { replace: true });
50
+ }
51
+ }
52
+ };
53
+
54
+ return { navigateBackFrom };
6
55
  }
@@ -1 +1 @@
1
- export const MOST_USED_BLOCKCHAINS = ['ETH', 'COSMOS', 'OSMOSIS'];
1
+ export const MOST_USED_BLOCKChAINS = ['ETH', 'COSMOS', 'OSMOSIS'];
@@ -1,16 +1,13 @@
1
- import type {
2
- PrepareListOptions,
3
- PrepareOutput,
4
- } from './usePrepareBlockchainList.types';
1
+ import type { PrepareListOptions } from './usePrepareBlockchainList.types';
5
2
  import type { BlockchainMeta } from 'rango-sdk';
6
3
 
7
- import { MOST_USED_BLOCKCHAINS } from './usePrepareBlockchainList.constants';
4
+ import { MOST_USED_BLOCKChAINS } from './usePrepareBlockchainList.constants';
8
5
 
9
6
  export function prepare(
10
7
  blockchains: BlockchainMeta[],
11
8
  preferredBlockchains: string[],
12
9
  options?: PrepareListOptions
13
- ): PrepareOutput {
10
+ ) {
14
11
  /*
15
12
  * TODO:
16
13
  * We copying the `blockchains` which can causes performance penalties but we should because we are mutating the original object.
@@ -28,37 +25,17 @@ export function prepare(
28
25
  let preferredBlockchainsWithoutMainList = preferredBlockchains;
29
26
 
30
27
  if (preferredBlockchains.length <= options.limit) {
31
- /**
32
- *
33
- * if we want to show 10 items (aka `options.limit`)
34
- * and have these items as our preferred list: [x,y,z]
35
- * and these as our main list: [A, B, C, D, E, F, G, H, I, J]
36
- * the final list will be like this: [...preferred, ...mainList].
37
- *
38
- * Since we have a limit (e.g. 10) on our list (preferred + mainList),
39
- * we only should check those items from main list that will be in final list.
40
- *
41
- * finalListWithoutLimit = [x,y,z, A, B, C, D, E, F, G, H, I, J]
42
- * finalListWithLimit = [x,y,z, A, B, C, D, E, F, G]
43
- *
44
- * As you can see, [H, I, J] will not be in our list.
45
- *
46
- * The following code only check preffred blockchain
47
- * shouldn't be in first 7 of 10 items in main list. (Since, the last 3 items will not be in the final list and we should check those.)
28
+ /*
29
+ * For first X (limit) numbers, we need to remove them from preferred if exists.
48
30
  */
49
- const howManyItemsShouldBeCheckedFromMainList =
50
- options.limit - preferredBlockchains.length;
51
-
52
- for (let i = 0; i <= howManyItemsShouldBeCheckedFromMainList; i++) {
31
+ for (let i = 0; i < options.limit; i++) {
53
32
  const blockchain = list[i];
54
-
55
33
  preferredBlockchainsWithoutMainList =
56
34
  preferredBlockchainsWithoutMainList.filter((preferredBlockchain) => {
57
35
  return blockchain.name !== preferredBlockchain;
58
36
  });
59
37
  }
60
38
  }
61
-
62
39
  list.sort(
63
40
  generateSortByPreferredBlockchainsFor(preferredBlockchainsWithoutMainList)
64
41
  );
@@ -80,7 +57,7 @@ export function sortByMostUsedBlockchains(
80
57
  a: BlockchainMeta,
81
58
  b: BlockchainMeta
82
59
  ) {
83
- const mostUsed = MOST_USED_BLOCKCHAINS;
60
+ const mostUsed = MOST_USED_BLOCKChAINS;
84
61
  const aIndexInMostUsed = mostUsed.findIndex((token) => token === a.name);
85
62
  const bIndexInMostUsed = mostUsed.findIndex((token) => token === b.name);
86
63
  const aIsMostUsed = aIndexInMostUsed > -1;
@@ -129,10 +106,3 @@ export function generateSortByPreferredBlockchainsFor(
129
106
  return 0;
130
107
  };
131
108
  }
132
-
133
- export function isInVisibleList(
134
- blockchain: string,
135
- prepareOutput: PrepareOutput
136
- ): boolean {
137
- return !!prepareOutput.list.find((item) => item.name === blockchain);
138
- }