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

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 (197) hide show
  1. package/dist/components/ConfirmWalletsModal/ConfirmWallets.helpers.d.ts +1 -3
  2. package/dist/components/ConfirmWalletsModal/ConfirmWallets.helpers.d.ts.map +1 -1
  3. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
  4. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.types.d.ts +1 -1
  5. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.types.d.ts.map +1 -1
  6. package/dist/components/NoResult/NoResult.d.ts +4 -0
  7. package/dist/components/NoResult/NoResult.d.ts.map +1 -0
  8. package/dist/components/NoResult/NoResult.helpers.d.ts +4 -0
  9. package/dist/components/NoResult/NoResult.helpers.d.ts.map +1 -0
  10. package/dist/components/{NoRoutes/NoRoutes.styles.d.ts → NoResult/NoResult.styles.d.ts} +1 -1
  11. package/dist/components/{NoRoutes/NoRoutes.styles.d.ts.map → NoResult/NoResult.styles.d.ts.map} +1 -1
  12. package/dist/components/{NoRoutes/NoRoutes.types.d.ts → NoResult/NoResult.types.d.ts} +3 -3
  13. package/dist/components/NoResult/NoResult.types.d.ts.map +1 -0
  14. package/dist/components/NoResult/index.d.ts +2 -0
  15. package/dist/components/NoResult/index.d.ts.map +1 -0
  16. package/dist/components/Quote/Quote.d.ts +4 -0
  17. package/dist/components/Quote/Quote.d.ts.map +1 -0
  18. package/dist/components/Quote/Quote.styles.d.ts +1429 -0
  19. package/dist/components/Quote/Quote.styles.d.ts.map +1 -0
  20. package/dist/components/Quote/Quote.types.d.ts +22 -0
  21. package/dist/components/Quote/Quote.types.d.ts.map +1 -0
  22. package/dist/components/Quote/QuoteSkeleton.d.ts +4 -0
  23. package/dist/components/Quote/QuoteSkeleton.d.ts.map +1 -0
  24. package/dist/components/Quote/QuoteSkeleton.styles.d.ts +319 -0
  25. package/dist/components/Quote/QuoteSkeleton.styles.d.ts.map +1 -0
  26. package/dist/components/Quote/QuoteSkeleton.types.d.ts +6 -0
  27. package/dist/components/Quote/QuoteSkeleton.types.d.ts.map +1 -0
  28. package/dist/components/Quote/QuoteSummary.d.ts +11 -0
  29. package/dist/components/Quote/QuoteSummary.d.ts.map +1 -0
  30. package/dist/components/Quote/QuoteSummary.styles.d.ts +158 -0
  31. package/dist/components/Quote/QuoteSummary.styles.d.ts.map +1 -0
  32. package/dist/components/Quote/index.d.ts +4 -0
  33. package/dist/components/Quote/index.d.ts.map +1 -0
  34. package/dist/components/QuoteWarningsAndErrors/HighValueLossWarningModal.d.ts +11 -0
  35. package/dist/components/QuoteWarningsAndErrors/HighValueLossWarningModal.d.ts.map +1 -0
  36. package/dist/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.d.ts +4 -0
  37. package/dist/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.d.ts.map +1 -0
  38. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts +4 -0
  39. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts.map +1 -0
  40. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts +9 -0
  41. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts.map +1 -0
  42. package/dist/components/{RouteErrors/RouteErrors.styles.d.ts → QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts} +1 -1
  43. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts.map +1 -0
  44. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts +22 -0
  45. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts.map +1 -0
  46. package/dist/components/QuoteWarningsAndErrors/SlippageWariningModal.d.ts +11 -0
  47. package/dist/components/QuoteWarningsAndErrors/SlippageWariningModal.d.ts.map +1 -0
  48. package/dist/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.d.ts +11 -0
  49. package/dist/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.d.ts.map +1 -0
  50. package/dist/components/QuoteWarningsAndErrors/index.d.ts +2 -0
  51. package/dist/components/QuoteWarningsAndErrors/index.d.ts.map +1 -0
  52. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  53. package/dist/components/WidgetEvents.d.ts.map +1 -1
  54. package/dist/constants/errors.d.ts +4 -4
  55. package/dist/constants/errors.d.ts.map +1 -1
  56. package/dist/constants/messages.d.ts +1 -1
  57. package/dist/constants/warnings.d.ts +2 -2
  58. package/dist/constants/warnings.d.ts.map +1 -1
  59. package/dist/containers/QuoteInfo/QuoteInfo.d.ts +4 -0
  60. package/dist/containers/QuoteInfo/QuoteInfo.d.ts.map +1 -0
  61. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts +472 -0
  62. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts.map +1 -0
  63. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts +17 -0
  64. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts.map +1 -0
  65. package/dist/containers/QuoteInfo/index.d.ts +2 -0
  66. package/dist/containers/QuoteInfo/index.d.ts.map +1 -0
  67. package/dist/hooks/useConfirmSwap/index.d.ts +2 -0
  68. package/dist/hooks/useConfirmSwap/index.d.ts.map +1 -0
  69. package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts +3 -0
  70. package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts.map +1 -0
  71. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts +16 -0
  72. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts.map +1 -0
  73. package/dist/hooks/{useConfirmSwap.d.ts → useConfirmSwap/useConfirmSwap.types.d.ts} +5 -7
  74. package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts.map +1 -0
  75. package/dist/hooks/{useFetchBestRoute.d.ts → useFetchQuote.d.ts} +3 -3
  76. package/dist/hooks/useFetchQuote.d.ts.map +1 -0
  77. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts +2 -2
  78. package/dist/hooks/useSwapInput.d.ts +4 -2
  79. package/dist/hooks/useSwapInput.d.ts.map +1 -1
  80. package/dist/index.js +1 -1
  81. package/dist/index.js.map +4 -4
  82. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  83. package/dist/pages/Home.d.ts.map +1 -1
  84. package/dist/store/app.d.ts +2 -2
  85. package/dist/store/{bestRoute.d.ts → quote.d.ts} +25 -20
  86. package/dist/store/quote.d.ts.map +1 -0
  87. package/dist/types/index.d.ts +1 -1
  88. package/dist/types/index.d.ts.map +1 -1
  89. package/dist/types/quote.d.ts +82 -0
  90. package/dist/types/quote.d.ts.map +1 -0
  91. package/dist/utils/numbers.d.ts +1 -1
  92. package/dist/utils/numbers.d.ts.map +1 -1
  93. package/dist/utils/{routing.d.ts → quote.d.ts} +16 -12
  94. package/dist/utils/quote.d.ts.map +1 -0
  95. package/dist/utils/settings.d.ts +1 -1
  96. package/dist/utils/swap.d.ts +22 -20
  97. package/dist/utils/swap.d.ts.map +1 -1
  98. package/dist/utils/wallets.d.ts +1 -1
  99. package/package.json +3 -3
  100. package/src/components/BlockchainsSection/BlockchainsSection.tsx +3 -3
  101. package/src/components/ConfirmWalletsModal/ConfirmWallets.helpers.ts +2 -64
  102. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +23 -26
  103. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.types.ts +1 -1
  104. package/src/components/LoadingSwapDetails/LoadingSwapDetails.styles.ts +3 -3
  105. package/src/components/LoadingSwapDetails/LoadingSwapDetails.tsx +6 -6
  106. package/src/components/{NoRoutes/NoRoutes.helper.ts → NoResult/NoResult.helpers.ts} +16 -9
  107. package/src/components/{NoRoutes/NoRoutes.styles.ts → NoResult/NoResult.styles.ts} +2 -0
  108. package/src/components/{NoRoutes/NoRoutes.tsx → NoResult/NoResult.tsx} +7 -12
  109. package/src/components/{NoRoutes/NoRoutes.types.ts → NoResult/NoResult.types.ts} +3 -2
  110. package/src/components/NoResult/index.ts +1 -0
  111. package/src/components/Quote/Quote.styles.ts +212 -0
  112. package/src/components/Quote/Quote.tsx +347 -0
  113. package/src/components/Quote/Quote.types.ts +16 -0
  114. package/src/components/Quote/QuoteSkeleton.styles.ts +110 -0
  115. package/src/components/Quote/QuoteSkeleton.tsx +108 -0
  116. package/src/components/Quote/QuoteSkeleton.types.ts +5 -0
  117. package/src/components/Quote/QuoteSummary.styles.ts +15 -0
  118. package/src/components/Quote/QuoteSummary.tsx +46 -0
  119. package/src/components/Quote/index.ts +3 -0
  120. package/src/components/QuoteWarningsAndErrors/HighValueLossWarningModal.tsx +107 -0
  121. package/src/components/{RouteErrors/RouteErrorsModalItem.tsx → QuoteWarningsAndErrors/QuoteErrorsModalItem.tsx} +3 -3
  122. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.ts +67 -0
  123. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.tsx +103 -0
  124. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.ts +24 -0
  125. package/src/components/QuoteWarningsAndErrors/SlippageWariningModal.tsx +77 -0
  126. package/src/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.tsx +38 -0
  127. package/src/components/QuoteWarningsAndErrors/index.ts +1 -0
  128. package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +1 -1
  129. package/src/components/SwapDetails/SwapDetails.tsx +13 -16
  130. package/src/components/SwitchFromAndTo.tsx +2 -2
  131. package/src/components/UpdateUrl.tsx +12 -12
  132. package/src/components/WidgetEvents.tsx +2 -3
  133. package/src/constants/errors.ts +8 -10
  134. package/src/constants/messages.ts +1 -1
  135. package/src/constants/warnings.ts +7 -7
  136. package/src/containers/QuoteInfo/QuoteInfo.styles.ts +15 -0
  137. package/src/containers/QuoteInfo/QuoteInfo.tsx +97 -0
  138. package/src/containers/QuoteInfo/QuoteInfo.types.ts +17 -0
  139. package/src/containers/QuoteInfo/index.ts +1 -0
  140. package/src/hooks/useConfirmSwap/index.ts +1 -0
  141. package/src/hooks/useConfirmSwap/useConfirmSwap.helpers.ts +168 -0
  142. package/src/hooks/useConfirmSwap/useConfirmSwap.ts +136 -0
  143. package/src/hooks/useConfirmSwap/useConfirmSwap.types.ts +19 -0
  144. package/src/hooks/{useFetchBestRoute.ts → useFetchQuote.ts} +3 -3
  145. package/src/hooks/useNavigateBack.ts +3 -3
  146. package/src/hooks/useSwapInput.ts +57 -23
  147. package/src/hooks/useSyncStoresWithConfig.ts +2 -2
  148. package/src/pages/ConfirmSwapPage.tsx +58 -227
  149. package/src/pages/HistoryPage.tsx +1 -1
  150. package/src/pages/Home.tsx +52 -241
  151. package/src/pages/LanguagePage.tsx +1 -1
  152. package/src/pages/LiquiditySourcePage.tsx +1 -1
  153. package/src/pages/SelectBlockchainPage.tsx +3 -3
  154. package/src/pages/SelectSwapItemsPage.tsx +2 -2
  155. package/src/pages/SettingsPage.tsx +1 -1
  156. package/src/pages/ThemePage.tsx +1 -1
  157. package/src/pages/WalletsPage.tsx +1 -1
  158. package/src/store/{bestRoute.ts → quote.ts} +42 -38
  159. package/src/types/index.ts +1 -1
  160. package/src/types/quote.ts +107 -0
  161. package/src/utils/numbers.ts +1 -1
  162. package/src/utils/quote.ts +338 -0
  163. package/src/utils/swap.ts +99 -69
  164. package/src/utils/wallets.ts +2 -2
  165. package/dist/components/NoRoutes/NoRoutes.d.ts +0 -4
  166. package/dist/components/NoRoutes/NoRoutes.d.ts.map +0 -1
  167. package/dist/components/NoRoutes/NoRoutes.helper.d.ts +0 -3
  168. package/dist/components/NoRoutes/NoRoutes.helper.d.ts.map +0 -1
  169. package/dist/components/NoRoutes/NoRoutes.types.d.ts.map +0 -1
  170. package/dist/components/NoRoutes/index.d.ts +0 -2
  171. package/dist/components/NoRoutes/index.d.ts.map +0 -1
  172. package/dist/components/RouteErrors/RouteErrors.d.ts +0 -4
  173. package/dist/components/RouteErrors/RouteErrors.d.ts.map +0 -1
  174. package/dist/components/RouteErrors/RouteErrors.styles.d.ts.map +0 -1
  175. package/dist/components/RouteErrors/RouteErrors.types.d.ts +0 -24
  176. package/dist/components/RouteErrors/RouteErrors.types.d.ts.map +0 -1
  177. package/dist/components/RouteErrors/RouteErrorsModal.d.ts +0 -4
  178. package/dist/components/RouteErrors/RouteErrorsModal.d.ts.map +0 -1
  179. package/dist/components/RouteErrors/RouteErrorsModalItem.d.ts +0 -4
  180. package/dist/components/RouteErrors/RouteErrorsModalItem.d.ts.map +0 -1
  181. package/dist/components/RouteErrors/index.d.ts +0 -2
  182. package/dist/components/RouteErrors/index.d.ts.map +0 -1
  183. package/dist/hooks/useConfirmSwap.d.ts.map +0 -1
  184. package/dist/hooks/useFetchBestRoute.d.ts.map +0 -1
  185. package/dist/store/bestRoute.d.ts.map +0 -1
  186. package/dist/types/routing.d.ts +0 -65
  187. package/dist/types/routing.d.ts.map +0 -1
  188. package/dist/utils/routing.d.ts.map +0 -1
  189. package/src/components/NoRoutes/index.ts +0 -1
  190. package/src/components/RouteErrors/RouteErrors.tsx +0 -79
  191. package/src/components/RouteErrors/RouteErrors.types.ts +0 -29
  192. package/src/components/RouteErrors/RouteErrorsModal.tsx +0 -129
  193. package/src/components/RouteErrors/index.ts +0 -1
  194. package/src/hooks/useConfirmSwap.ts +0 -303
  195. package/src/types/routing.ts +0 -77
  196. package/src/utils/routing.ts +0 -321
  197. /package/src/components/{RouteErrors/RouteErrors.styles.ts → QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.ts} +0 -0
@@ -1,321 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-magic-numbers */
2
- import type { BestRouteEqualityParams, 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 {
20
- GAS_FEE_MAX_DECIMALS,
21
- GAS_FEE_MIN_DECIMALS,
22
- HIGHT_PRICE_IMPACT,
23
- LOW_PRICE_IMPACT,
24
- TOKEN_AMOUNT_MAX_DECIMALS,
25
- TOKEN_AMOUNT_MIN_DECIMALS,
26
- } from '../constants/routing';
27
-
28
- import { areEqual } from './common';
29
- import { findBlockchain, findToken } from './meta';
30
- import { numberToString } from './numbers';
31
-
32
- export function searchParamsToToken(
33
- tokens: Token[],
34
- searchParams: string | null,
35
- chain: BlockchainMeta | null
36
- ): Token | null {
37
- if (!chain) {
38
- return null;
39
- }
40
- return (
41
- tokens.find((token) => {
42
- const symbolAndAddress = searchParams?.split('--');
43
- if (symbolAndAddress?.length === 1) {
44
- return (
45
- token.symbol === symbolAndAddress[0] &&
46
- token.address === null &&
47
- token.blockchain === chain.name
48
- );
49
- }
50
- return (
51
- token.symbol === symbolAndAddress?.[0] &&
52
- token.address === symbolAndAddress?.[1] &&
53
- token.blockchain === chain.name
54
- );
55
- }) || null
56
- );
57
- }
58
-
59
- export function getBestRouteToTokenUsdPrice(
60
- bestRoute: BestRouteResponse | null
61
- ): number | null | undefined {
62
- return bestRoute?.result?.swaps[bestRoute?.result?.swaps.length - 1].to
63
- .usdPrice;
64
- }
65
-
66
- export function isNumberOfSwapsChanged(
67
- route1: BestRouteResponse,
68
- route2: BestRouteResponse
69
- ) {
70
- const route1Swaps = route1.result?.swaps || [];
71
- const route2Swaps = route2.result?.swaps || [];
72
- return route1Swaps.length !== route2Swaps.length;
73
- }
74
-
75
- export function isRouteSwappersUpdated(
76
- route1: BestRouteResponse,
77
- route2: BestRouteResponse
78
- ) {
79
- const route1Swappers =
80
- route1.result?.swaps.map((swap) => swap.swapperId) || [];
81
- const route2Swappers =
82
- route2.result?.swaps.map((swap) => swap.swapperId) || [];
83
- return !areEqual(route1Swappers, route2Swappers);
84
- }
85
-
86
- export function isRouteInternalCoinsUpdated(
87
- route1: BestRouteResponse,
88
- route2: BestRouteResponse
89
- ) {
90
- const route1InternalCoins =
91
- route1.result?.swaps.map((swap) => swap.to.symbol) || [];
92
- const route2InternalCoins =
93
- route2.result?.swaps.map((swap) => swap.to.symbol) || [];
94
- return !areEqual(route1InternalCoins, route2InternalCoins);
95
- }
96
-
97
- export function isRouteChanged(
98
- route1: BestRouteResponse,
99
- route2: BestRouteResponse
100
- ): boolean {
101
- return (
102
- isNumberOfSwapsChanged(route1, route2) ||
103
- isRouteSwappersUpdated(route1, route2) ||
104
- isRouteInternalCoinsUpdated(route1, route2)
105
- );
106
- }
107
-
108
- export function outToRatioHasWarning(
109
- fromUsdValue: BigNumber | null,
110
- outToInRatio: BigNumber | 0
111
- ) {
112
- return (
113
- (parseInt(outToInRatio?.toFixed(2) || '0') <= -10 &&
114
- (fromUsdValue === null || fromUsdValue.gte(new BigNumber(200)))) ||
115
- (parseInt(outToInRatio?.toFixed(2) || '0') <= -5 &&
116
- (fromUsdValue === null || fromUsdValue.gte(new BigNumber(1000))))
117
- );
118
- }
119
-
120
- export function getRequiredBalanceOfWallet(
121
- selectedWallet: Wallet,
122
- fee: SimulationValidationStatus[] | null
123
- ): SimulationAssetAndAmount[] | null {
124
- if (fee === null) {
125
- return null;
126
- }
127
- const relatedFeeStatus = fee
128
- ?.find((item) => item.blockchain === selectedWallet.chain)
129
- ?.wallets.find(
130
- (wallet) =>
131
- wallet.address?.toLowerCase() === selectedWallet.address.toLowerCase()
132
- );
133
- if (!relatedFeeStatus) {
134
- return null;
135
- }
136
- return relatedFeeStatus.requiredAssets;
137
- }
138
-
139
- export function isRouteParametersChanged(params: BestRouteEqualityParams) {
140
- if (params.store === 'bestRoute') {
141
- const { prevState, currentState } = params;
142
- return (
143
- !!currentState.fromToken &&
144
- !!currentState.toToken &&
145
- (prevState.fromBlockchain?.name !== currentState.fromBlockchain?.name ||
146
- prevState.toBlockchain?.name !== currentState.toBlockchain?.name ||
147
- prevState.fromToken?.symbol !== currentState.fromToken?.symbol ||
148
- prevState.toToken?.symbol !== currentState.toToken?.symbol ||
149
- prevState.fromToken?.blockchain !== prevState.fromToken?.blockchain ||
150
- prevState.toToken?.blockchain !== currentState.toToken?.blockchain ||
151
- prevState.fromToken?.address !== currentState.fromToken?.address ||
152
- prevState.toToken?.address !== currentState.toToken?.address ||
153
- prevState.inputAmount !== currentState.inputAmount)
154
- );
155
- } else if (params.store === 'settings') {
156
- const { prevState, currentState } = params;
157
- return (
158
- prevState.slippage !== currentState.slippage ||
159
- prevState.customSlippage !== currentState.customSlippage ||
160
- prevState.disabledLiquiditySources?.length !==
161
- currentState.disabledLiquiditySources?.length ||
162
- prevState.infiniteApprove ||
163
- currentState.infiniteApprove
164
- );
165
- }
166
- return false;
167
- }
168
-
169
- export function getFormattedBestRoute(
170
- bestRoute: BestRouteResponse | null
171
- ): BestRouteResponse | null {
172
- if (!bestRoute) {
173
- return null;
174
- }
175
-
176
- const formattedSwaps = (bestRoute.result?.swaps || []).map((swap) => ({
177
- ...swap,
178
- fromAmount: numberToString(
179
- swap.fromAmount,
180
- TOKEN_AMOUNT_MIN_DECIMALS,
181
- TOKEN_AMOUNT_MAX_DECIMALS
182
- ),
183
- toAmount: numberToString(
184
- swap.toAmount,
185
- TOKEN_AMOUNT_MIN_DECIMALS,
186
- TOKEN_AMOUNT_MAX_DECIMALS
187
- ),
188
- }));
189
-
190
- return {
191
- ...bestRoute,
192
- ...(bestRoute.result && {
193
- result: { ...bestRoute.result, swaps: formattedSwaps },
194
- }),
195
- };
196
- }
197
-
198
- export function getFormattedPendingSwap(pendingSwap: PendingSwap): PendingSwap {
199
- const formattedSteps = pendingSwap.steps.map((step) => ({
200
- ...step,
201
- feeInUsd: numberToString(
202
- step.feeInUsd,
203
- GAS_FEE_MIN_DECIMALS,
204
- GAS_FEE_MAX_DECIMALS
205
- ),
206
- outputAmount: numberToString(
207
- step.outputAmount,
208
- TOKEN_AMOUNT_MIN_DECIMALS,
209
- TOKEN_AMOUNT_MAX_DECIMALS
210
- ),
211
- expectedOutputAmountHumanReadable: numberToString(
212
- step.expectedOutputAmountHumanReadable,
213
- TOKEN_AMOUNT_MIN_DECIMALS,
214
- TOKEN_AMOUNT_MAX_DECIMALS
215
- ),
216
- }));
217
-
218
- return {
219
- ...pendingSwap,
220
- inputAmount: numberToString(
221
- pendingSwap.inputAmount,
222
- TOKEN_AMOUNT_MIN_DECIMALS,
223
- TOKEN_AMOUNT_MAX_DECIMALS
224
- ),
225
- steps: formattedSteps,
226
- };
227
- }
228
-
229
- //todo: refactor bestRoute store and add loadingStatus
230
- export const getBestRouteStatus = (loading: boolean, error: boolean) => {
231
- if (loading) {
232
- return 'loading';
233
- }
234
- if (error) {
235
- return 'failed';
236
- }
237
- return 'success';
238
- };
239
-
240
- export function getPriceImpactLevel(
241
- priceImpact: number
242
- ): PriceImpactWarningLevel {
243
- let warningLevel: PriceImpactWarningLevel = undefined;
244
- if (priceImpact <= LOW_PRICE_IMPACT && priceImpact > HIGHT_PRICE_IMPACT) {
245
- warningLevel = 'low';
246
- } else if (priceImpact <= HIGHT_PRICE_IMPACT) {
247
- warningLevel = 'high';
248
- }
249
-
250
- return warningLevel;
251
- }
252
-
253
- export function findCommonTokens<T extends Asset[], R extends Asset[]>(
254
- listA: T,
255
- listB: R
256
- ) {
257
- const tokenToString = (token: Asset): string =>
258
- `${token.symbol}-${token.blockchain}-${token.address ?? ''}`;
259
-
260
- const set = new Set();
261
-
262
- listA.forEach((token) => set.add(tokenToString(token)));
263
-
264
- return listB.filter((token) => set.has(tokenToString(token))) as R;
265
- }
266
-
267
- export function createRetryRoute(
268
- pendingSwap: PendingSwap,
269
- blockchains: BlockchainMeta[],
270
- tokens: Token[]
271
- ): {
272
- fromBlockchain: BlockchainMeta | null;
273
- fromToken: Token | null;
274
- toBlockchain: BlockchainMeta | null;
275
- toToken: Token | null;
276
- inputAmount: string;
277
- } {
278
- const firstStep = pendingSwap.steps[0];
279
- const lastStep = pendingSwap.steps[pendingSwap.steps.length - 1];
280
- const lastSuccessfulStep = getLastSuccessfulStep(pendingSwap.steps);
281
-
282
- const toToken = {
283
- blockchain: lastStep.toBlockchain,
284
- symbol: lastStep.toSymbol,
285
- address: lastStep.toSymbolAddress,
286
- };
287
-
288
- const fromBlockchainMeta = findBlockchain(
289
- lastSuccessfulStep
290
- ? lastSuccessfulStep.toBlockchain
291
- : firstStep.fromBlockchain,
292
- blockchains
293
- );
294
- const toBlockchainMeta = findBlockchain(lastStep.toBlockchain, blockchains);
295
- const fromTokenMeta = findToken(
296
- lastSuccessfulStep
297
- ? {
298
- blockchain: fromBlockchainMeta?.name ?? '',
299
- symbol: lastSuccessfulStep.toSymbol,
300
- address: lastSuccessfulStep.toSymbolAddress,
301
- }
302
- : {
303
- blockchain: fromBlockchainMeta?.name ?? '',
304
- symbol: firstStep.fromSymbol,
305
- address: firstStep.fromSymbolAddress,
306
- },
307
- tokens
308
- );
309
- const toTokenMeta = findToken(toToken, tokens);
310
- const inputAmount = lastSuccessfulStep
311
- ? lastSuccessfulStep.outputAmount ?? ''
312
- : pendingSwap.inputAmount;
313
-
314
- return {
315
- fromBlockchain: fromBlockchainMeta,
316
- fromToken: fromTokenMeta,
317
- toBlockchain: toBlockchainMeta,
318
- toToken: toTokenMeta,
319
- inputAmount,
320
- };
321
- }