@rango-dev/widget-embedded 0.17.1-next.2 → 0.17.1-next.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/dist/QueueManager.d.ts +5 -2
  2. package/dist/QueueManager.d.ts.map +1 -1
  3. package/dist/components/AppRouter.d.ts +0 -2
  4. package/dist/components/AppRouter.d.ts.map +1 -1
  5. package/dist/components/AppRoutes.d.ts +1 -6
  6. package/dist/components/AppRoutes.d.ts.map +1 -1
  7. package/dist/components/ConfirmWalletsModal/ConfirmWallets.helpers.d.ts +1 -3
  8. package/dist/components/ConfirmWalletsModal/ConfirmWallets.helpers.d.ts.map +1 -1
  9. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +1 -1
  10. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
  11. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.types.d.ts +1 -3
  12. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.types.d.ts.map +1 -1
  13. package/dist/components/ConfirmWalletsModal/WalletList.d.ts.map +1 -1
  14. package/dist/components/ConfirmWalletsModal/WalletList.type.d.ts +1 -4
  15. package/dist/components/ConfirmWalletsModal/WalletList.type.d.ts.map +1 -1
  16. package/dist/components/Layout/Layout.d.ts.map +1 -1
  17. package/dist/components/Layout/Layout.types.d.ts +2 -2
  18. package/dist/components/Layout/Layout.types.d.ts.map +1 -1
  19. package/dist/components/NoResult/NoResult.d.ts +4 -0
  20. package/dist/components/NoResult/NoResult.d.ts.map +1 -0
  21. package/dist/components/NoResult/NoResult.helpers.d.ts +4 -0
  22. package/dist/components/NoResult/NoResult.helpers.d.ts.map +1 -0
  23. package/dist/components/{NoRoutes/NoRoutes.styles.d.ts → NoResult/NoResult.styles.d.ts} +1 -1
  24. package/dist/components/{NoRoutes/NoRoutes.styles.d.ts.map → NoResult/NoResult.styles.d.ts.map} +1 -1
  25. package/dist/components/{NoRoutes/NoRoutes.types.d.ts → NoResult/NoResult.types.d.ts} +3 -3
  26. package/dist/components/NoResult/NoResult.types.d.ts.map +1 -0
  27. package/dist/components/NoResult/index.d.ts +2 -0
  28. package/dist/components/NoResult/index.d.ts.map +1 -0
  29. package/dist/components/NotificationContent/NotificationContent.d.ts.map +1 -1
  30. package/dist/components/Quote/Quote.d.ts +4 -0
  31. package/dist/components/Quote/Quote.d.ts.map +1 -0
  32. package/dist/components/Quote/Quote.styles.d.ts +1588 -0
  33. package/dist/components/Quote/Quote.styles.d.ts.map +1 -0
  34. package/dist/components/Quote/Quote.types.d.ts +21 -0
  35. package/dist/components/Quote/Quote.types.d.ts.map +1 -0
  36. package/dist/components/Quote/QuoteSkeleton.d.ts +4 -0
  37. package/dist/components/Quote/QuoteSkeleton.d.ts.map +1 -0
  38. package/dist/components/Quote/QuoteSkeleton.styles.d.ts +319 -0
  39. package/dist/components/Quote/QuoteSkeleton.styles.d.ts.map +1 -0
  40. package/dist/components/Quote/QuoteSkeleton.types.d.ts +6 -0
  41. package/dist/components/Quote/QuoteSkeleton.types.d.ts.map +1 -0
  42. package/dist/components/Quote/QuoteSummary.d.ts +11 -0
  43. package/dist/components/Quote/QuoteSummary.d.ts.map +1 -0
  44. package/dist/components/Quote/QuoteSummary.styles.d.ts +158 -0
  45. package/dist/components/Quote/QuoteSummary.styles.d.ts.map +1 -0
  46. package/dist/components/Quote/index.d.ts +4 -0
  47. package/dist/components/Quote/index.d.ts.map +1 -0
  48. package/dist/components/QuoteWarningsAndErrors/HighValueLossWarningModal.d.ts +11 -0
  49. package/dist/components/QuoteWarningsAndErrors/HighValueLossWarningModal.d.ts.map +1 -0
  50. package/dist/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.d.ts +4 -0
  51. package/dist/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.d.ts.map +1 -0
  52. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts +4 -0
  53. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts.map +1 -0
  54. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts +9 -0
  55. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts.map +1 -0
  56. package/dist/components/{RouteErrors/RouteErrors.styles.d.ts → QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts} +1 -1
  57. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts.map +1 -0
  58. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts +23 -0
  59. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts.map +1 -0
  60. package/dist/components/QuoteWarningsAndErrors/SlippageWariningModal.d.ts +11 -0
  61. package/dist/components/QuoteWarningsAndErrors/SlippageWariningModal.d.ts.map +1 -0
  62. package/dist/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.d.ts +11 -0
  63. package/dist/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.d.ts.map +1 -0
  64. package/dist/components/QuoteWarningsAndErrors/index.d.ts +2 -0
  65. package/dist/components/QuoteWarningsAndErrors/index.d.ts.map +1 -0
  66. package/dist/components/SwapDetails/SwapDetails.Placeholder.d.ts.map +1 -1
  67. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  68. package/dist/components/SwapDetailsModal/SwapDetailsCompleteModal.d.ts.map +1 -1
  69. package/dist/components/SwapsGroup/SwapsGroup.d.ts.map +1 -1
  70. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts.map +1 -1
  71. package/dist/components/TokenList/TokenList.d.ts.map +1 -1
  72. package/dist/components/TokenList/TokenList.styles.d.ts.map +1 -1
  73. package/dist/components/UpdateUrl.d.ts +1 -6
  74. package/dist/components/UpdateUrl.d.ts.map +1 -1
  75. package/dist/components/WidgetEvents.d.ts.map +1 -1
  76. package/dist/constants/errors.d.ts +4 -4
  77. package/dist/constants/errors.d.ts.map +1 -1
  78. package/dist/constants/index.d.ts +1 -0
  79. package/dist/constants/index.d.ts.map +1 -1
  80. package/dist/constants/messages.d.ts +1 -1
  81. package/dist/constants/navigationRoutes.d.ts +1 -2
  82. package/dist/constants/navigationRoutes.d.ts.map +1 -1
  83. package/dist/constants/searchParams.d.ts +2 -1
  84. package/dist/constants/searchParams.d.ts.map +1 -1
  85. package/dist/constants/warnings.d.ts +2 -2
  86. package/dist/constants/warnings.d.ts.map +1 -1
  87. package/dist/containers/App/App.d.ts +3 -0
  88. package/dist/containers/App/App.d.ts.map +1 -0
  89. package/dist/containers/App/App.styles.d.ts +158 -0
  90. package/dist/containers/App/App.styles.d.ts.map +1 -0
  91. package/dist/containers/App/index.d.ts +2 -0
  92. package/dist/containers/App/index.d.ts.map +1 -0
  93. package/dist/containers/QuoteInfo/QuoteInfo.d.ts +4 -0
  94. package/dist/containers/QuoteInfo/QuoteInfo.d.ts.map +1 -0
  95. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts +788 -0
  96. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts.map +1 -0
  97. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts +20 -0
  98. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts.map +1 -0
  99. package/dist/containers/QuoteInfo/index.d.ts +2 -0
  100. package/dist/containers/QuoteInfo/index.d.ts.map +1 -0
  101. package/dist/containers/Wallets/Wallets.d.ts +6 -0
  102. package/dist/containers/Wallets/Wallets.d.ts.map +1 -0
  103. package/dist/containers/Wallets/Wallets.types.d.ts +11 -0
  104. package/dist/containers/Wallets/Wallets.types.d.ts.map +1 -0
  105. package/dist/containers/Wallets/index.d.ts +2 -0
  106. package/dist/containers/Wallets/index.d.ts.map +1 -0
  107. package/dist/containers/Widget/Widget.d.ts +5 -0
  108. package/dist/containers/Widget/Widget.d.ts.map +1 -0
  109. package/dist/containers/Widget/Widget.types.d.ts +5 -0
  110. package/dist/containers/Widget/Widget.types.d.ts.map +1 -0
  111. package/dist/containers/Widget/index.d.ts +3 -0
  112. package/dist/containers/Widget/index.d.ts.map +1 -0
  113. package/dist/containers/WidgetInfo/WidgetInfo.d.ts +6 -0
  114. package/dist/containers/WidgetInfo/WidgetInfo.d.ts.map +1 -0
  115. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts +14 -0
  116. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts.map +1 -0
  117. package/dist/containers/WidgetInfo/index.d.ts +2 -0
  118. package/dist/containers/WidgetInfo/index.d.ts.map +1 -0
  119. package/dist/containers/WidgetProvider/WidgetProvider.d.ts +5 -0
  120. package/dist/containers/WidgetProvider/WidgetProvider.d.ts.map +1 -0
  121. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts +7 -0
  122. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts.map +1 -0
  123. package/dist/containers/WidgetProvider/index.d.ts +2 -0
  124. package/dist/containers/WidgetProvider/index.d.ts.map +1 -0
  125. package/dist/hooks/useConfirmSwap/index.d.ts +2 -0
  126. package/dist/hooks/useConfirmSwap/index.d.ts.map +1 -0
  127. package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts +3 -0
  128. package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts.map +1 -0
  129. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts +19 -0
  130. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts.map +1 -0
  131. package/dist/hooks/{useConfirmSwap.d.ts → useConfirmSwap/useConfirmSwap.types.d.ts} +5 -7
  132. package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts.map +1 -0
  133. package/dist/hooks/{useFetchBestRoute.d.ts → useFetchQuote.d.ts} +3 -3
  134. package/dist/hooks/useFetchQuote.d.ts.map +1 -0
  135. package/dist/hooks/useForceAutoConnect.d.ts +2 -0
  136. package/dist/hooks/useForceAutoConnect.d.ts.map +1 -0
  137. package/dist/hooks/useLanguage.d.ts +1 -1
  138. package/dist/hooks/useLanguage.d.ts.map +1 -1
  139. package/dist/hooks/useNavigateBack.d.ts +1 -3
  140. package/dist/hooks/useNavigateBack.d.ts.map +1 -1
  141. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.d.ts +1 -1
  142. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts +2 -2
  143. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts.map +1 -1
  144. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts +5 -7
  145. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts.map +1 -1
  146. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts +1 -0
  147. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts.map +1 -1
  148. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts +5 -1
  149. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts.map +1 -1
  150. package/dist/hooks/useSwapInput.d.ts +4 -2
  151. package/dist/hooks/useSwapInput.d.ts.map +1 -1
  152. package/dist/hooks/useSyncStoresWithConfig.d.ts +1 -2
  153. package/dist/hooks/useSyncStoresWithConfig.d.ts.map +1 -1
  154. package/dist/hooks/useWalletList.d.ts.map +1 -1
  155. package/dist/index.d.ts +13 -5
  156. package/dist/index.d.ts.map +1 -1
  157. package/dist/index.js +1 -1
  158. package/dist/index.js.map +4 -4
  159. package/dist/pages/ConfirmSwapPage.d.ts +1 -6
  160. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  161. package/dist/pages/HistoryPage.d.ts.map +1 -1
  162. package/dist/pages/Home.d.ts.map +1 -1
  163. package/dist/pages/LanguagePage.d.ts.map +1 -1
  164. package/dist/pages/LiquiditySourcePage.d.ts +1 -2
  165. package/dist/pages/LiquiditySourcePage.d.ts.map +1 -1
  166. package/dist/pages/SelectBlockchainPage.d.ts.map +1 -1
  167. package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
  168. package/dist/pages/SettingsPage.d.ts +1 -6
  169. package/dist/pages/SettingsPage.d.ts.map +1 -1
  170. package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
  171. package/dist/pages/ThemePage.d.ts.map +1 -1
  172. package/dist/pages/WalletsPage.d.ts +1 -8
  173. package/dist/pages/WalletsPage.d.ts.map +1 -1
  174. package/dist/store/AppStore.d.ts +11 -0
  175. package/dist/store/AppStore.d.ts.map +1 -0
  176. package/dist/store/app.d.ts +5 -23
  177. package/dist/store/app.d.ts.map +1 -1
  178. package/dist/store/{bestRoute.d.ts → quote.d.ts} +39 -27
  179. package/dist/store/quote.d.ts.map +1 -0
  180. package/dist/store/settings.d.ts +3 -2
  181. package/dist/store/settings.d.ts.map +1 -1
  182. package/dist/store/slices/config.d.ts +3 -2
  183. package/dist/store/slices/config.d.ts.map +1 -1
  184. package/dist/store/slices/data.d.ts +3 -0
  185. package/dist/store/slices/data.d.ts.map +1 -1
  186. package/dist/store/wallets.d.ts +5 -4
  187. package/dist/store/wallets.d.ts.map +1 -1
  188. package/dist/types/config.d.ts +19 -5
  189. package/dist/types/config.d.ts.map +1 -1
  190. package/dist/types/index.d.ts +1 -1
  191. package/dist/types/index.d.ts.map +1 -1
  192. package/dist/types/quote.d.ts +82 -0
  193. package/dist/types/quote.d.ts.map +1 -0
  194. package/dist/types/swap.d.ts +3 -13
  195. package/dist/types/swap.d.ts.map +1 -1
  196. package/dist/utils/colors.d.ts.map +1 -1
  197. package/dist/utils/configs.d.ts +1 -0
  198. package/dist/utils/configs.d.ts.map +1 -1
  199. package/dist/utils/meta.d.ts +2 -1
  200. package/dist/utils/meta.d.ts.map +1 -1
  201. package/dist/utils/numbers.d.ts +1 -1
  202. package/dist/utils/numbers.d.ts.map +1 -1
  203. package/dist/utils/{routing.d.ts → quote.d.ts} +16 -12
  204. package/dist/utils/quote.d.ts.map +1 -0
  205. package/dist/utils/settings.d.ts +3 -2
  206. package/dist/utils/settings.d.ts.map +1 -1
  207. package/dist/utils/swap.d.ts +34 -23
  208. package/dist/utils/swap.d.ts.map +1 -1
  209. package/dist/utils/wallets.d.ts +2 -2
  210. package/dist/utils/wallets.d.ts.map +1 -1
  211. package/package.json +6 -6
  212. package/src/QueueManager.tsx +18 -17
  213. package/src/components/AppRouter.tsx +8 -32
  214. package/src/components/AppRoutes.tsx +57 -69
  215. package/src/components/BlockchainList/BlockchainList.tsx +4 -4
  216. package/src/components/BlockchainsSection/BlockchainsSection.tsx +7 -7
  217. package/src/components/ConfirmWalletsModal/ConfirmWallets.helpers.ts +2 -64
  218. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +39 -45
  219. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.types.ts +1 -3
  220. package/src/components/ConfirmWalletsModal/WalletList.tsx +6 -5
  221. package/src/components/ConfirmWalletsModal/WalletList.type.ts +1 -4
  222. package/src/components/Layout/Layout.tsx +10 -7
  223. package/src/components/Layout/Layout.types.ts +2 -2
  224. package/src/components/LoadingSwapDetails/LoadingSwapDetails.styles.ts +3 -3
  225. package/src/components/LoadingSwapDetails/LoadingSwapDetails.tsx +6 -6
  226. package/src/components/{NoRoutes/NoRoutes.helper.ts → NoResult/NoResult.helpers.ts} +23 -16
  227. package/src/components/{NoRoutes/NoRoutes.styles.ts → NoResult/NoResult.styles.ts} +2 -0
  228. package/src/components/{NoRoutes/NoRoutes.tsx → NoResult/NoResult.tsx} +10 -12
  229. package/src/components/{NoRoutes/NoRoutes.types.ts → NoResult/NoResult.types.ts} +3 -2
  230. package/src/components/NoResult/index.ts +1 -0
  231. package/src/components/NotificationContent/NotificationContent.tsx +5 -3
  232. package/src/components/Quote/Quote.styles.ts +239 -0
  233. package/src/components/Quote/Quote.tsx +413 -0
  234. package/src/components/Quote/Quote.types.ts +15 -0
  235. package/src/components/Quote/QuoteSkeleton.styles.ts +110 -0
  236. package/src/components/Quote/QuoteSkeleton.tsx +108 -0
  237. package/src/components/Quote/QuoteSkeleton.types.ts +5 -0
  238. package/src/components/Quote/QuoteSummary.styles.ts +15 -0
  239. package/src/components/Quote/QuoteSummary.tsx +46 -0
  240. package/src/components/Quote/index.ts +3 -0
  241. package/src/components/QuoteWarningsAndErrors/HighValueLossWarningModal.tsx +107 -0
  242. package/src/components/{RouteErrors/RouteErrorsModalItem.tsx → QuoteWarningsAndErrors/QuoteErrorsModalItem.tsx} +4 -4
  243. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.ts +74 -0
  244. package/src/components/{RouteErrors/RouteErrors.styles.ts → QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.ts} +8 -1
  245. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.tsx +103 -0
  246. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.ts +25 -0
  247. package/src/components/QuoteWarningsAndErrors/SlippageWariningModal.tsx +77 -0
  248. package/src/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.tsx +38 -0
  249. package/src/components/QuoteWarningsAndErrors/index.ts +1 -0
  250. package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +0 -4
  251. package/src/components/SwapDetails/SwapDetails.tsx +17 -24
  252. package/src/components/SwapDetailsModal/SwapDetailsCompleteModal.tsx +4 -3
  253. package/src/components/SwapDetailsModal/SwapDetailsModal.Cancel.tsx +2 -2
  254. package/src/components/SwapsGroup/SwapsGroup.styles.ts +8 -1
  255. package/src/components/SwapsGroup/SwapsGroup.tsx +0 -2
  256. package/src/components/SwitchFromAndTo.tsx +2 -2
  257. package/src/components/TokenList/TokenList.styles.ts +14 -2
  258. package/src/components/TokenList/TokenList.tsx +6 -7
  259. package/src/components/UpdateUrl.tsx +36 -29
  260. package/src/components/WidgetEvents.tsx +4 -2
  261. package/src/constants/errors.ts +17 -15
  262. package/src/constants/index.ts +1 -0
  263. package/src/constants/messages.ts +1 -1
  264. package/src/constants/navigationRoutes.ts +7 -8
  265. package/src/constants/searchParams.ts +1 -0
  266. package/src/constants/warnings.ts +7 -7
  267. package/src/containers/App/App.styles.ts +18 -0
  268. package/src/containers/App/App.tsx +55 -0
  269. package/src/containers/App/index.ts +1 -0
  270. package/src/containers/QuoteInfo/QuoteInfo.styles.ts +31 -0
  271. package/src/containers/QuoteInfo/QuoteInfo.tsx +98 -0
  272. package/src/containers/QuoteInfo/QuoteInfo.types.ts +20 -0
  273. package/src/containers/QuoteInfo/index.ts +1 -0
  274. package/src/{Wallets.tsx → containers/Wallets/Wallets.tsx} +40 -32
  275. package/src/containers/Wallets/Wallets.types.ts +12 -0
  276. package/src/containers/Wallets/index.ts +1 -0
  277. package/src/containers/Widget/Widget.tsx +19 -0
  278. package/src/containers/Widget/Widget.types.ts +5 -0
  279. package/src/containers/Widget/index.ts +2 -0
  280. package/src/containers/WidgetInfo/WidgetInfo.tsx +47 -0
  281. package/src/containers/WidgetInfo/WidgetInfo.types.ts +14 -0
  282. package/src/containers/WidgetInfo/index.ts +1 -0
  283. package/src/containers/WidgetProvider/WidgetProvider.tsx +28 -0
  284. package/src/containers/WidgetProvider/WidgetProvider.types.ts +7 -0
  285. package/src/containers/WidgetProvider/index.ts +1 -0
  286. package/src/hooks/useConfirmSwap/index.ts +1 -0
  287. package/src/hooks/useConfirmSwap/useConfirmSwap.helpers.ts +172 -0
  288. package/src/hooks/useConfirmSwap/useConfirmSwap.ts +137 -0
  289. package/src/hooks/useConfirmSwap/useConfirmSwap.types.ts +19 -0
  290. package/src/hooks/{useFetchBestRoute.ts → useFetchQuote.ts} +3 -3
  291. package/src/hooks/useForceAutoConnect.ts +27 -0
  292. package/src/hooks/useLanguage.ts +2 -2
  293. package/src/hooks/useNavigateBack.ts +3 -52
  294. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.ts +1 -1
  295. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.ts +37 -7
  296. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.ts +60 -0
  297. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.test.ts +78 -3
  298. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.ts +13 -4
  299. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.ts +6 -1
  300. package/src/hooks/useSwapInput.ts +139 -46
  301. package/src/hooks/useSyncStoresWithConfig.ts +22 -19
  302. package/src/hooks/useWalletList.ts +3 -5
  303. package/src/index.ts +14 -3
  304. package/src/pages/ConfirmSwapPage.tsx +95 -248
  305. package/src/pages/HistoryPage.tsx +1 -5
  306. package/src/pages/Home.tsx +75 -270
  307. package/src/pages/LanguagePage.tsx +0 -5
  308. package/src/pages/LiquiditySourcePage.tsx +22 -35
  309. package/src/pages/SelectBlockchainPage.tsx +31 -24
  310. package/src/pages/SelectSwapItemsPage.tsx +9 -23
  311. package/src/pages/SettingsPage.tsx +8 -15
  312. package/src/pages/SwapDetailsPage.tsx +6 -7
  313. package/src/pages/ThemePage.tsx +0 -4
  314. package/src/pages/WalletsPage.tsx +4 -15
  315. package/src/services/httpService.ts +1 -1
  316. package/src/store/AppStore.tsx +35 -0
  317. package/src/store/app.ts +18 -6
  318. package/src/store/{bestRoute.ts → quote.ts} +68 -60
  319. package/src/store/settings.ts +7 -4
  320. package/src/store/slices/config.ts +25 -15
  321. package/src/store/slices/data.ts +64 -29
  322. package/src/store/wallets.ts +12 -8
  323. package/src/types/config.ts +20 -5
  324. package/src/types/index.ts +1 -1
  325. package/src/types/quote.ts +107 -0
  326. package/src/types/swap.ts +3 -12
  327. package/src/utils/colors.ts +2 -1
  328. package/src/utils/configs.ts +2 -1
  329. package/src/utils/meta.ts +8 -1
  330. package/src/utils/numbers.ts +1 -1
  331. package/src/utils/quote.ts +338 -0
  332. package/src/utils/settings.ts +8 -7
  333. package/src/utils/swap.ts +153 -116
  334. package/src/utils/wallets.ts +29 -17
  335. package/dist/Wallets.d.ts +0 -17
  336. package/dist/Wallets.d.ts.map +0 -1
  337. package/dist/Widget.d.ts +0 -9
  338. package/dist/Widget.d.ts.map +0 -1
  339. package/dist/components/NoRoutes/NoRoutes.d.ts +0 -4
  340. package/dist/components/NoRoutes/NoRoutes.d.ts.map +0 -1
  341. package/dist/components/NoRoutes/NoRoutes.helper.d.ts +0 -3
  342. package/dist/components/NoRoutes/NoRoutes.helper.d.ts.map +0 -1
  343. package/dist/components/NoRoutes/NoRoutes.types.d.ts.map +0 -1
  344. package/dist/components/NoRoutes/index.d.ts +0 -2
  345. package/dist/components/NoRoutes/index.d.ts.map +0 -1
  346. package/dist/components/RouteErrors/RouteErrors.d.ts +0 -4
  347. package/dist/components/RouteErrors/RouteErrors.d.ts.map +0 -1
  348. package/dist/components/RouteErrors/RouteErrors.styles.d.ts.map +0 -1
  349. package/dist/components/RouteErrors/RouteErrors.types.d.ts +0 -24
  350. package/dist/components/RouteErrors/RouteErrors.types.d.ts.map +0 -1
  351. package/dist/components/RouteErrors/RouteErrorsModal.d.ts +0 -4
  352. package/dist/components/RouteErrors/RouteErrorsModal.d.ts.map +0 -1
  353. package/dist/components/RouteErrors/RouteErrorsModalItem.d.ts +0 -4
  354. package/dist/components/RouteErrors/RouteErrorsModalItem.d.ts.map +0 -1
  355. package/dist/components/RouteErrors/index.d.ts +0 -2
  356. package/dist/components/RouteErrors/index.d.ts.map +0 -1
  357. package/dist/hooks/useConfirmSwap.d.ts.map +0 -1
  358. package/dist/hooks/useFetchBestRoute.d.ts.map +0 -1
  359. package/dist/store/bestRoute.d.ts.map +0 -1
  360. package/dist/store/meta.d.ts +0 -23
  361. package/dist/store/meta.d.ts.map +0 -1
  362. package/dist/types/routing.d.ts +0 -65
  363. package/dist/types/routing.d.ts.map +0 -1
  364. package/dist/utils/routing.d.ts.map +0 -1
  365. package/src/Widget.tsx +0 -119
  366. package/src/components/NoRoutes/index.ts +0 -1
  367. package/src/components/RouteErrors/RouteErrors.tsx +0 -79
  368. package/src/components/RouteErrors/RouteErrors.types.ts +0 -29
  369. package/src/components/RouteErrors/RouteErrorsModal.tsx +0 -129
  370. package/src/components/RouteErrors/index.ts +0 -1
  371. package/src/hooks/useConfirmSwap.ts +0 -303
  372. package/src/store/meta.ts +0 -39
  373. package/src/types/routing.ts +0 -77
  374. package/src/utils/routing.ts +0 -321
@@ -0,0 +1,107 @@
1
+ /* eslint-disable @typescript-eslint/prefer-enum-initializers */
2
+
3
+ import type { PriceImpactWarningLevel } from '@rango-dev/ui';
4
+ import type BigNumber from 'bignumber.js';
5
+ import type { SwapResult } from 'rango-sdk';
6
+
7
+ export enum QuoteErrorType {
8
+ NO_RESULT,
9
+ REQUEST_FAILED,
10
+ REQUEST_CANCELED,
11
+ BRIDGE_LIMIT,
12
+ INSUFFICIENT_SLIPPAGE,
13
+ }
14
+
15
+ export type NoResultError = {
16
+ type: QuoteErrorType.NO_RESULT;
17
+ diagnosisMessage?: string;
18
+ };
19
+
20
+ export type BridgeLimitError = {
21
+ type: QuoteErrorType.BRIDGE_LIMIT;
22
+ swap: SwapResult;
23
+ recommendation: string;
24
+ fromAmountRangeError: string;
25
+ };
26
+
27
+ export type InsufficientSlippageError = {
28
+ type: QuoteErrorType.INSUFFICIENT_SLIPPAGE;
29
+ recommendedSlippages: RecommendedSlippages | null;
30
+ minRequiredSlippage: string | null;
31
+ };
32
+
33
+ export type QuoteRequestFailed = { type: QuoteErrorType.REQUEST_FAILED };
34
+ export type QuoteRequestCanceled = { type: QuoteErrorType.REQUEST_CANCELED };
35
+
36
+ export type QuoteError =
37
+ | NoResultError
38
+ | BridgeLimitError
39
+ | InsufficientSlippageError
40
+ | QuoteRequestFailed
41
+ | QuoteRequestCanceled;
42
+
43
+ export enum QuoteWarningType {
44
+ HIGH_VALUE_LOSS,
45
+ UNKNOWN_PRICE,
46
+ INSUFFICIENT_SLIPPAGE,
47
+ HIGH_SLIPPAGE,
48
+ }
49
+
50
+ export enum QuoteUpdateType {
51
+ QUOTE_UPDATED,
52
+ QUOTE_SWAPPERS_UPDATED,
53
+ QUOTE_COINS_UPDATED,
54
+ QUOTE_AND_OUTPUT_AMOUNT_UPDATED,
55
+ QUOTE_UPDATED_WITH_HIGH_VALUE_LOSS,
56
+ }
57
+
58
+ export type QuoteUpdateWarning =
59
+ | {
60
+ type: QuoteUpdateType.QUOTE_AND_OUTPUT_AMOUNT_UPDATED;
61
+ newOutputAmount: string;
62
+ percentageChange: string;
63
+ }
64
+ | {
65
+ type: Exclude<
66
+ QuoteUpdateType,
67
+ QuoteUpdateType.QUOTE_AND_OUTPUT_AMOUNT_UPDATED
68
+ >;
69
+ };
70
+
71
+ export type RecommendedSlippages = Map<number, string>;
72
+
73
+ export type InsufficientSlippageWarning = {
74
+ type: QuoteWarningType.INSUFFICIENT_SLIPPAGE;
75
+ recommendedSlippages: RecommendedSlippages | null;
76
+ minRequiredSlippage: string | null;
77
+ };
78
+
79
+ export type HighSlippageWarning = {
80
+ type: QuoteWarningType.HIGH_SLIPPAGE;
81
+ slippage: string | null;
82
+ };
83
+
84
+ export type HighValueLossWarning = {
85
+ type: QuoteWarningType.HIGH_VALUE_LOSS;
86
+ warningLevel: PriceImpactWarningLevel;
87
+ inputUsdValue: BigNumber;
88
+ outputUsdValue: BigNumber;
89
+ totalFee: BigNumber;
90
+ priceImpact: number;
91
+ };
92
+
93
+ export type UnknownPriceWarning = {
94
+ type: QuoteWarningType.UNKNOWN_PRICE;
95
+ };
96
+
97
+ export type QuoteWarning =
98
+ | HighValueLossWarning
99
+ | InsufficientSlippageWarning
100
+ | HighSlippageWarning
101
+ | UnknownPriceWarning;
102
+
103
+ export type ConfirmSwapWarnings = {
104
+ quote: QuoteWarning | null;
105
+ quoteUpdate: QuoteUpdateWarning | null;
106
+ balance: { messages: string[] } | null;
107
+ };
package/src/types/swap.ts CHANGED
@@ -5,19 +5,10 @@ export type PendingSwapSettings = Omit<
5
5
  'disabledSwappersIds'
6
6
  >;
7
7
 
8
- export enum ButtonState {
9
- WAITFORCONNECTING = 'waitForConnecting',
10
- SWAP = 'swap',
11
- NEEDTOCONFIRM = 'needToConfirm',
12
- WARNING = 'warning',
13
- }
14
-
15
- export type SwapButtonState = (
16
- | { disabled: true }
17
- | { disabled: false; hasWarning?: boolean }
18
- ) & {
8
+ export type SwapButtonState = {
9
+ disabled: boolean;
19
10
  title: string;
20
- state: ButtonState;
11
+ action: 'connect-wallet' | 'confirm-warning' | 'confirm-swap';
21
12
  };
22
13
 
23
14
  export type ConvertedToken = {
@@ -31,7 +31,7 @@ export const generateRangeColors = (name: string, color: string) => {
31
31
  const NUMBER_OF_COLORS = 10;
32
32
  const HALF_NUMBER_OF_COLORS = 5;
33
33
  const COLOR_SUFFIX = 100;
34
- const AMT = 32;
34
+ const AMT = 25;
35
35
 
36
36
  let colors = { [name]: color };
37
37
  for (let i = 1; i < NUMBER_OF_COLORS; i++) {
@@ -60,6 +60,7 @@ export const generateRangeColors = (name: string, color: string) => {
60
60
  };
61
61
  }
62
62
  }
63
+
63
64
  return colors;
64
65
  };
65
66
  export const generateColors = (
@@ -2,6 +2,7 @@ import { RANGO_PUBLIC_API_KEY } from '../constants';
2
2
 
3
3
  export interface Configs {
4
4
  API_KEY: string;
5
+ BASE_URL?: string;
5
6
  }
6
7
 
7
8
  let configs: Configs = {
@@ -9,7 +10,7 @@ let configs: Configs = {
9
10
  };
10
11
 
11
12
  export function getConfig(name: keyof Configs) {
12
- return configs[name];
13
+ return configs[name] || '';
13
14
  }
14
15
 
15
16
  export function setConfig(name: keyof Configs, value: any) {
package/src/utils/meta.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Asset, BlockchainMeta, Token } from 'rango-sdk';
1
+ import type { Asset, BlockchainMeta, SwapperMeta, Token } from 'rango-sdk';
2
2
 
3
3
  import { tokensAreEqual } from './wallets';
4
4
 
@@ -17,6 +17,13 @@ export function getBlockchainShortNameFor(
17
17
  ?.shortName;
18
18
  }
19
19
 
20
+ export function getSwapperDisplayName(
21
+ swapperId: string,
22
+ swappers: SwapperMeta[]
23
+ ) {
24
+ return swappers.find((swapper) => swapper.id === swapperId)?.swapperGroup;
25
+ }
26
+
20
27
  export function findToken(t: Asset, tokens: Token[]) {
21
28
  return tokens.find((token) => tokensAreEqual(token, t)) ?? null;
22
29
  }
@@ -16,7 +16,7 @@ export const secondsToString = (s: number): string => {
16
16
  };
17
17
 
18
18
  export const numberToString = (
19
- number: BigNumber | string | null | undefined,
19
+ number: BigNumber | string | number | null | undefined,
20
20
  minDecimals: number | null = null,
21
21
  maxDecimals: number | null = null
22
22
  ): string => {
@@ -0,0 +1,338 @@
1
+ /* eslint-disable @typescript-eslint/no-magic-numbers */
2
+ import type { QuoteError, QuoteWarning, Wallet } from '../types';
3
+ import type { PendingSwap } from '@rango-dev/queue-manager-rango-preset';
4
+ import type { PriceImpactWarningLevel } from '@rango-dev/ui';
5
+ import type {
6
+ SimulationAssetAndAmount,
7
+ SimulationValidationStatus,
8
+ } from '@rango-dev/ui/dist/widget/ui/src/types/swaps';
9
+ import type {
10
+ Asset,
11
+ BestRouteResponse,
12
+ BlockchainMeta,
13
+ Token,
14
+ } from 'rango-sdk';
15
+
16
+ import { getLastSuccessfulStep } from '@rango-dev/queue-manager-rango-preset';
17
+ import BigNumber from 'bignumber.js';
18
+
19
+ import { HIGHT_PRICE_IMPACT, LOW_PRICE_IMPACT } from '../constants/routing';
20
+ import { HIGH_SLIPPAGE } from '../constants/swapSettings';
21
+ import { getUsdValue } from '../store/quote';
22
+ import { QuoteErrorType, QuoteWarningType } from '../types';
23
+
24
+ import { areEqual } from './common';
25
+ import { findBlockchain, findToken } from './meta';
26
+ import {
27
+ checkSlippageErrors,
28
+ checkSlippageWarnings,
29
+ getLimitErrorMessage,
30
+ getMinRequiredSlippage,
31
+ getPercentageChange,
32
+ getTotalFeeInUsd,
33
+ hasHighValueLoss,
34
+ hasLimitError,
35
+ hasProperSlippage,
36
+ } from './swap';
37
+
38
+ export function searchParamsToToken(
39
+ tokens: Token[],
40
+ searchParams: string | null,
41
+ chain: BlockchainMeta | null
42
+ ): Token | null {
43
+ if (!chain) {
44
+ return null;
45
+ }
46
+ return (
47
+ tokens.find((token) => {
48
+ const symbolAndAddress = searchParams?.split('--');
49
+ if (symbolAndAddress?.length === 1) {
50
+ return (
51
+ token.symbol === symbolAndAddress[0] &&
52
+ token.address === null &&
53
+ token.blockchain === chain.name
54
+ );
55
+ }
56
+ return (
57
+ token.symbol === symbolAndAddress?.[0] &&
58
+ token.address === symbolAndAddress?.[1] &&
59
+ token.blockchain === chain.name
60
+ );
61
+ }) || null
62
+ );
63
+ }
64
+
65
+ export function getQuoteToTokenUsdPrice(
66
+ quote: BestRouteResponse | null
67
+ ): number | null | undefined {
68
+ return quote?.result?.swaps[quote?.result?.swaps.length - 1].to.usdPrice;
69
+ }
70
+
71
+ export function isNumberOfSwapsChanged(
72
+ quoteA: BestRouteResponse,
73
+ quoteB: BestRouteResponse
74
+ ) {
75
+ const quoteASwaps = quoteA.result?.swaps || [];
76
+ const quoteBSwaps = quoteB.result?.swaps || [];
77
+ return quoteASwaps.length !== quoteBSwaps.length;
78
+ }
79
+
80
+ export function isQuoteSwappersUpdated(
81
+ quoteA: BestRouteResponse,
82
+ quoteB: BestRouteResponse
83
+ ) {
84
+ const quoteASwappers =
85
+ quoteA.result?.swaps.map((swap) => swap.swapperId) || [];
86
+ const quoteBSwappers =
87
+ quoteB.result?.swaps.map((swap) => swap.swapperId) || [];
88
+ return !areEqual(quoteASwappers, quoteBSwappers);
89
+ }
90
+
91
+ export function isQuoteInternalCoinsUpdated(
92
+ quoteA: BestRouteResponse,
93
+ quoteB: BestRouteResponse
94
+ ) {
95
+ const quoteAInternalCoins =
96
+ quoteA.result?.swaps.map((swap) => swap.to.symbol) || [];
97
+ const quoteBInternalCoins =
98
+ quoteB.result?.swaps.map((swap) => swap.to.symbol) || [];
99
+ return !areEqual(quoteAInternalCoins, quoteBInternalCoins);
100
+ }
101
+
102
+ export function isQuoteChanged(
103
+ quoteA: BestRouteResponse,
104
+ quoteB: BestRouteResponse
105
+ ): boolean {
106
+ return (
107
+ isNumberOfSwapsChanged(quoteA, quoteB) ||
108
+ isQuoteSwappersUpdated(quoteA, quoteB) ||
109
+ isQuoteInternalCoinsUpdated(quoteA, quoteB)
110
+ );
111
+ }
112
+
113
+ export function outToRatioHasWarning(
114
+ fromUsdValue: BigNumber | null,
115
+ outToInRatio: BigNumber | 0
116
+ ) {
117
+ return (
118
+ (parseInt(outToInRatio?.toFixed(2) || '0') <= -10 &&
119
+ (fromUsdValue === null || fromUsdValue.gte(new BigNumber(200)))) ||
120
+ (parseInt(outToInRatio?.toFixed(2) || '0') <= -5 &&
121
+ (fromUsdValue === null || fromUsdValue.gte(new BigNumber(1000))))
122
+ );
123
+ }
124
+
125
+ export function getRequiredBalanceOfWallet(
126
+ selectedWallet: Wallet,
127
+ fee: SimulationValidationStatus[] | null
128
+ ): SimulationAssetAndAmount[] | null {
129
+ if (fee === null) {
130
+ return null;
131
+ }
132
+ const relatedFeeStatus = fee
133
+ ?.find((item) => item.blockchain === selectedWallet.chain)
134
+ ?.wallets.find(
135
+ (wallet) =>
136
+ wallet.address?.toLowerCase() === selectedWallet.address.toLowerCase()
137
+ );
138
+ if (!relatedFeeStatus) {
139
+ return null;
140
+ }
141
+ return relatedFeeStatus.requiredAssets;
142
+ }
143
+
144
+ export function getPriceImpactLevel(
145
+ priceImpact: number
146
+ ): PriceImpactWarningLevel {
147
+ let warningLevel: PriceImpactWarningLevel = undefined;
148
+ if (priceImpact <= LOW_PRICE_IMPACT && priceImpact > HIGHT_PRICE_IMPACT) {
149
+ warningLevel = 'low';
150
+ } else if (priceImpact <= HIGHT_PRICE_IMPACT) {
151
+ warningLevel = 'high';
152
+ }
153
+
154
+ return warningLevel;
155
+ }
156
+
157
+ export function findCommonTokens<T extends Asset[], R extends Asset[]>(
158
+ listA: T,
159
+ listB: R
160
+ ) {
161
+ const tokenToString = (token: Asset): string =>
162
+ `${token.symbol}-${token.blockchain}-${token.address ?? ''}`;
163
+
164
+ const set = new Set();
165
+
166
+ listA.forEach((token) => set.add(tokenToString(token)));
167
+
168
+ return listB.filter((token) => set.has(tokenToString(token))) as R;
169
+ }
170
+
171
+ export function createRetryQuote(
172
+ pendingSwap: PendingSwap,
173
+ blockchains: BlockchainMeta[],
174
+ tokens: Token[]
175
+ ): {
176
+ fromBlockchain: BlockchainMeta | null;
177
+ fromToken: Token | null;
178
+ toBlockchain: BlockchainMeta | null;
179
+ toToken: Token | null;
180
+ inputAmount: string;
181
+ } {
182
+ const firstStep = pendingSwap.steps[0];
183
+ const lastStep = pendingSwap.steps[pendingSwap.steps.length - 1];
184
+ const lastSuccessfulStep = getLastSuccessfulStep(pendingSwap.steps);
185
+
186
+ const toToken = {
187
+ blockchain: lastStep.toBlockchain,
188
+ symbol: lastStep.toSymbol,
189
+ address: lastStep.toSymbolAddress,
190
+ };
191
+
192
+ const fromBlockchainMeta = findBlockchain(
193
+ lastSuccessfulStep
194
+ ? lastSuccessfulStep.toBlockchain
195
+ : firstStep.fromBlockchain,
196
+ blockchains
197
+ );
198
+ const toBlockchainMeta = findBlockchain(lastStep.toBlockchain, blockchains);
199
+ const fromTokenMeta = findToken(
200
+ lastSuccessfulStep
201
+ ? {
202
+ blockchain: fromBlockchainMeta?.name ?? '',
203
+ symbol: lastSuccessfulStep.toSymbol,
204
+ address: lastSuccessfulStep.toSymbolAddress,
205
+ }
206
+ : {
207
+ blockchain: fromBlockchainMeta?.name ?? '',
208
+ symbol: firstStep.fromSymbol,
209
+ address: firstStep.fromSymbolAddress,
210
+ },
211
+ tokens
212
+ );
213
+ const toTokenMeta = findToken(toToken, tokens);
214
+ const inputAmount = lastSuccessfulStep
215
+ ? lastSuccessfulStep.outputAmount ?? ''
216
+ : pendingSwap.inputAmount;
217
+
218
+ return {
219
+ fromBlockchain: fromBlockchainMeta,
220
+ fromToken: fromTokenMeta,
221
+ toBlockchain: toBlockchainMeta,
222
+ toToken: toTokenMeta,
223
+ inputAmount,
224
+ };
225
+ }
226
+
227
+ export function generateQuoteWarnings(
228
+ quote: BestRouteResponse,
229
+ params: {
230
+ fromToken: Token;
231
+ toToken: Token;
232
+ tokens: Token[];
233
+ userSlippage: number;
234
+ }
235
+ ): QuoteWarning | null {
236
+ const { fromToken, toToken, tokens, userSlippage } = params;
237
+ const inputUsdValue = getUsdValue(fromToken, quote.requestAmount);
238
+ const outputUsdValue = getUsdValue(toToken, quote.result?.outputAmount ?? '');
239
+
240
+ if (quote.result && inputUsdValue && outputUsdValue) {
241
+ const priceImpact = getPriceImpact(
242
+ inputUsdValue.toString(),
243
+ outputUsdValue.toString()
244
+ );
245
+ const highValueLoss =
246
+ !!priceImpact && hasHighValueLoss(inputUsdValue, priceImpact);
247
+
248
+ if (highValueLoss) {
249
+ const totalFee = getTotalFeeInUsd(quote.result.swaps, tokens);
250
+ const warningLevel = getPriceImpactLevel(priceImpact);
251
+ return {
252
+ type: QuoteWarningType.HIGH_VALUE_LOSS,
253
+ inputUsdValue,
254
+ outputUsdValue,
255
+ priceImpact,
256
+ totalFee,
257
+ warningLevel,
258
+ };
259
+ }
260
+ } else if (quote.result && (!inputUsdValue || !outputUsdValue)) {
261
+ return { type: QuoteWarningType.UNKNOWN_PRICE };
262
+ }
263
+
264
+ const minRequiredSlippage = getMinRequiredSlippage(quote);
265
+ const highSlippage = userSlippage > HIGH_SLIPPAGE;
266
+
267
+ if (!hasProperSlippage(params.userSlippage.toString(), minRequiredSlippage)) {
268
+ return {
269
+ type: QuoteWarningType.INSUFFICIENT_SLIPPAGE,
270
+ recommendedSlippages: checkSlippageWarnings(quote, userSlippage),
271
+ minRequiredSlippage: minRequiredSlippage,
272
+ };
273
+ } else if (
274
+ highSlippage &&
275
+ parseFloat(minRequiredSlippage ?? '0') < userSlippage
276
+ ) {
277
+ return {
278
+ type: QuoteWarningType.HIGH_SLIPPAGE,
279
+ slippage: userSlippage.toString(),
280
+ };
281
+ }
282
+
283
+ return null;
284
+ }
285
+
286
+ export function generateQuoteErrors(
287
+ quote: BestRouteResponse
288
+ ): QuoteError | null {
289
+ if (!quote.result) {
290
+ return {
291
+ type: QuoteErrorType.NO_RESULT,
292
+ diagnosisMessage: quote.diagnosisMessages?.[0],
293
+ };
294
+ }
295
+ const limitError = hasLimitError(quote);
296
+ if (limitError) {
297
+ const { swap, recommendation, fromAmountRangeError } =
298
+ getLimitErrorMessage(quote);
299
+ return {
300
+ type: QuoteErrorType.BRIDGE_LIMIT,
301
+ swap: swap,
302
+ recommendation,
303
+ fromAmountRangeError,
304
+ };
305
+ }
306
+
307
+ const recommendedSlippages = checkSlippageErrors(quote);
308
+
309
+ if (recommendedSlippages) {
310
+ const minRequiredSlippage = getMinRequiredSlippage(quote);
311
+ return {
312
+ type: QuoteErrorType.INSUFFICIENT_SLIPPAGE,
313
+ recommendedSlippages,
314
+ minRequiredSlippage,
315
+ };
316
+ }
317
+
318
+ return null;
319
+ }
320
+
321
+ export function getPriceImpact(
322
+ inputUsdValue: BigNumber | string | null,
323
+ outputUsdValue: BigNumber | string | null
324
+ ): number | null {
325
+ const outputUsdValueIsInvalid =
326
+ typeof outputUsdValue === 'string'
327
+ ? parseFloat(outputUsdValue) <= 0
328
+ : !outputUsdValue?.gt(0);
329
+ const percentageChange =
330
+ !inputUsdValue || !outputUsdValue || outputUsdValueIsInvalid
331
+ ? null
332
+ : getPercentageChange(
333
+ inputUsdValue.toString(),
334
+ outputUsdValue.toString()
335
+ );
336
+
337
+ return percentageChange && percentageChange < 0 ? percentageChange : null;
338
+ }
@@ -1,4 +1,5 @@
1
- import { useMetaStore } from '../store/meta';
1
+ import type { SwapperMeta } from 'rango-sdk';
2
+
2
3
  import { useSettingsStore } from '../store/settings';
3
4
 
4
5
  import { removeDuplicateFrom } from './common';
@@ -14,11 +15,11 @@ export type UniqueSwappersGroupType = {
14
15
  };
15
16
 
16
17
  export function getUniqueSwappersGroups(
17
- supportedSwappers?: string[]
18
+ swappers: SwapperMeta[]
18
19
  ): UniqueSwappersGroupType[] {
19
- const swappers = useMetaStore.use.meta().swappers;
20
20
  const disabledLiquiditySources =
21
21
  useSettingsStore.use.disabledLiquiditySources();
22
+ const supportedSwappers = swappers.map((swapper) => swapper.swapperGroup);
22
23
 
23
24
  const uniqueSupportedSwappersGroups: Array<UniqueSwappersGroupType> = [];
24
25
 
@@ -57,14 +58,14 @@ export function getUniqueSwappersGroups(
57
58
  }
58
59
 
59
60
  export function sortLiquiditySourcesByGroupTitle(
60
- a: UniqueSwappersGroupType,
61
- b: UniqueSwappersGroupType
61
+ a: SwapperMeta,
62
+ b: SwapperMeta
62
63
  ) {
63
- if (a.groupTitle < b.groupTitle) {
64
+ if (a.swapperGroup < b.swapperGroup) {
64
65
  return -1;
65
66
  }
66
67
 
67
- if (a.groupTitle > b.groupTitle) {
68
+ if (a.swapperGroup > b.swapperGroup) {
68
69
  return 1;
69
70
  }
70
71