@rango-dev/widget-embedded 0.17.1-next.8 → 0.18.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 (361) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/dist/QueueManager.d.ts +3 -1
  3. package/dist/QueueManager.d.ts.map +1 -1
  4. package/dist/components/AppRouter.d.ts.map +1 -1
  5. package/dist/components/AppRoutes.d.ts.map +1 -1
  6. package/dist/components/BlockchainsSection/BlockchainsSection.d.ts.map +1 -1
  7. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts +1 -1
  8. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts.map +1 -1
  9. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +690 -61
  10. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts.map +1 -1
  11. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
  12. package/dist/components/HeaderButtons/HomeButtons.d.ts.map +1 -1
  13. package/dist/components/Layout/Layout.d.ts.map +1 -1
  14. package/dist/components/Layout/Layout.styles.d.ts.map +1 -1
  15. package/dist/components/Layout/Layout.types.d.ts +2 -2
  16. package/dist/components/Layout/Layout.types.d.ts.map +1 -1
  17. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.d.ts.map +1 -1
  18. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts +1727 -0
  19. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts.map +1 -1
  20. package/dist/components/NoResult/NoResult.d.ts.map +1 -1
  21. package/dist/components/NotificationContent/NotificationContent.d.ts.map +1 -1
  22. package/dist/components/Quote/Quote.d.ts.map +1 -1
  23. package/dist/components/Quote/Quote.styles.d.ts +793 -5
  24. package/dist/components/Quote/Quote.styles.d.ts.map +1 -1
  25. package/dist/components/Quote/Quote.types.d.ts +0 -1
  26. package/dist/components/Quote/Quote.types.d.ts.map +1 -1
  27. package/dist/components/Quote/QuoteSummary.styles.d.ts +157 -0
  28. package/dist/components/Quote/QuoteSummary.styles.d.ts.map +1 -1
  29. package/dist/components/Quote/index.d.ts +0 -1
  30. package/dist/components/Quote/index.d.ts.map +1 -1
  31. package/dist/components/QuoteSkeleton/QuoteSkeleton.d.ts.map +1 -0
  32. package/dist/components/{Quote → QuoteSkeleton}/QuoteSkeleton.styles.d.ts +314 -0
  33. package/dist/components/QuoteSkeleton/QuoteSkeleton.styles.d.ts.map +1 -0
  34. package/dist/components/QuoteSkeleton/QuoteSkeleton.types.d.ts.map +1 -0
  35. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.d.ts +4 -0
  36. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.d.ts.map +1 -0
  37. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.styles.d.ts +1571 -0
  38. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.styles.d.ts.map +1 -0
  39. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.types.d.ts +6 -0
  40. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.types.d.ts.map +1 -0
  41. package/dist/components/QuoteSkeleton/StepSkeleton.d.ts +4 -0
  42. package/dist/components/QuoteSkeleton/StepSkeleton.d.ts.map +1 -0
  43. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts +786 -0
  44. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts.map +1 -0
  45. package/dist/components/QuoteSkeleton/StepSkeleton.types.d.ts +4 -0
  46. package/dist/components/QuoteSkeleton/StepSkeleton.types.d.ts.map +1 -0
  47. package/dist/components/QuoteSkeleton/index.d.ts +4 -0
  48. package/dist/components/QuoteSkeleton/index.d.ts.map +1 -0
  49. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts.map +1 -1
  50. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts.map +1 -1
  51. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts.map +1 -1
  52. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts +1 -0
  53. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts.map +1 -1
  54. package/dist/components/Slippage/Slippage.d.ts.map +1 -1
  55. package/dist/components/Slippage/Slippage.styles.d.ts +158 -0
  56. package/dist/components/Slippage/Slippage.styles.d.ts.map +1 -1
  57. package/dist/components/SwapDetails/SwapDetails.Placeholder.d.ts.map +1 -1
  58. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  59. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts +1 -1
  60. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts.map +1 -1
  61. package/dist/components/SwapDetails/SwapDetails.styles.d.ts +628 -0
  62. package/dist/components/SwapDetails/SwapDetails.styles.d.ts.map +1 -1
  63. package/dist/components/SwapDetailsModal/SwapDetailsCompleteModal.d.ts.map +1 -1
  64. package/dist/components/SwapDetailsModal/SwapDetailsModal.WalletState.d.ts.map +1 -1
  65. package/dist/components/SwapDetailsModal/SwapDetailsModal.helpers.d.ts +1 -1
  66. package/dist/components/SwapDetailsModal/SwapDetailsModal.helpers.d.ts.map +1 -1
  67. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts +1 -1
  68. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.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 +157 -0
  71. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts.map +1 -1
  72. package/dist/components/TokenList/TokenList.d.ts.map +1 -1
  73. package/dist/components/TokenList/TokenList.helpers.d.ts +2 -2
  74. package/dist/components/TokenList/TokenList.helpers.d.ts.map +1 -1
  75. package/dist/components/TokenList/TokenList.styles.d.ts +1100 -1
  76. package/dist/components/TokenList/TokenList.styles.d.ts.map +1 -1
  77. package/dist/components/TokenList/TokenList.types.d.ts +4 -9
  78. package/dist/components/TokenList/TokenList.types.d.ts.map +1 -1
  79. package/dist/components/TokenList/index.d.ts +0 -1
  80. package/dist/components/TokenList/index.d.ts.map +1 -1
  81. package/dist/components/UpdateUrl.d.ts.map +1 -1
  82. package/dist/constants/errors.d.ts.map +1 -1
  83. package/dist/constants/index.d.ts +1 -0
  84. package/dist/constants/index.d.ts.map +1 -1
  85. package/dist/constants/navigationRoutes.d.ts +1 -2
  86. package/dist/constants/navigationRoutes.d.ts.map +1 -1
  87. package/dist/constants/searchParams.d.ts +2 -1
  88. package/dist/constants/searchParams.d.ts.map +1 -1
  89. package/dist/containers/App/App.d.ts +3 -0
  90. package/dist/containers/App/App.d.ts.map +1 -0
  91. package/dist/containers/App/App.styles.d.ts +158 -0
  92. package/dist/containers/App/App.styles.d.ts.map +1 -0
  93. package/dist/containers/App/index.d.ts +2 -0
  94. package/dist/containers/App/index.d.ts.map +1 -0
  95. package/dist/containers/QuoteInfo/QuoteInfo.d.ts.map +1 -1
  96. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts +316 -0
  97. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts.map +1 -1
  98. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts +3 -0
  99. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts.map +1 -1
  100. package/dist/containers/Wallets/Wallets.d.ts +6 -0
  101. package/dist/containers/Wallets/Wallets.d.ts.map +1 -0
  102. package/dist/containers/Wallets/Wallets.types.d.ts +11 -0
  103. package/dist/containers/Wallets/Wallets.types.d.ts.map +1 -0
  104. package/dist/containers/Wallets/index.d.ts +2 -0
  105. package/dist/containers/Wallets/index.d.ts.map +1 -0
  106. package/dist/containers/Widget/Widget.d.ts +5 -0
  107. package/dist/containers/Widget/Widget.d.ts.map +1 -0
  108. package/dist/containers/Widget/Widget.types.d.ts +5 -0
  109. package/dist/containers/Widget/Widget.types.d.ts.map +1 -0
  110. package/dist/containers/Widget/index.d.ts +3 -0
  111. package/dist/containers/Widget/index.d.ts.map +1 -0
  112. package/dist/containers/WidgetInfo/WidgetInfo.d.ts +6 -0
  113. package/dist/containers/WidgetInfo/WidgetInfo.d.ts.map +1 -0
  114. package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts +20 -0
  115. package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts.map +1 -0
  116. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts +21 -0
  117. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts.map +1 -0
  118. package/dist/containers/WidgetInfo/index.d.ts +2 -0
  119. package/dist/containers/WidgetInfo/index.d.ts.map +1 -0
  120. package/dist/containers/WidgetProvider/WidgetProvider.d.ts +5 -0
  121. package/dist/containers/WidgetProvider/WidgetProvider.d.ts.map +1 -0
  122. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts +7 -0
  123. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts.map +1 -0
  124. package/dist/containers/WidgetProvider/index.d.ts +2 -0
  125. package/dist/containers/WidgetProvider/index.d.ts.map +1 -0
  126. package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts.map +1 -1
  127. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts +6 -3
  128. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts.map +1 -1
  129. package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts +1 -1
  130. package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts.map +1 -1
  131. package/dist/hooks/useForceAutoConnect.d.ts +2 -0
  132. package/dist/hooks/useForceAutoConnect.d.ts.map +1 -0
  133. package/dist/hooks/useLanguage.d.ts +1 -1
  134. package/dist/hooks/useLanguage.d.ts.map +1 -1
  135. package/dist/hooks/useNavigateBack.d.ts +1 -3
  136. package/dist/hooks/useNavigateBack.d.ts.map +1 -1
  137. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.d.ts +1 -1
  138. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts +2 -2
  139. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts.map +1 -1
  140. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts +3 -5
  141. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts.map +1 -1
  142. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts +1 -0
  143. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts.map +1 -1
  144. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts +5 -1
  145. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts.map +1 -1
  146. package/dist/hooks/useSwapInput.d.ts.map +1 -1
  147. package/dist/hooks/useSyncStoresWithConfig.d.ts.map +1 -1
  148. package/dist/hooks/useTheme.d.ts +1 -1
  149. package/dist/hooks/useTheme.d.ts.map +1 -1
  150. package/dist/index.d.ts +20 -8
  151. package/dist/index.d.ts.map +1 -1
  152. package/dist/index.js +1 -1
  153. package/dist/index.js.map +4 -4
  154. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  155. package/dist/pages/HistoryPage.d.ts.map +1 -1
  156. package/dist/pages/Home.d.ts.map +1 -1
  157. package/dist/pages/LanguagePage.d.ts.map +1 -1
  158. package/dist/pages/LiquiditySourcePage.d.ts.map +1 -1
  159. package/dist/pages/SelectBlockchainPage.d.ts.map +1 -1
  160. package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
  161. package/dist/pages/SettingsPage.d.ts.map +1 -1
  162. package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
  163. package/dist/pages/ThemePage.d.ts.map +1 -1
  164. package/dist/pages/WalletsPage.d.ts.map +1 -1
  165. package/dist/store/AppStore.d.ts +37 -1
  166. package/dist/store/AppStore.d.ts.map +1 -1
  167. package/dist/store/app.d.ts +39 -2
  168. package/dist/store/app.d.ts.map +1 -1
  169. package/dist/store/notification.d.ts +4 -3
  170. package/dist/store/notification.d.ts.map +1 -1
  171. package/dist/store/quote.d.ts +9 -9
  172. package/dist/store/quote.d.ts.map +1 -1
  173. package/dist/store/slices/config.d.ts.map +1 -1
  174. package/dist/store/slices/data.d.ts +2 -2
  175. package/dist/store/slices/data.d.ts.map +1 -1
  176. package/dist/store/slices/settings.d.ts +39 -0
  177. package/dist/store/slices/settings.d.ts.map +1 -0
  178. package/dist/store/ui.d.ts +2 -1
  179. package/dist/store/ui.d.ts.map +1 -1
  180. package/dist/store/wallets.d.ts +9 -5
  181. package/dist/store/wallets.d.ts.map +1 -1
  182. package/dist/types/config.d.ts +36 -3
  183. package/dist/types/config.d.ts.map +1 -1
  184. package/dist/types/swap.d.ts +4 -14
  185. package/dist/types/swap.d.ts.map +1 -1
  186. package/dist/types/wallets.d.ts +15 -1
  187. package/dist/types/wallets.d.ts.map +1 -1
  188. package/dist/utils/colors.d.ts.map +1 -1
  189. package/dist/utils/configs.d.ts +1 -0
  190. package/dist/utils/configs.d.ts.map +1 -1
  191. package/dist/utils/meta.d.ts +2 -1
  192. package/dist/utils/meta.d.ts.map +1 -1
  193. package/dist/utils/providers.d.ts +2 -2
  194. package/dist/utils/providers.d.ts.map +1 -1
  195. package/dist/utils/queue.d.ts +2 -2
  196. package/dist/utils/queue.d.ts.map +1 -1
  197. package/dist/utils/quote.d.ts +1 -1
  198. package/dist/utils/quote.d.ts.map +1 -1
  199. package/dist/utils/settings.d.ts +4 -1
  200. package/dist/utils/settings.d.ts.map +1 -1
  201. package/dist/utils/swap.d.ts +13 -5
  202. package/dist/utils/swap.d.ts.map +1 -1
  203. package/dist/utils/time.d.ts +1 -1
  204. package/dist/utils/time.d.ts.map +1 -1
  205. package/dist/utils/wallets.d.ts +7 -8
  206. package/dist/utils/wallets.d.ts.map +1 -1
  207. package/package.json +12 -10
  208. package/src/QueueManager.tsx +4 -3
  209. package/src/components/AppRouter.tsx +5 -27
  210. package/src/components/AppRoutes.tsx +54 -33
  211. package/src/components/BlockchainList/BlockchainList.styles.ts +2 -2
  212. package/src/components/BlockchainsSection/BlockchainsSection.styles.ts +1 -1
  213. package/src/components/BlockchainsSection/BlockchainsSection.tsx +19 -10
  214. package/src/components/ConfirmWalletsModal/ConfirmWallets.styles.ts +29 -10
  215. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +15 -7
  216. package/src/components/ConfirmWalletsModal/WalletList.tsx +3 -3
  217. package/src/components/HeaderButtons/HomeButtons.tsx +28 -18
  218. package/src/components/Layout/Layout.styles.ts +2 -0
  219. package/src/components/Layout/Layout.tsx +20 -7
  220. package/src/components/Layout/Layout.types.ts +2 -2
  221. package/src/components/LoadingSwapDetails/LoadingSwapDetails.styles.ts +65 -61
  222. package/src/components/LoadingSwapDetails/LoadingSwapDetails.tsx +28 -34
  223. package/src/components/NoResult/NoResult.helpers.ts +12 -12
  224. package/src/components/NoResult/NoResult.tsx +2 -5
  225. package/src/components/NotificationContent/NotificationContent.tsx +2 -1
  226. package/src/components/Quote/Quote.styles.ts +49 -12
  227. package/src/components/Quote/Quote.tsx +107 -38
  228. package/src/components/Quote/Quote.types.ts +0 -1
  229. package/src/components/Quote/QuoteSummary.styles.ts +9 -8
  230. package/src/components/Quote/QuoteSummary.tsx +2 -2
  231. package/src/components/Quote/index.ts +0 -1
  232. package/src/components/QuoteSkeleton/QuoteSkeleton.styles.ts +42 -0
  233. package/src/components/QuoteSkeleton/QuoteSkeleton.tsx +30 -0
  234. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.styles.ts +57 -0
  235. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.tsx +76 -0
  236. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.types.ts +6 -0
  237. package/src/components/QuoteSkeleton/StepSkeleton.styles.ts +33 -0
  238. package/src/components/QuoteSkeleton/StepSkeleton.tsx +44 -0
  239. package/src/components/QuoteSkeleton/StepSkeleton.types.ts +1 -0
  240. package/src/components/QuoteSkeleton/index.ts +3 -0
  241. package/src/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.tsx +1 -1
  242. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.ts +11 -4
  243. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.ts +8 -1
  244. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.tsx +13 -13
  245. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.ts +1 -0
  246. package/src/components/QuoteWarningsAndErrors/SlippageWariningModal.tsx +3 -3
  247. package/src/components/Slippage/Slippage.styles.ts +15 -5
  248. package/src/components/Slippage/Slippage.tsx +11 -10
  249. package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +5 -8
  250. package/src/components/SwapDetails/SwapDetails.helpers.tsx +1 -1
  251. package/src/components/SwapDetails/SwapDetails.styles.ts +36 -33
  252. package/src/components/SwapDetails/SwapDetails.tsx +28 -39
  253. package/src/components/SwapDetailsAlerts/SwapDetailsAlerts.Warning.tsx +1 -1
  254. package/src/components/SwapDetailsModal/SwapDetailsCompleteModal.tsx +4 -3
  255. package/src/components/SwapDetailsModal/SwapDetailsModal.Cancel.tsx +2 -2
  256. package/src/components/SwapDetailsModal/SwapDetailsModal.WalletState.tsx +14 -8
  257. package/src/components/SwapDetailsModal/SwapDetailsModal.helpers.tsx +1 -1
  258. package/src/components/SwapDetailsModal/SwapDetailsModal.tsx +1 -1
  259. package/src/components/SwapDetailsModal/SwapDetailsModal.types.ts +1 -1
  260. package/src/components/SwapsGroup/SwapsGroup.styles.ts +10 -1
  261. package/src/components/SwapsGroup/SwapsGroup.tsx +3 -5
  262. package/src/components/TokenList/TokenList.helpers.ts +2 -2
  263. package/src/components/TokenList/TokenList.styles.ts +74 -38
  264. package/src/components/TokenList/TokenList.tsx +30 -20
  265. package/src/components/TokenList/TokenList.types.ts +4 -10
  266. package/src/components/TokenList/index.ts +0 -1
  267. package/src/components/UpdateUrl.tsx +4 -5
  268. package/src/constants/errors.ts +9 -5
  269. package/src/constants/index.ts +1 -0
  270. package/src/constants/navigationRoutes.ts +7 -8
  271. package/src/constants/searchParams.ts +1 -0
  272. package/src/containers/App/App.styles.ts +18 -0
  273. package/src/containers/App/App.tsx +52 -0
  274. package/src/containers/App/index.ts +1 -0
  275. package/src/containers/QuoteInfo/QuoteInfo.styles.ts +17 -1
  276. package/src/containers/QuoteInfo/QuoteInfo.tsx +46 -44
  277. package/src/containers/QuoteInfo/QuoteInfo.types.ts +3 -0
  278. package/src/{Wallets.tsx → containers/Wallets/Wallets.tsx} +25 -31
  279. package/src/containers/Wallets/Wallets.types.ts +12 -0
  280. package/src/containers/Wallets/index.ts +1 -0
  281. package/src/containers/Widget/Widget.tsx +19 -0
  282. package/src/containers/Widget/Widget.types.ts +5 -0
  283. package/src/containers/Widget/index.ts +2 -0
  284. package/src/containers/WidgetInfo/WidgetInfo.helpers.ts +64 -0
  285. package/src/containers/WidgetInfo/WidgetInfo.tsx +62 -0
  286. package/src/containers/WidgetInfo/WidgetInfo.types.ts +21 -0
  287. package/src/containers/WidgetInfo/index.ts +1 -0
  288. package/src/containers/WidgetProvider/WidgetProvider.tsx +28 -0
  289. package/src/containers/WidgetProvider/WidgetProvider.types.ts +7 -0
  290. package/src/containers/WidgetProvider/index.ts +1 -0
  291. package/src/hooks/useConfirmSwap/useConfirmSwap.helpers.ts +15 -11
  292. package/src/hooks/useConfirmSwap/useConfirmSwap.ts +21 -20
  293. package/src/hooks/useConfirmSwap/useConfirmSwap.types.ts +1 -1
  294. package/src/hooks/useForceAutoConnect.ts +27 -0
  295. package/src/hooks/useLanguage.ts +4 -5
  296. package/src/hooks/useNavigateBack.ts +3 -52
  297. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.ts +1 -1
  298. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.ts +37 -7
  299. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.ts +60 -0
  300. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.test.ts +78 -3
  301. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.ts +15 -6
  302. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.ts +6 -1
  303. package/src/hooks/useSwapInput.ts +86 -28
  304. package/src/hooks/useSyncStoresWithConfig.ts +18 -5
  305. package/src/hooks/useTheme.ts +4 -5
  306. package/src/index.ts +53 -5
  307. package/src/pages/ConfirmSwapPage.tsx +61 -33
  308. package/src/pages/HistoryPage.tsx +2 -7
  309. package/src/pages/Home.tsx +55 -81
  310. package/src/pages/LanguagePage.tsx +0 -5
  311. package/src/pages/LiquiditySourcePage.tsx +3 -7
  312. package/src/pages/SelectBlockchainPage.tsx +26 -18
  313. package/src/pages/SelectSwapItemsPage.tsx +13 -26
  314. package/src/pages/SettingsPage.tsx +26 -17
  315. package/src/pages/SwapDetailsPage.tsx +3 -4
  316. package/src/pages/ThemePage.tsx +2 -7
  317. package/src/pages/WalletsPage.tsx +5 -8
  318. package/src/services/httpService.ts +1 -1
  319. package/src/store/AppStore.tsx +7 -1
  320. package/src/store/app.ts +31 -5
  321. package/src/store/quote.ts +3 -4
  322. package/src/store/slices/config.ts +1 -0
  323. package/src/store/slices/data.ts +10 -6
  324. package/src/store/slices/settings.ts +168 -0
  325. package/src/store/wallets.ts +57 -29
  326. package/src/types/config.ts +48 -3
  327. package/src/types/swap.ts +4 -13
  328. package/src/types/wallets.ts +18 -1
  329. package/src/utils/colors.ts +2 -1
  330. package/src/utils/configs.ts +2 -1
  331. package/src/utils/date.ts +1 -1
  332. package/src/utils/meta.ts +8 -1
  333. package/src/utils/providers.ts +8 -5
  334. package/src/utils/queue.ts +2 -2
  335. package/src/utils/quote.ts +7 -7
  336. package/src/utils/settings.ts +11 -5
  337. package/src/utils/swap.ts +46 -40
  338. package/src/utils/time.ts +1 -1
  339. package/src/utils/wallets.ts +127 -144
  340. package/dist/Wallets.d.ts +0 -18
  341. package/dist/Wallets.d.ts.map +0 -1
  342. package/dist/Widget.d.ts +0 -9
  343. package/dist/Widget.d.ts.map +0 -1
  344. package/dist/components/LoadingSwapDetails/LoadingSwapDetailStep.d.ts +0 -4
  345. package/dist/components/LoadingSwapDetails/LoadingSwapDetailStep.d.ts.map +0 -1
  346. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.types.d.ts +0 -4
  347. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.types.d.ts.map +0 -1
  348. package/dist/components/Quote/QuoteSkeleton.d.ts.map +0 -1
  349. package/dist/components/Quote/QuoteSkeleton.styles.d.ts.map +0 -1
  350. package/dist/components/Quote/QuoteSkeleton.types.d.ts.map +0 -1
  351. package/dist/store/settings.d.ts +0 -82
  352. package/dist/store/settings.d.ts.map +0 -1
  353. package/src/Widget.tsx +0 -106
  354. package/src/components/LoadingSwapDetails/LoadingSwapDetailStep.tsx +0 -41
  355. package/src/components/LoadingSwapDetails/LoadingSwapDetails.types.ts +0 -3
  356. package/src/components/Quote/QuoteSkeleton.styles.ts +0 -110
  357. package/src/components/Quote/QuoteSkeleton.tsx +0 -108
  358. package/src/store/settings.ts +0 -161
  359. /package/dist/components/{Quote → QuoteSkeleton}/QuoteSkeleton.d.ts +0 -0
  360. /package/dist/components/{Quote → QuoteSkeleton}/QuoteSkeleton.types.d.ts +0 -0
  361. /package/src/components/{Quote → QuoteSkeleton}/QuoteSkeleton.types.ts +0 -0
@@ -0,0 +1,168 @@
1
+ import type { ConfigSlice } from './config';
2
+ import type { WidgetConfig } from '../../types';
3
+ import type { SwapperMeta } from 'rango-sdk';
4
+ import type { StateCreator } from 'zustand';
5
+
6
+ import { type Language } from '@rango-dev/ui';
7
+
8
+ import { BLOCKCHAIN_LIST_SIZE } from '../../constants/configs';
9
+ import { DEFAULT_LANGUAGE } from '../../constants/languages';
10
+ import { DEFAULT_SLIPPAGE } from '../../constants/swapSettings';
11
+ import { removeDuplicateFrom } from '../../utils/common';
12
+ import { isFeatureHidden } from '../../utils/settings';
13
+
14
+ export type ThemeMode = 'auto' | 'dark' | 'light';
15
+
16
+ export interface SettingsSlice {
17
+ theme: ThemeMode;
18
+ language: Language;
19
+ disabledLiquiditySources: string[];
20
+ /** Keeping a history of blockchains that user has selected (in Swap process) */
21
+ preferredBlockchains: string[];
22
+ slippage: number;
23
+ customSlippage: number | null;
24
+ infiniteApprove: boolean;
25
+ affiliateRef: string | null;
26
+ affiliatePercent: number | null;
27
+ affiliateWallets: { [key: string]: string } | null;
28
+
29
+ setSlippage: (slippage: number) => void;
30
+ setCustomSlippage: (customSlippage: number | null) => void;
31
+ toggleInfiniteApprove: () => void;
32
+ toggleLiquiditySource: (name: string) => void;
33
+ setTheme: (theme: ThemeMode) => void;
34
+ setLanguage: (language: Language) => void;
35
+ toggleAllLiquiditySources: (
36
+ swappers: SwapperMeta[],
37
+ shouldReset?: boolean
38
+ ) => void;
39
+ setAffiliateRef: (affiliateRef: string | null) => void;
40
+ setAffiliatePercent: (affiliatePercent: number | null) => void;
41
+ setAffiliateWallets: (
42
+ affiliateWallets: { [key: string]: string } | null
43
+ ) => void;
44
+ addPreferredBlockchain: (blockchain: string) => void;
45
+ updateSettings: (config: WidgetConfig) => void;
46
+ }
47
+
48
+ export const createSettingsSlice: StateCreator<
49
+ SettingsSlice & ConfigSlice,
50
+ [],
51
+ [],
52
+ SettingsSlice
53
+ > = (set, get) => ({
54
+ disabledLiquiditySources: [],
55
+ theme: 'auto',
56
+ language: DEFAULT_LANGUAGE,
57
+ preferredBlockchains: [],
58
+ slippage: DEFAULT_SLIPPAGE,
59
+ customSlippage: null,
60
+ infiniteApprove: false,
61
+ affiliateRef: null,
62
+ affiliatePercent: null,
63
+ affiliateWallets: null,
64
+
65
+ addPreferredBlockchain: (blockchain) => {
66
+ const currentPreferredBlockchains = get().preferredBlockchains;
67
+
68
+ const noNeedToDoAnything = currentPreferredBlockchains.find(
69
+ (preferredBlockchain, index) => {
70
+ const isSameBlockchain = preferredBlockchain === blockchain;
71
+ const isInVisibleList = index <= BLOCKCHAIN_LIST_SIZE - 1;
72
+
73
+ return isSameBlockchain && isInVisibleList;
74
+ }
75
+ );
76
+
77
+ if (noNeedToDoAnything) {
78
+ return;
79
+ }
80
+
81
+ const nextPreferredBlockchains: string[] =
82
+ currentPreferredBlockchains.filter((preferredBlockchain) => {
83
+ const isSameBlockchain = preferredBlockchain === blockchain;
84
+
85
+ return !isSameBlockchain;
86
+ });
87
+
88
+ set(() => ({
89
+ preferredBlockchains: [blockchain, ...nextPreferredBlockchains],
90
+ }));
91
+ },
92
+ setSlippage: (slippage) =>
93
+ set(() => ({
94
+ slippage: slippage,
95
+ })),
96
+ setCustomSlippage: (customSlippage) =>
97
+ set(() => ({
98
+ customSlippage: customSlippage,
99
+ })),
100
+ setAffiliateRef: (affiliateRef) =>
101
+ set(() => ({
102
+ affiliateRef,
103
+ })),
104
+ setAffiliatePercent: (affiliatePercent) =>
105
+ set(() => ({
106
+ affiliatePercent,
107
+ })),
108
+
109
+ setAffiliateWallets: (affiliateWallets) =>
110
+ set(() => ({
111
+ affiliateWallets,
112
+ })),
113
+ toggleAllLiquiditySources: (swappers, shouldReset) =>
114
+ set((state) => {
115
+ if (shouldReset) {
116
+ return { disabledLiquiditySources: [] };
117
+ }
118
+ const swappersGroup = removeDuplicateFrom(
119
+ swappers.map((swapper) => swapper.swapperGroup)
120
+ );
121
+
122
+ if (swappersGroup.length === state.disabledLiquiditySources.length) {
123
+ return { disabledLiquiditySources: [] };
124
+ }
125
+
126
+ return {
127
+ disabledLiquiditySources: swappersGroup,
128
+ };
129
+ }),
130
+ toggleInfiniteApprove: () =>
131
+ set((state) => ({
132
+ infiniteApprove: !state.infiniteApprove,
133
+ })),
134
+ toggleLiquiditySource: (name) =>
135
+ set((state) => {
136
+ if (state.disabledLiquiditySources.includes(name)) {
137
+ return {
138
+ disabledLiquiditySources: state.disabledLiquiditySources.filter(
139
+ (liquiditySource) => liquiditySource != name
140
+ ),
141
+ };
142
+ }
143
+ return {
144
+ disabledLiquiditySources: state.disabledLiquiditySources.concat(name),
145
+ };
146
+ }),
147
+ setTheme: (theme) =>
148
+ set(() => ({
149
+ theme,
150
+ })),
151
+ setLanguage: (language) =>
152
+ set(() => ({
153
+ language,
154
+ })),
155
+ updateSettings: (nextConfig: WidgetConfig) => {
156
+ const { features } = nextConfig;
157
+
158
+ const isThemeHidden = isFeatureHidden('theme', features);
159
+ const isLanguageHidden = isFeatureHidden('language', features);
160
+ const isLiquidityHidden = isFeatureHidden('liquiditySource', features);
161
+
162
+ set({
163
+ ...(isThemeHidden && { theme: 'auto' }),
164
+ ...(isLanguageHidden && { language: DEFAULT_LANGUAGE }),
165
+ ...(isLiquidityHidden && { disabledLiquiditySources: [] }),
166
+ });
167
+ },
168
+ });
@@ -1,4 +1,4 @@
1
- import type { Wallet } from '../types';
1
+ import type { Balance, TokensBalance, Wallet } from '../types';
2
2
  import type { WalletType } from '@rango-dev/wallets-shared';
3
3
  import type { Token } from 'rango-sdk';
4
4
 
@@ -7,8 +7,10 @@ import { subscribeWithSelector } from 'zustand/middleware';
7
7
 
8
8
  import { httpService } from '../services/httpService';
9
9
  import {
10
+ createTokenHash,
10
11
  isAccountAndWalletMatched,
11
12
  makeBalanceFor,
13
+ makeTokensBalance,
12
14
  resetConnectedWalletState,
13
15
  } from '../utils/wallets';
14
16
 
@@ -33,9 +35,9 @@ export interface ConnectedWallet extends Wallet {
33
35
  loading: boolean;
34
36
  error: boolean;
35
37
  }
36
-
37
38
  interface WalletsStore {
38
39
  connectedWallets: ConnectedWallet[];
40
+ balances: TokensBalance;
39
41
  customDestination: string;
40
42
  loading: boolean;
41
43
  connectWallet: (accounts: Wallet[], tokens: Token[]) => void;
@@ -47,12 +49,14 @@ interface WalletsStore {
47
49
  tokens: Token[],
48
50
  shouldRetry?: boolean
49
51
  ) => void;
52
+ getBalanceFor: (token: Token) => Balance | null;
50
53
  }
51
54
 
52
55
  export const useWalletsStore = createSelectors(
53
56
  create<WalletsStore>()(
54
57
  subscribeWithSelector((set, get) => ({
55
58
  connectedWallets: [],
59
+ balances: {},
56
60
  customDestination: '',
57
61
  loading: false,
58
62
  connectWallet: (accounts, tokens) => {
@@ -92,21 +96,27 @@ export const useWalletsStore = createSelectors(
92
96
  connectedWallet.walletType !== walletType
93
97
  )
94
98
  .map((selectedWallet) => selectedWallet.chain);
99
+
100
+ const connectedWallets = state.connectedWallets
101
+ .filter(
102
+ (connectedWallet) => connectedWallet.walletType !== walletType
103
+ )
104
+ .map((connectedWallet) => {
105
+ const anyWalletSelectedForBlockchain = selectedWallets.includes(
106
+ connectedWallet.chain
107
+ );
108
+ if (anyWalletSelectedForBlockchain) {
109
+ return connectedWallet;
110
+ }
111
+ selectedWallets.push(connectedWallet.chain);
112
+ return { ...connectedWallet, selected: true };
113
+ });
114
+
115
+ const balances = makeTokensBalance(connectedWallets);
116
+
95
117
  return {
96
- connectedWallets: state.connectedWallets
97
- .filter(
98
- (connectedWallet) => connectedWallet.walletType !== walletType
99
- )
100
- .map((connectedWallet) => {
101
- const anyWalletSelectedForBlockchain = selectedWallets.includes(
102
- connectedWallet.chain
103
- );
104
- if (anyWalletSelectedForBlockchain) {
105
- return connectedWallet;
106
- }
107
- selectedWallets.push(connectedWallet.chain);
108
- return { ...connectedWallet, selected: true };
109
- }),
118
+ balances,
119
+ connectedWallets,
110
120
  };
111
121
  });
112
122
  },
@@ -159,9 +169,8 @@ export const useWalletsStore = createSelectors(
159
169
  const response = await httpService().getWalletsDetails(data);
160
170
  const retrievedBalance = response.wallets;
161
171
  if (retrievedBalance) {
162
- set((state) => ({
163
- loading: false,
164
- connectedWallets: state.connectedWallets.map(
172
+ set((state) => {
173
+ const connectedWallets = state.connectedWallets.map(
165
174
  (connectedWallet) => {
166
175
  const matchedAccount = accounts.find((account) =>
167
176
  isAccountAndWalletMatched(account, connectedWallet)
@@ -186,30 +195,49 @@ export const useWalletsStore = createSelectors(
186
195
  retrievedBalanceAccount,
187
196
  tokens
188
197
  ),
198
+ loading: false,
189
199
  }
190
200
  : connectedWallet;
191
201
  }
192
- ),
193
- }));
202
+ );
203
+
204
+ const balances = makeTokensBalance(connectedWallets);
205
+
206
+ return {
207
+ loading: false,
208
+ balances,
209
+ connectedWallets,
210
+ };
211
+ });
194
212
  } else {
195
213
  throw new Error('Wallet not found');
196
214
  }
197
215
  } catch (error) {
198
- set((state) => ({
199
- loading: false,
200
- connectedWallets: state.connectedWallets.map((balance) => {
216
+ set((state) => {
217
+ const connectedWallets = state.connectedWallets.map((balance) => {
201
218
  return accounts.find((account) =>
202
219
  isAccountAndWalletMatched(account, balance)
203
220
  )
204
221
  ? resetConnectedWalletState(balance)
205
222
  : balance;
206
- }),
207
- }));
223
+ });
224
+
225
+ const balances = makeTokensBalance(connectedWallets);
226
+
227
+ return {
228
+ loading: false,
229
+ balances,
230
+ connectedWallets,
231
+ };
232
+ });
208
233
  }
209
234
  },
235
+ getBalanceFor: (token) => {
236
+ const { balances } = get();
237
+ const tokenHash = createTokenHash(token);
238
+ const balance = balances[tokenHash];
239
+ return balance ?? null;
240
+ },
210
241
  }))
211
242
  )
212
243
  );
213
-
214
- export const fetchingBalanceSelector = (state: WalletsStore) =>
215
- !!state.connectedWallets.find((wallet) => wallet.loading);
@@ -77,20 +77,57 @@ export type WidgetAffiliate = {
77
77
  * blockchains. e.g. ['BSC','ETHEREUM']
78
78
  * @property {Asset[]} tokens - The `tokens` property is an optional array of `Asset` objects that
79
79
  * you could use that to limit tokens to some limited ones.
80
+ * @property {Asset} pinnedTokens - The `pinnedTokens` property is an optional array of `Asset` objects that
81
+ * you could use to pin tokens of your choice to the top of the token list.
80
82
  */
81
83
  export type BlockchainAndTokenConfig = {
82
84
  blockchain?: string;
83
85
  token?: Asset;
84
86
  blockchains?: string[];
85
87
  tokens?: Asset[];
88
+ pinnedTokens?: Asset[];
86
89
  };
87
90
 
91
+ /**
92
+ * `Features`
93
+ *
94
+ * @property {'visible' | 'hidden'} [theme]
95
+ * - The visibility state for the theme feature. Optional property.
96
+ *
97
+ * @property {'visible' | 'hidden'} [language]
98
+ * - The visibility state for the language feature. Optional property.
99
+ *
100
+ * @property {'disabled' | 'enabled'} [experimentalRoute]
101
+ * - The enablement state for the experimental route feature. Optional property.
102
+ *
103
+ * @property {'visible' | 'hidden'} [connectWalletButton]
104
+ * - The visibility state for the connect wallet button feature. Optional property.
105
+ *
106
+ * @property {'visible' | 'hidden'} [notification]
107
+ * - The visibility state for the notification feature. Optional property.
108
+ *
109
+ * @property {'visible' | 'hidden'} [liquiditySource]
110
+ * - The visibility state for the liquiditySource feature. Optional property.
111
+ */
112
+ export type Features = Partial<
113
+ Record<
114
+ | 'theme'
115
+ | 'language'
116
+ | 'connectWalletButton'
117
+ | 'notification'
118
+ | 'liquiditySource',
119
+ 'visible' | 'hidden'
120
+ >
121
+ > &
122
+ Partial<Record<'experimentalRoute', 'disabled' | 'enabled'>>;
123
+
88
124
  /**
89
125
  * The type WidgetConfig defines the configuration options for a widget, including API key, affiliate
90
126
  * reference, amount, blockchain and token configurations, liquidity sources, wallet types, language,
91
127
  * and theme.
92
128
  *
93
129
  * @property {string} apiKey - The API key used to communicate with Rango API
130
+ * @property {string} apiUrl - The API url used to set custom API url
94
131
  * @property {WidgetAffiliate} affiliate - If you want to charge users fee per transaction, you should
95
132
  * pass `WidgetAffiliate` including affiliateRef, affiliatePercent, and affiliateWallets.
96
133
  * @property {number} amount - The default input amount.
@@ -119,13 +156,21 @@ export type BlockchainAndTokenConfig = {
119
156
  * that defines the various properties of the theme, such as colors, fonts, and others.
120
157
  * @property {boolean} externalWallets
121
158
  * If `externalWallets` is `true`, you should add `WidgetWallets` to your app.
122
- * @property {Asset} pinnedTokens - The `pinnedTokens` property is an optional array of `Asset` objects that
123
- * you could use to pin tokens of your choice to the top of the token list.
124
159
  * @property {boolean} enableNewLiquiditySources - The `enableNewLiquiditySources` property is a boolean value that when you
125
160
  * set it to true, whenever a new liquidity source is added, it will be added to your list as well.
161
+ * @property {Features} features - An optional object for configuring the visibility or enablement of various features.
162
+ * Keys include:
163
+ * - 'notification': Visibility state for the notification icon.
164
+ * - 'theme': Visibility state for the theme.
165
+ * - 'liquiditySource': Visibility state for liquidity source.
166
+ * - 'connectWalletButton': Visibility state for the wallet connect icon.
167
+ * - 'language': Visibility state for the language.
168
+ * - 'experimentalRoute': Enablement state for the experimental route.
126
169
  */
170
+
127
171
  export type WidgetConfig = {
128
172
  apiKey: string;
173
+ apiUrl?: string;
129
174
  walletConnectProjectId?: string;
130
175
  affiliate?: WidgetAffiliate;
131
176
  amount?: number;
@@ -138,6 +183,6 @@ export type WidgetConfig = {
138
183
  language?: Language;
139
184
  theme?: WidgetTheme;
140
185
  externalWallets?: boolean;
141
- pinnedTokens?: Asset[];
142
186
  enableNewLiquiditySources?: boolean;
187
+ features?: Features;
143
188
  };
package/src/types/swap.ts CHANGED
@@ -1,23 +1,14 @@
1
- import type { SwapSavedSettings } from 'rango-types/lib';
1
+ import type { SwapSavedSettings } from 'rango-types';
2
2
 
3
3
  export type PendingSwapSettings = Omit<
4
4
  SwapSavedSettings,
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 = {
@@ -1,7 +1,24 @@
1
- import { WalletType } from '@rango-dev/wallets-shared';
1
+ import type { WalletType } from '@rango-dev/wallets-shared';
2
2
 
3
3
  export interface Wallet {
4
4
  chain: string;
5
5
  address: string;
6
6
  walletType: WalletType;
7
7
  }
8
+
9
+ export type Balance = {
10
+ amount: string;
11
+ decimals: number;
12
+ usdValue: string;
13
+ };
14
+
15
+ type Blockchain = string;
16
+ type TokenSymbol = string;
17
+ type Address = string;
18
+
19
+ /** `blockchain-symbol-Address` */
20
+ export type TokenHash = `${Blockchain}-${TokenSymbol}-${Address}`;
21
+
22
+ export type TokensBalance = {
23
+ [key: TokenHash]: Balance;
24
+ };
@@ -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/date.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { GroupBy } from '../components/SwapsGroup/SwapsGroup.types';
2
- import type { PendingSwap } from '@rango-dev/queue-manager-rango-preset';
2
+ import type { PendingSwap } from 'rango-types';
3
3
 
4
4
  import dayjs from 'dayjs';
5
5
 
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
  }
@@ -1,6 +1,7 @@
1
+ import type { WidgetConfig } from '../types';
2
+ import type { ProviderInterface } from '@rango-dev/wallets-react';
3
+
1
4
  import { allProviders } from '@rango-dev/provider-all';
2
- import { ProviderInterface } from '@rango-dev/wallets-react';
3
- import { WidgetConfig } from '../types';
4
5
 
5
6
  export interface ProvidersOptions {
6
7
  walletConnectProjectId?: WidgetConfig['walletConnectProjectId'];
@@ -26,9 +27,11 @@ export function matchAndGenerateProviders(
26
27
  const selectedProviders: ProviderInterface[] = [];
27
28
 
28
29
  providers.forEach((requestedProvider) => {
29
- // There are two types of provider we get, the first one is only passing the wallet name
30
- // then we will match the wallet name with our providers (@rango-dev/provider-*).
31
- // The second way is passing a custom provider which implemented ProviderInterface.
30
+ /*
31
+ * There are two types of provider we get, the first one is only passing the wallet name
32
+ * then we will match the wallet name with our providers (@rango-dev/provider-*).
33
+ * The second way is passing a custom provider which implemented ProviderInterface.
34
+ */
32
35
  if (typeof requestedProvider === 'string') {
33
36
  const result: ProviderInterface | undefined = all.find((provider) => {
34
37
  return provider.config.type === requestedProvider;
@@ -1,5 +1,5 @@
1
- import { Manager } from '@rango-dev/queue-manager-core';
2
- import {
1
+ import type { Manager } from '@rango-dev/queue-manager-core';
2
+ import type {
3
3
  PendingSwapWithQueueID,
4
4
  SwapStorage,
5
5
  } from '@rango-dev/queue-manager-rango-preset';
@@ -1,6 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/no-magic-numbers */
2
2
  import type { QuoteError, QuoteWarning, Wallet } from '../types';
3
- import type { PendingSwap } from '@rango-dev/queue-manager-rango-preset';
4
3
  import type { PriceImpactWarningLevel } from '@rango-dev/ui';
5
4
  import type {
6
5
  SimulationAssetAndAmount,
@@ -12,6 +11,7 @@ import type {
12
11
  BlockchainMeta,
13
12
  Token,
14
13
  } from 'rango-sdk';
14
+ import type { PendingSwap } from 'rango-types';
15
15
 
16
16
  import { getLastSuccessfulStep } from '@rango-dev/queue-manager-rango-preset';
17
17
  import BigNumber from 'bignumber.js';
@@ -238,11 +238,12 @@ export function generateQuoteWarnings(
238
238
  const outputUsdValue = getUsdValue(toToken, quote.result?.outputAmount ?? '');
239
239
 
240
240
  if (quote.result && inputUsdValue && outputUsdValue) {
241
- const priceImpact = getPercentageChange(
241
+ const priceImpact = getPriceImpact(
242
242
  inputUsdValue.toString(),
243
243
  outputUsdValue.toString()
244
244
  );
245
- const highValueLoss = hasHighValueLoss(inputUsdValue, priceImpact);
245
+ const highValueLoss =
246
+ !!priceImpact && hasHighValueLoss(inputUsdValue, priceImpact);
246
247
 
247
248
  if (highValueLoss) {
248
249
  const totalFee = getTotalFeeInUsd(quote.result.swaps, tokens);
@@ -320,13 +321,12 @@ export function generateQuoteErrors(
320
321
  export function getPriceImpact(
321
322
  inputUsdValue: BigNumber | string | null,
322
323
  outputUsdValue: BigNumber | string | null
323
- ) {
324
+ ): number | null {
324
325
  const outputUsdValueIsInvalid =
325
326
  typeof outputUsdValue === 'string'
326
327
  ? parseFloat(outputUsdValue) <= 0
327
328
  : !outputUsdValue?.gt(0);
328
-
329
- const priceImpact =
329
+ const percentageChange =
330
330
  !inputUsdValue || !outputUsdValue || outputUsdValueIsInvalid
331
331
  ? null
332
332
  : getPercentageChange(
@@ -334,5 +334,5 @@ export function getPriceImpact(
334
334
  outputUsdValue.toString()
335
335
  );
336
336
 
337
- return priceImpact;
337
+ return percentageChange && percentageChange < 0 ? percentageChange : null;
338
338
  }
@@ -1,7 +1,6 @@
1
+ import type { Features } from '../types';
1
2
  import type { SwapperMeta } from 'rango-sdk';
2
3
 
3
- import { useSettingsStore } from '../store/settings';
4
-
5
4
  import { removeDuplicateFrom } from './common';
6
5
 
7
6
  export type LiquiditySourceType = 'BRIDGE' | 'AGGREGATOR' | 'DEX';
@@ -15,10 +14,9 @@ export type UniqueSwappersGroupType = {
15
14
  };
16
15
 
17
16
  export function getUniqueSwappersGroups(
18
- swappers: SwapperMeta[]
17
+ swappers: SwapperMeta[],
18
+ disabledLiquiditySources: string[]
19
19
  ): UniqueSwappersGroupType[] {
20
- const disabledLiquiditySources =
21
- useSettingsStore.use.disabledLiquiditySources();
22
20
  const supportedSwappers = swappers.map((swapper) => swapper.swapperGroup);
23
21
 
24
22
  const uniqueSupportedSwappersGroups: Array<UniqueSwappersGroupType> = [];
@@ -71,3 +69,11 @@ export function sortLiquiditySourcesByGroupTitle(
71
69
 
72
70
  return 0;
73
71
  }
72
+
73
+ export function isFeatureHidden(feature: keyof Features, features?: Features) {
74
+ return features?.[feature] === 'hidden';
75
+ }
76
+
77
+ export function isFeatureEnabled(feature: keyof Features, features?: Features) {
78
+ return features?.[feature] === 'enabled';
79
+ }