@rango-dev/widget-embedded 0.17.1-next.9 → 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 (271) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/QueueManager.d.ts +1 -2
  3. package/dist/QueueManager.d.ts.map +1 -1
  4. package/dist/Wallets.d.ts +0 -1
  5. package/dist/Wallets.d.ts.map +1 -1
  6. package/dist/Widget.d.ts +1 -1
  7. package/dist/Widget.d.ts.map +1 -1
  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/ConfirmWalletsModal/ConfirmWallets.helpers.d.ts +3 -1
  13. package/dist/components/ConfirmWalletsModal/ConfirmWallets.helpers.d.ts.map +1 -1
  14. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +1 -1
  15. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
  16. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.types.d.ts +3 -1
  17. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.types.d.ts.map +1 -1
  18. package/dist/components/ConfirmWalletsModal/WalletList.d.ts.map +1 -1
  19. package/dist/components/ConfirmWalletsModal/WalletList.type.d.ts +4 -1
  20. package/dist/components/ConfirmWalletsModal/WalletList.type.d.ts.map +1 -1
  21. package/dist/components/NoRoutes/NoRoutes.d.ts +4 -0
  22. package/dist/components/NoRoutes/NoRoutes.d.ts.map +1 -0
  23. package/dist/components/NoRoutes/NoRoutes.helper.d.ts +3 -0
  24. package/dist/components/NoRoutes/NoRoutes.helper.d.ts.map +1 -0
  25. package/dist/components/{NoResult/NoResult.styles.d.ts → NoRoutes/NoRoutes.styles.d.ts} +1 -1
  26. package/dist/components/{NoResult/NoResult.styles.d.ts.map → NoRoutes/NoRoutes.styles.d.ts.map} +1 -1
  27. package/dist/components/{NoResult/NoResult.types.d.ts → NoRoutes/NoRoutes.types.d.ts} +3 -3
  28. package/dist/components/NoRoutes/NoRoutes.types.d.ts.map +1 -0
  29. package/dist/components/NoRoutes/index.d.ts +2 -0
  30. package/dist/components/NoRoutes/index.d.ts.map +1 -0
  31. package/dist/components/NotificationContent/NotificationContent.d.ts.map +1 -1
  32. package/dist/components/RouteErrors/RouteErrors.d.ts +4 -0
  33. package/dist/components/RouteErrors/RouteErrors.d.ts.map +1 -0
  34. package/dist/components/{QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts → RouteErrors/RouteErrors.styles.d.ts} +1 -1
  35. package/dist/components/RouteErrors/RouteErrors.styles.d.ts.map +1 -0
  36. package/dist/components/RouteErrors/RouteErrors.types.d.ts +24 -0
  37. package/dist/components/RouteErrors/RouteErrors.types.d.ts.map +1 -0
  38. package/dist/components/RouteErrors/RouteErrorsModal.d.ts +4 -0
  39. package/dist/components/RouteErrors/RouteErrorsModal.d.ts.map +1 -0
  40. package/dist/components/RouteErrors/RouteErrorsModalItem.d.ts +4 -0
  41. package/dist/components/RouteErrors/RouteErrorsModalItem.d.ts.map +1 -0
  42. package/dist/components/RouteErrors/index.d.ts +2 -0
  43. package/dist/components/RouteErrors/index.d.ts.map +1 -0
  44. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  45. package/dist/components/TokenList/TokenList.d.ts.map +1 -1
  46. package/dist/components/UpdateUrl.d.ts +6 -1
  47. package/dist/components/UpdateUrl.d.ts.map +1 -1
  48. package/dist/components/WidgetEvents.d.ts.map +1 -1
  49. package/dist/constants/errors.d.ts +4 -4
  50. package/dist/constants/errors.d.ts.map +1 -1
  51. package/dist/constants/messages.d.ts +1 -1
  52. package/dist/constants/searchParams.d.ts +1 -2
  53. package/dist/constants/searchParams.d.ts.map +1 -1
  54. package/dist/constants/warnings.d.ts +2 -2
  55. package/dist/constants/warnings.d.ts.map +1 -1
  56. package/dist/hooks/{useConfirmSwap/useConfirmSwap.types.d.ts → useConfirmSwap.d.ts} +7 -5
  57. package/dist/hooks/useConfirmSwap.d.ts.map +1 -0
  58. package/dist/hooks/{useFetchQuote.d.ts → useFetchBestRoute.d.ts} +3 -3
  59. package/dist/hooks/useFetchBestRoute.d.ts.map +1 -0
  60. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts +2 -2
  61. package/dist/hooks/useSwapInput.d.ts +2 -4
  62. package/dist/hooks/useSwapInput.d.ts.map +1 -1
  63. package/dist/hooks/useSyncStoresWithConfig.d.ts +2 -1
  64. package/dist/hooks/useSyncStoresWithConfig.d.ts.map +1 -1
  65. package/dist/hooks/useWalletList.d.ts.map +1 -1
  66. package/dist/index.js +1 -1
  67. package/dist/index.js.map +4 -4
  68. package/dist/pages/ConfirmSwapPage.d.ts +6 -1
  69. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  70. package/dist/pages/Home.d.ts.map +1 -1
  71. package/dist/pages/LiquiditySourcePage.d.ts +2 -1
  72. package/dist/pages/LiquiditySourcePage.d.ts.map +1 -1
  73. package/dist/pages/SelectBlockchainPage.d.ts.map +1 -1
  74. package/dist/pages/SettingsPage.d.ts +6 -1
  75. package/dist/pages/SettingsPage.d.ts.map +1 -1
  76. package/dist/pages/WalletsPage.d.ts +8 -1
  77. package/dist/pages/WalletsPage.d.ts.map +1 -1
  78. package/dist/store/app.d.ts +23 -5
  79. package/dist/store/app.d.ts.map +1 -1
  80. package/dist/store/{quote.d.ts → bestRoute.d.ts} +27 -39
  81. package/dist/store/bestRoute.d.ts.map +1 -0
  82. package/dist/store/meta.d.ts +23 -0
  83. package/dist/store/meta.d.ts.map +1 -0
  84. package/dist/store/settings.d.ts +2 -3
  85. package/dist/store/settings.d.ts.map +1 -1
  86. package/dist/store/slices/config.d.ts +2 -3
  87. package/dist/store/slices/config.d.ts.map +1 -1
  88. package/dist/store/slices/data.d.ts +0 -3
  89. package/dist/store/slices/data.d.ts.map +1 -1
  90. package/dist/store/wallets.d.ts +4 -5
  91. package/dist/store/wallets.d.ts.map +1 -1
  92. package/dist/types/config.d.ts +5 -5
  93. package/dist/types/config.d.ts.map +1 -1
  94. package/dist/types/index.d.ts +1 -1
  95. package/dist/types/index.d.ts.map +1 -1
  96. package/dist/types/routing.d.ts +65 -0
  97. package/dist/types/routing.d.ts.map +1 -0
  98. package/dist/utils/numbers.d.ts +1 -1
  99. package/dist/utils/numbers.d.ts.map +1 -1
  100. package/dist/utils/{quote.d.ts → routing.d.ts} +12 -16
  101. package/dist/utils/routing.d.ts.map +1 -0
  102. package/dist/utils/settings.d.ts +2 -3
  103. package/dist/utils/settings.d.ts.map +1 -1
  104. package/dist/utils/swap.d.ts +22 -25
  105. package/dist/utils/swap.d.ts.map +1 -1
  106. package/dist/utils/wallets.d.ts +2 -2
  107. package/dist/utils/wallets.d.ts.map +1 -1
  108. package/package.json +8 -8
  109. package/src/QueueManager.tsx +14 -14
  110. package/src/Wallets.tsx +15 -35
  111. package/src/Widget.tsx +24 -11
  112. package/src/components/AppRouter.tsx +5 -6
  113. package/src/components/AppRoutes.tsx +39 -6
  114. package/src/components/BlockchainList/BlockchainList.tsx +4 -4
  115. package/src/components/BlockchainsSection/BlockchainsSection.tsx +7 -7
  116. package/src/components/ConfirmWalletsModal/ConfirmWallets.helpers.ts +64 -2
  117. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +40 -28
  118. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.types.ts +3 -1
  119. package/src/components/ConfirmWalletsModal/WalletList.tsx +5 -6
  120. package/src/components/ConfirmWalletsModal/WalletList.type.ts +4 -1
  121. package/src/components/LoadingSwapDetails/LoadingSwapDetails.styles.ts +3 -3
  122. package/src/components/LoadingSwapDetails/LoadingSwapDetails.tsx +6 -6
  123. package/src/components/{NoResult/NoResult.helpers.ts → NoRoutes/NoRoutes.helper.ts} +9 -16
  124. package/src/components/{NoResult/NoResult.styles.ts → NoRoutes/NoRoutes.styles.ts} +0 -2
  125. package/src/components/{NoResult/NoResult.tsx → NoRoutes/NoRoutes.tsx} +12 -10
  126. package/src/components/{NoResult/NoResult.types.ts → NoRoutes/NoRoutes.types.ts} +2 -3
  127. package/src/components/NoRoutes/index.ts +1 -0
  128. package/src/components/NotificationContent/NotificationContent.tsx +2 -3
  129. package/src/components/RouteErrors/RouteErrors.tsx +79 -0
  130. package/src/components/RouteErrors/RouteErrors.types.ts +29 -0
  131. package/src/components/RouteErrors/RouteErrorsModal.tsx +129 -0
  132. package/src/components/{QuoteWarningsAndErrors/QuoteErrorsModalItem.tsx → RouteErrors/RouteErrorsModalItem.tsx} +3 -3
  133. package/src/components/RouteErrors/index.ts +1 -0
  134. package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +1 -1
  135. package/src/components/SwapDetails/SwapDetails.tsx +22 -18
  136. package/src/components/SwitchFromAndTo.tsx +2 -2
  137. package/src/components/TokenList/TokenList.tsx +6 -5
  138. package/src/components/UpdateUrl.tsx +26 -36
  139. package/src/components/WidgetEvents.tsx +2 -4
  140. package/src/constants/errors.ts +10 -8
  141. package/src/constants/messages.ts +1 -1
  142. package/src/constants/searchParams.ts +0 -1
  143. package/src/constants/warnings.ts +7 -7
  144. package/src/hooks/useConfirmSwap.ts +303 -0
  145. package/src/hooks/{useFetchQuote.ts → useFetchBestRoute.ts} +3 -3
  146. package/src/hooks/useNavigateBack.ts +3 -3
  147. package/src/hooks/useSwapInput.ts +23 -58
  148. package/src/hooks/useSyncStoresWithConfig.ts +19 -22
  149. package/src/hooks/useWalletList.ts +5 -3
  150. package/src/pages/ConfirmSwapPage.tsx +235 -58
  151. package/src/pages/HistoryPage.tsx +1 -1
  152. package/src/pages/Home.tsx +247 -58
  153. package/src/pages/LanguagePage.tsx +1 -1
  154. package/src/pages/LiquiditySourcePage.tsx +32 -23
  155. package/src/pages/SelectBlockchainPage.tsx +7 -6
  156. package/src/pages/SelectSwapItemsPage.tsx +5 -5
  157. package/src/pages/SettingsPage.tsx +13 -9
  158. package/src/pages/SwapDetailsPage.tsx +3 -3
  159. package/src/pages/ThemePage.tsx +1 -1
  160. package/src/pages/WalletsPage.tsx +12 -5
  161. package/src/store/app.ts +6 -18
  162. package/src/store/{quote.ts → bestRoute.ts} +60 -68
  163. package/src/store/meta.ts +39 -0
  164. package/src/store/settings.ts +4 -7
  165. package/src/store/slices/config.ts +15 -25
  166. package/src/store/slices/data.ts +29 -64
  167. package/src/store/wallets.ts +8 -11
  168. package/src/types/config.ts +5 -5
  169. package/src/types/index.ts +1 -1
  170. package/src/types/routing.ts +77 -0
  171. package/src/utils/numbers.ts +1 -1
  172. package/src/utils/routing.ts +321 -0
  173. package/src/utils/settings.ts +7 -8
  174. package/src/utils/swap.ts +85 -113
  175. package/src/utils/wallets.ts +17 -29
  176. package/dist/components/NoResult/NoResult.d.ts +0 -4
  177. package/dist/components/NoResult/NoResult.d.ts.map +0 -1
  178. package/dist/components/NoResult/NoResult.helpers.d.ts +0 -4
  179. package/dist/components/NoResult/NoResult.helpers.d.ts.map +0 -1
  180. package/dist/components/NoResult/NoResult.types.d.ts.map +0 -1
  181. package/dist/components/NoResult/index.d.ts +0 -2
  182. package/dist/components/NoResult/index.d.ts.map +0 -1
  183. package/dist/components/Quote/Quote.d.ts +0 -4
  184. package/dist/components/Quote/Quote.d.ts.map +0 -1
  185. package/dist/components/Quote/Quote.styles.d.ts +0 -1429
  186. package/dist/components/Quote/Quote.styles.d.ts.map +0 -1
  187. package/dist/components/Quote/Quote.types.d.ts +0 -22
  188. package/dist/components/Quote/Quote.types.d.ts.map +0 -1
  189. package/dist/components/Quote/QuoteSkeleton.d.ts +0 -4
  190. package/dist/components/Quote/QuoteSkeleton.d.ts.map +0 -1
  191. package/dist/components/Quote/QuoteSkeleton.styles.d.ts +0 -319
  192. package/dist/components/Quote/QuoteSkeleton.styles.d.ts.map +0 -1
  193. package/dist/components/Quote/QuoteSkeleton.types.d.ts +0 -6
  194. package/dist/components/Quote/QuoteSkeleton.types.d.ts.map +0 -1
  195. package/dist/components/Quote/QuoteSummary.d.ts +0 -11
  196. package/dist/components/Quote/QuoteSummary.d.ts.map +0 -1
  197. package/dist/components/Quote/QuoteSummary.styles.d.ts +0 -158
  198. package/dist/components/Quote/QuoteSummary.styles.d.ts.map +0 -1
  199. package/dist/components/Quote/index.d.ts +0 -4
  200. package/dist/components/Quote/index.d.ts.map +0 -1
  201. package/dist/components/QuoteWarningsAndErrors/HighValueLossWarningModal.d.ts +0 -11
  202. package/dist/components/QuoteWarningsAndErrors/HighValueLossWarningModal.d.ts.map +0 -1
  203. package/dist/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.d.ts +0 -4
  204. package/dist/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.d.ts.map +0 -1
  205. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts +0 -4
  206. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts.map +0 -1
  207. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts +0 -9
  208. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts.map +0 -1
  209. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts.map +0 -1
  210. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts +0 -22
  211. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts.map +0 -1
  212. package/dist/components/QuoteWarningsAndErrors/SlippageWariningModal.d.ts +0 -11
  213. package/dist/components/QuoteWarningsAndErrors/SlippageWariningModal.d.ts.map +0 -1
  214. package/dist/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.d.ts +0 -11
  215. package/dist/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.d.ts.map +0 -1
  216. package/dist/components/QuoteWarningsAndErrors/index.d.ts +0 -2
  217. package/dist/components/QuoteWarningsAndErrors/index.d.ts.map +0 -1
  218. package/dist/containers/QuoteInfo/QuoteInfo.d.ts +0 -4
  219. package/dist/containers/QuoteInfo/QuoteInfo.d.ts.map +0 -1
  220. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts +0 -472
  221. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts.map +0 -1
  222. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts +0 -17
  223. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts.map +0 -1
  224. package/dist/containers/QuoteInfo/index.d.ts +0 -2
  225. package/dist/containers/QuoteInfo/index.d.ts.map +0 -1
  226. package/dist/hooks/useConfirmSwap/index.d.ts +0 -2
  227. package/dist/hooks/useConfirmSwap/index.d.ts.map +0 -1
  228. package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts +0 -3
  229. package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts.map +0 -1
  230. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts +0 -16
  231. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts.map +0 -1
  232. package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts.map +0 -1
  233. package/dist/hooks/useFetchQuote.d.ts.map +0 -1
  234. package/dist/hooks/useForceAutoConnect.d.ts +0 -2
  235. package/dist/hooks/useForceAutoConnect.d.ts.map +0 -1
  236. package/dist/store/AppStore.d.ts +0 -11
  237. package/dist/store/AppStore.d.ts.map +0 -1
  238. package/dist/store/quote.d.ts.map +0 -1
  239. package/dist/types/quote.d.ts +0 -82
  240. package/dist/types/quote.d.ts.map +0 -1
  241. package/dist/utils/quote.d.ts.map +0 -1
  242. package/src/components/NoResult/index.ts +0 -1
  243. package/src/components/Quote/Quote.styles.ts +0 -212
  244. package/src/components/Quote/Quote.tsx +0 -345
  245. package/src/components/Quote/Quote.types.ts +0 -16
  246. package/src/components/Quote/QuoteSkeleton.styles.ts +0 -110
  247. package/src/components/Quote/QuoteSkeleton.tsx +0 -108
  248. package/src/components/Quote/QuoteSkeleton.types.ts +0 -5
  249. package/src/components/Quote/QuoteSummary.styles.ts +0 -15
  250. package/src/components/Quote/QuoteSummary.tsx +0 -46
  251. package/src/components/Quote/index.ts +0 -3
  252. package/src/components/QuoteWarningsAndErrors/HighValueLossWarningModal.tsx +0 -107
  253. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.ts +0 -67
  254. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.tsx +0 -103
  255. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.ts +0 -24
  256. package/src/components/QuoteWarningsAndErrors/SlippageWariningModal.tsx +0 -77
  257. package/src/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.tsx +0 -38
  258. package/src/components/QuoteWarningsAndErrors/index.ts +0 -1
  259. package/src/containers/QuoteInfo/QuoteInfo.styles.ts +0 -15
  260. package/src/containers/QuoteInfo/QuoteInfo.tsx +0 -97
  261. package/src/containers/QuoteInfo/QuoteInfo.types.ts +0 -17
  262. package/src/containers/QuoteInfo/index.ts +0 -1
  263. package/src/hooks/useConfirmSwap/index.ts +0 -1
  264. package/src/hooks/useConfirmSwap/useConfirmSwap.helpers.ts +0 -168
  265. package/src/hooks/useConfirmSwap/useConfirmSwap.ts +0 -136
  266. package/src/hooks/useConfirmSwap/useConfirmSwap.types.ts +0 -19
  267. package/src/hooks/useForceAutoConnect.ts +0 -27
  268. package/src/store/AppStore.tsx +0 -35
  269. package/src/types/quote.ts +0 -107
  270. package/src/utils/quote.ts +0 -338
  271. /package/src/components/{QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.ts → RouteErrors/RouteErrors.styles.ts} +0 -0
package/src/utils/swap.ts CHANGED
@@ -1,12 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-magic-numbers */
2
- import type { FetchStatus } from '../store/slices/data';
2
+ import type { LoadingStatus } from '../store/meta';
3
3
  import type { ConnectedWallet } from '../store/wallets';
4
- import type {
5
- ConvertedToken,
6
- RecommendedSlippages,
7
- SwapButtonState,
8
- Wallet,
9
- } from '../types';
4
+ import type { ConvertedToken, SwapButtonState, Wallet } from '../types';
10
5
  import type {
11
6
  PendingSwap,
12
7
  PendingSwapStep,
@@ -35,11 +30,12 @@ import {
35
30
  TOKEN_AMOUNT_MAX_DECIMALS,
36
31
  TOKEN_AMOUNT_MIN_DECIMALS,
37
32
  } from '../constants/routing';
33
+ import { useMetaStore } from '../store/meta';
38
34
  import { ButtonState } from '../types';
39
35
 
40
36
  import { removeDuplicateFrom } from './common';
41
37
  import { numberToString } from './numbers';
42
- import { getRequiredBalanceOfWallet } from './quote';
38
+ import { getRequiredBalanceOfWallet } from './routing';
43
39
  import { getRequiredChains } from './wallets';
44
40
 
45
41
  export function getOutputRatio(
@@ -54,29 +50,25 @@ export function getOutputRatio(
54
50
  ) {
55
51
  return 0;
56
52
  }
57
- return outputUsdValue
58
- .div(inputUsdValue)
59
- .minus(1)
60
- .multipliedBy(100)
61
- .toNumber();
53
+ return outputUsdValue.div(inputUsdValue).minus(1).multipliedBy(100);
62
54
  }
63
55
 
64
- export function hasHighValueLoss(
56
+ export function outputRatioHasWarning(
65
57
  inputUsdValue: BigNumber | null,
66
- priceImpact: number
58
+ outputRatio: BigNumber | 0
67
59
  ): boolean {
68
60
  return (
69
- ((parseInt(priceImpact.toFixed(2) || '0') <= -10 &&
61
+ ((parseInt(outputRatio.toFixed(2) || '0') <= -10 &&
70
62
  inputUsdValue?.gte(new BigNumber(400))) ||
71
- (parseInt(priceImpact.toFixed(2) || '0') <= -5 &&
63
+ (parseInt(outputRatio.toFixed(2) || '0') <= -5 &&
72
64
  inputUsdValue?.gte(new BigNumber(1000)))) ??
73
65
  false
74
66
  );
75
67
  }
76
68
 
77
- export function hasLimitError(quote: BestRouteResponse | null): boolean {
69
+ export function hasLimitError(bestRoute: BestRouteResponse | null): boolean {
78
70
  return (
79
- (quote?.result?.swaps || []).filter((swap) => {
71
+ (bestRoute?.result?.swaps || []).filter((swap) => {
80
72
  const minimum = !!swap.fromAmountMinValue
81
73
  ? new BigNumber(swap.fromAmountMinValue)
82
74
  : null;
@@ -91,12 +83,16 @@ export function hasLimitError(quote: BestRouteResponse | null): boolean {
91
83
  }).length > 0
92
84
  );
93
85
  }
94
- export function getLimitErrorMessage(quote: BestRouteResponse): {
95
- swap: SwapResult;
86
+
87
+ export function LimitErrorMessage(bestRoute: BestRouteResponse | null): {
88
+ swap: SwapResult | null;
96
89
  fromAmountRangeError: string;
97
90
  recommendation: string;
98
91
  } {
99
- const swap = (quote.result?.swaps || []).filter((swap) => {
92
+ if (!bestRoute) {
93
+ return { swap: null, fromAmountRangeError: '', recommendation: '' };
94
+ }
95
+ const swap = (bestRoute?.result?.swaps || []).filter((swap) => {
100
96
  const minimum = !!swap.fromAmountMinValue
101
97
  ? new BigNumber(swap.fromAmountMinValue)
102
98
  : null;
@@ -109,7 +105,9 @@ export function getLimitErrorMessage(quote: BestRouteResponse): {
109
105
  }
110
106
  return minimum?.gt(swap.fromAmount) || maximum?.lt(swap.fromAmount);
111
107
  })[0];
112
-
108
+ if (!swap) {
109
+ return { swap: null, fromAmountRangeError: '', recommendation: '' };
110
+ }
113
111
  const minimum = !!swap.fromAmountMinValue
114
112
  ? new BigNumber(swap.fromAmountMinValue)
115
113
  : null;
@@ -180,10 +178,10 @@ export function getLimitErrorMessage(quote: BestRouteResponse): {
180
178
  }
181
179
 
182
180
  export function getSwapButtonState(
183
- loadingMetaStatus: FetchStatus,
181
+ loadingMetaStatus: LoadingStatus,
184
182
  connectedWallets: ConnectedWallet[],
185
183
  loading: boolean,
186
- quote: BestRouteResponse | null,
184
+ bestRoute: BestRouteResponse | null,
187
185
  hasLimitError: boolean,
188
186
  highValueLoss: boolean,
189
187
  priceImpactCanNotBeComputed: boolean,
@@ -206,8 +204,8 @@ export function getSwapButtonState(
206
204
  }
207
205
  if (
208
206
  loading ||
209
- !quote ||
210
- !quote.result ||
207
+ !bestRoute ||
208
+ !bestRoute.result ||
211
209
  hasLimitError ||
212
210
  !inputAmount ||
213
211
  inputAmount === '0'
@@ -226,7 +224,7 @@ export function getSwapButtonState(
226
224
  };
227
225
  } else if (needsToWarnEthOnPath) {
228
226
  return {
229
- title: swapButtonTitles().ethWarning,
227
+ title: swapButtonTitles().ethRouteWarning,
230
228
  disabled: false,
231
229
  hasWarning: true,
232
230
  state: ButtonState.WARNING,
@@ -240,24 +238,24 @@ export function getSwapButtonState(
240
238
  }
241
239
 
242
240
  export function canComputePriceImpact(
243
- quote: BestRouteResponse | null,
241
+ bestRoute: BestRouteResponse | null,
244
242
  inputAmount: string,
245
243
  usdValue: BigNumber | null
246
244
  ) {
247
245
  return !(
248
246
  (!usdValue || usdValue.lte(ZERO)) &&
249
- !!quote?.result &&
247
+ !!bestRoute?.result &&
250
248
  !!inputAmount &&
251
249
  inputAmount !== '0' &&
252
250
  parseFloat(inputAmount || '0') !== 0 &&
253
- !!quote.result
251
+ !!bestRoute.result
254
252
  );
255
253
  }
256
254
 
257
- export function requiredWallets(quote: BestRouteResponse | null) {
255
+ export function requiredWallets(route: BestRouteResponse | null) {
258
256
  const wallets: string[] = [];
259
257
 
260
- quote?.result?.swaps.forEach((swap) => {
258
+ route?.result?.swaps.forEach((swap) => {
261
259
  const currentStepFromBlockchain = swap.from.blockchain;
262
260
  const currentStepToBlockchain = swap.to.blockchain;
263
261
  let lastAddedWallet = wallets[wallets.length - 1];
@@ -313,13 +311,15 @@ export function getUsdFeeOfStep(
313
311
  }
314
312
 
315
313
  export function getTotalFeeInUsd(
316
- swaps: SwapResult[],
314
+ bestRoute: BestRouteResponse | null,
317
315
  allTokens: Token[]
318
- ): BigNumber {
319
- return swaps.reduce(
320
- (totalFee: BigNumber, step) =>
321
- totalFee.plus(getUsdFeeOfStep(step, allTokens)),
322
- ZERO
316
+ ): BigNumber | null {
317
+ return (
318
+ bestRoute?.result?.swaps.reduce(
319
+ (totalFee: BigNumber, step) =>
320
+ totalFee.plus(getUsdFeeOfStep(step, allTokens)),
321
+ ZERO
322
+ ) || null
323
323
  );
324
324
  }
325
325
 
@@ -336,44 +336,10 @@ export function hasSlippageError(
336
336
  return (slippages?.filter((s) => !!s?.error)?.length || 0) > 0;
337
337
  }
338
338
 
339
- export function checkSlippageErrors(
340
- quote: BestRouteResponse
341
- ): RecommendedSlippages | null {
342
- const recommendedSlippages: RecommendedSlippages = new Map();
343
- quote.result?.swaps.forEach((swap, index) => {
344
- if (swap.recommendedSlippage?.error) {
345
- recommendedSlippages.set(index, swap.recommendedSlippage.slippage);
346
- }
347
- });
348
- if (recommendedSlippages.size > 0) {
349
- return recommendedSlippages;
350
- }
351
- return null;
352
- }
353
-
354
- export function checkSlippageWarnings(
355
- quote: BestRouteResponse,
356
- userSlippage: number
357
- ): RecommendedSlippages | null {
358
- const recommendedSlippages: RecommendedSlippages = new Map();
359
- quote.result?.swaps.forEach((swap, index) => {
360
- if (
361
- swap.recommendedSlippage?.slippage &&
362
- parseInt(swap.recommendedSlippage?.slippage) > userSlippage
363
- ) {
364
- recommendedSlippages.set(index, swap.recommendedSlippage.slippage);
365
- }
366
- });
367
- if (recommendedSlippages.size > 0) {
368
- return recommendedSlippages;
369
- }
370
- return null;
371
- }
372
-
373
339
  export function getMinRequiredSlippage(
374
- quote: BestRouteResponse
340
+ route: BestRouteResponse
375
341
  ): string | null {
376
- const slippages = quote.result?.swaps.map(
342
+ const slippages = route.result?.swaps.map(
377
343
  (slippage) => slippage.recommendedSlippage
378
344
  );
379
345
  return (
@@ -396,10 +362,10 @@ export function hasProperSlippage(
396
362
  }
397
363
 
398
364
  export function hasEnoughBalance(
399
- quote: BestRouteResponse,
365
+ route: BestRouteResponse,
400
366
  selectedWallets: Wallet[]
401
367
  ) {
402
- const fee = quote.validationStatus;
368
+ const fee = route.validationStatus;
403
369
 
404
370
  if (fee === null || fee.length === 0) {
405
371
  return true;
@@ -423,31 +389,29 @@ export function hasEnoughBalance(
423
389
  }
424
390
 
425
391
  export function hasEnoughBalanceAndProperSlippage(
426
- quote: BestRouteResponse,
392
+ route: BestRouteResponse,
427
393
  selectedWallets: Wallet[],
428
394
  userSlippage: string,
429
395
  minRequiredSlippage: string | null
430
396
  ): boolean {
431
397
  return (
432
- hasEnoughBalance(quote, selectedWallets) &&
398
+ hasEnoughBalance(route, selectedWallets) &&
433
399
  hasProperSlippage(userSlippage, minRequiredSlippage)
434
400
  );
435
401
  }
436
402
 
437
- export function createQuoteRequestBody(params: {
403
+ export function createBestRouteRequestBody(params: {
438
404
  fromToken: Token;
439
405
  toToken: Token;
440
406
  inputAmount: string;
441
407
  wallets?: Wallet[];
442
408
  selectedWallets?: Wallet[];
443
- liquiditySources?: string[];
444
- excludeLiquiditySources?: boolean;
445
409
  disabledLiquiditySources: string[];
446
410
  slippage: number;
447
411
  affiliateRef: string | null;
448
412
  affiliatePercent: number | null;
449
413
  affiliateWallets: { [key: string]: string } | null;
450
- initialQuote?: BestRouteResponse;
414
+ initialRoute?: BestRouteResponse;
451
415
  destination?: string;
452
416
  }): BestRouteRequest {
453
417
  const {
@@ -457,13 +421,11 @@ export function createQuoteRequestBody(params: {
457
421
  wallets,
458
422
  selectedWallets,
459
423
  disabledLiquiditySources,
460
- liquiditySources,
461
- excludeLiquiditySources,
462
424
  slippage,
463
425
  affiliateRef,
464
426
  affiliatePercent,
465
427
  affiliateWallets,
466
- initialQuote,
428
+ initialRoute,
467
429
  destination,
468
430
  } = params;
469
431
  const selectedWalletsMap = selectedWallets?.reduce(
@@ -493,10 +455,10 @@ export function createQuoteRequestBody(params: {
493
455
  }
494
456
  });
495
457
 
496
- const checkPrerequisites = !!initialQuote;
458
+ const checkPrerequisites = !!initialRoute;
497
459
 
498
460
  const filteredBlockchains = removeDuplicateFrom(
499
- (initialQuote?.result?.swaps || []).reduce(
461
+ (initialRoute?.result?.swaps || []).reduce(
500
462
  (blockchains: string[], swap) => {
501
463
  blockchains.push(swap.from.blockchain, swap.to.blockchain);
502
464
  // Check if internalSwaps array exists
@@ -534,18 +496,13 @@ export function createQuoteRequestBody(params: {
534
496
  selectedWallets: selectedWalletsMap ?? {},
535
497
  slippage: slippage.toString(),
536
498
  ...(destination && { destination: destination }),
537
- ...(excludeLiquiditySources && {
538
- swapperGroups: disabledLiquiditySources.concat(liquiditySources ?? []),
499
+ ...(disabledLiquiditySources.length > 0 && {
500
+ swapperGroups: disabledLiquiditySources,
539
501
  swappersGroupsExclude: true,
540
502
  }),
541
- ...(!excludeLiquiditySources && {
542
- swapperGroups: liquiditySources?.filter(
543
- (liquiditySource) => !disabledLiquiditySources.includes(liquiditySource)
544
- ),
545
- swappersGroupsExclude: false,
546
- }),
547
503
  ...(checkPrerequisites && { blockchains: filteredBlockchains }),
548
504
  };
505
+
549
506
  return requestBody;
550
507
  }
551
508
 
@@ -569,24 +526,29 @@ export function getWalletsForNewSwap(selectedWallets: Wallet[]) {
569
526
  return wallets;
570
527
  }
571
528
 
572
- export function getQuoteOutputAmount(quote: BestRouteResponse) {
573
- return quote.result?.outputAmount || null;
529
+ export function getRouteOutputAmount(route: BestRouteResponse | null) {
530
+ return route?.result?.outputAmount || null;
574
531
  }
575
532
 
576
- export function getPercentageChange(input: string, output: string) {
577
- return new BigNumber(output)
578
- .div(new BigNumber(input))
533
+ export function getPercentageChange(
534
+ inputUsdValue: string | number | null,
535
+ outputUsdValue: string | number | null
536
+ ) {
537
+ if (!inputUsdValue || !outputUsdValue) {
538
+ return null;
539
+ }
540
+ return new BigNumber(outputUsdValue)
541
+ .div(new BigNumber(inputUsdValue))
579
542
  .minus(1)
580
- .multipliedBy(100)
581
- .toNumber();
543
+ .multipliedBy(100);
582
544
  }
583
545
 
584
546
  export function isOutputAmountChangedALot(
585
- oldQuote: BestRouteResponse,
586
- newQuote: BestRouteResponse
547
+ oldRoute: BestRouteResponse,
548
+ newRoute: BestRouteResponse
587
549
  ) {
588
- const oldOutputAmount = getQuoteOutputAmount(oldQuote);
589
- const newOutputAmount = getQuoteOutputAmount(newQuote);
550
+ const oldOutputAmount = getRouteOutputAmount(oldRoute);
551
+ const newOutputAmount = getRouteOutputAmount(newRoute);
590
552
  if (!oldOutputAmount || !newOutputAmount) {
591
553
  return false;
592
554
  }
@@ -598,15 +560,15 @@ export function isOutputAmountChangedALot(
598
560
  return true;
599
561
  }
600
562
 
601
- return percentageChange <= -1;
563
+ return percentageChange.toNumber() <= -1;
602
564
  }
603
565
 
604
566
  export function getBalanceWarnings(
605
- quote: BestRouteResponse,
567
+ route: BestRouteResponse,
606
568
  selectedWallets: Wallet[]
607
569
  ) {
608
- const fee = quote.validationStatus;
609
- const requiredWallets = getRequiredChains(quote);
570
+ const fee = route.validationStatus;
571
+ const requiredWallets = getRequiredChains(route);
610
572
  const walletsSortedByRequiredWallets = selectedWallets.sort(
611
573
  (selectedWallet1, selectedWallet2) =>
612
574
  requiredWallets.indexOf(selectedWallet1.chain) -
@@ -752,19 +714,29 @@ export function shouldRetrySwap(pendingSwap: PendingSwap) {
752
714
  new Date().getTime() - parseInt(pendingSwap.finishTime) < 4 * 3600 * 1000
753
715
  );
754
716
  }
717
+ export function isValidCustomDestination(
718
+ blockchain: string,
719
+ address: string
720
+ ): boolean {
721
+ const blockchains = useMetaStore.getState().meta.blockchains;
722
+ const regex =
723
+ blockchains.find((chain) => chain.name === blockchain)?.addressPatterns ||
724
+ [];
725
+ return regex.filter((r) => new RegExp(r).test(address)).length > 0;
726
+ }
755
727
 
756
728
  export function confirmSwapDisabled(
757
729
  fetching: boolean,
758
730
  showCustomDestination: boolean,
759
731
  customDestination: string,
760
- quote: BestRouteResponse | null,
732
+ bestRoute: BestRouteResponse | null,
761
733
  selectedWallets: { walletType: string; chain: string }[],
762
734
  lastStepToBlockchain?: BlockchainMeta
763
735
  ) {
764
736
  return (
765
737
  fetching ||
766
738
  (!showCustomDestination &&
767
- !requiredWallets(quote).every((chain) =>
739
+ !requiredWallets(bestRoute).every((chain) =>
768
740
  selectedWallets.map((wallet) => wallet.chain).includes(chain)
769
741
  )) ||
770
742
  (!!showCustomDestination && !customDestination) ||
@@ -55,11 +55,8 @@ export function mapWalletTypesToWalletInfo(
55
55
  return list
56
56
  .filter((wallet) => !EXCLUDED_WALLETS.includes(wallet as WalletTypes))
57
57
  .filter((wallet) => {
58
- const { supportedChains, isContractWallet } = getWalletInfo(wallet);
59
- const { installed, network } = getState(wallet);
60
- const filterContractWallets =
61
- isContractWallet && (!installed || (!!chain && network !== chain));
62
- if (filterContractWallets) {
58
+ const { supportedChains, hideWhenNotInstalled } = getWalletInfo(wallet);
59
+ if (hideWhenNotInstalled && !getState(wallet).installed) {
63
60
  return false;
64
61
  }
65
62
  if (chain) {
@@ -100,8 +97,7 @@ export function prepareAccountsForWalletStore(
100
97
  wallet: WalletType,
101
98
  accounts: string[],
102
99
  evmBasedChains: string[],
103
- supportedChainNames: Network[] | null,
104
- isContractWallet: boolean
100
+ supportedChainNames: Network[] | null
105
101
  ): Wallet[] {
106
102
  const result: Wallet[] = [];
107
103
 
@@ -155,29 +151,21 @@ export function prepareAccountsForWalletStore(
155
151
 
156
152
  // If it's an evm network, we will add the address to all the evm chains.
157
153
  if (isEvmBasedChain || isUnknownAndEvmBased) {
158
- if (isContractWallet) {
154
+ /*
155
+ * all evm chains are not supported in wallets, so we are adding
156
+ * only to those that are supported by wallet.
157
+ */
158
+ const evmChainsSupportedByWallet = supportedBlockchains.filter((chain) =>
159
+ evmBasedChains.includes(chain)
160
+ );
161
+
162
+ evmChainsSupportedByWallet.forEach((network) => {
159
163
  /*
160
- * for contract wallets like Safe wallet, we should add only account for the
161
- * current connected blockchain not all of the supported blockchains
164
+ * EVM addresses are not case sensitive.
165
+ * Some wallets like Binance-chain return some letters in uppercase which produces bugs in our wallet state.
162
166
  */
163
167
  addAccount(network, address.toLowerCase());
164
- } else {
165
- /*
166
- * all evm chains are not supported in wallets, so we are adding
167
- * only to those that are supported by wallet.
168
- */
169
- const evmChainsSupportedByWallet = supportedBlockchains.filter(
170
- (chain) => evmBasedChains.includes(chain)
171
- );
172
-
173
- evmChainsSupportedByWallet.forEach((network) => {
174
- /*
175
- * EVM addresses are not case sensitive.
176
- * Some wallets like Binance-chain return some letters in uppercase which produces bugs in our wallet state.
177
- */
178
- addAccount(network, address.toLowerCase());
179
- });
180
- }
168
+ });
181
169
  } else {
182
170
  addAccount(network, address);
183
171
  }
@@ -186,10 +174,10 @@ export function prepareAccountsForWalletStore(
186
174
  return result;
187
175
  }
188
176
 
189
- export function getRequiredChains(quote: BestRouteResponse | null) {
177
+ export function getRequiredChains(route: BestRouteResponse | null) {
190
178
  const wallets: string[] = [];
191
179
 
192
- quote?.result?.swaps.forEach((swap) => {
180
+ route?.result?.swaps.forEach((swap) => {
193
181
  const currentStepFromBlockchain = swap.from.blockchain;
194
182
  const currentStepToBlockchain = swap.to.blockchain;
195
183
  if (!wallets.includes(currentStepFromBlockchain)) {
@@ -1,4 +0,0 @@
1
- import type { PropTypes } from './NoResult.types';
2
- import React from 'react';
3
- export declare function NoResult(props: PropTypes): React.JSX.Element;
4
- //# sourceMappingURL=NoResult.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NoResult.d.ts","sourceRoot":"","sources":["../../../src/components/NoResult/NoResult.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAUlD,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,qBA2DxC"}
@@ -1,4 +0,0 @@
1
- import type { Info } from './NoResult.types';
2
- import { type NoResultError, type QuoteRequestFailed } from '../../types';
3
- export declare function makeInfo(error: NoResultError | QuoteRequestFailed | null, disabledLiquiditySources: string[], toggleAllLiquiditySources: (shouldReset: boolean) => void, refetchQuote: () => void): Info;
4
- //# sourceMappingURL=NoResult.helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NoResult.helpers.d.ts","sourceRoot":"","sources":["../../../src/components/NoResult/NoResult.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAK7C,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAErB,wBAAgB,QAAQ,CACtB,KAAK,EAAE,aAAa,GAAG,kBAAkB,GAAG,IAAI,EAChD,wBAAwB,EAAE,MAAM,EAAE,EAClC,yBAAyB,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,EACzD,YAAY,EAAE,MAAM,IAAI,GACvB,IAAI,CA0CN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NoResult.types.d.ts","sourceRoot":"","sources":["../../../src/components/NoResult/NoResult.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,KAAK,EAAE,aAAa,GAAG,kBAAkB,GAAG,IAAI,CAAC;CAClD;AAED,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB"}
@@ -1,2 +0,0 @@
1
- export { NoResult } from './NoResult';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/NoResult/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { QuoteProps } from './Quote.types';
2
- import React from 'react';
3
- export declare function Quote(props: QuoteProps): React.JSX.Element;
4
- //# sourceMappingURL=Quote.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Quote.d.ts","sourceRoot":"","sources":["../../../src/components/Quote/Quote.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAkBhD,OAAO,KAA4C,MAAM,OAAO,CAAC;AAoCjE,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,qBAkStC"}