@rango-dev/widget-embedded 0.1.10-next.80 → 0.1.10-next.82

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 (105) hide show
  1. package/dist/components/AppRouter.d.ts.map +1 -1
  2. package/dist/components/AppRoutes.d.ts.map +1 -1
  3. package/dist/components/ChangeSlippageButton.d.ts +2 -0
  4. package/dist/components/ChangeSlippageButton.d.ts.map +1 -0
  5. package/dist/components/ConfirmSwapErrors.d.ts +3 -0
  6. package/dist/components/ConfirmSwapErrors.d.ts.map +1 -0
  7. package/dist/components/ConfirmSwapWarnings.d.ts +3 -0
  8. package/dist/components/ConfirmSwapWarnings.d.ts.map +1 -0
  9. package/dist/components/Layout.d.ts.map +1 -1
  10. package/dist/components/UpdateUrl.d.ts.map +1 -1
  11. package/dist/components/warnings/BalanceWarnings.d.ts +6 -0
  12. package/dist/components/warnings/BalanceWarnings.d.ts.map +1 -0
  13. package/dist/components/warnings/ConfirmSwapExtraMessages.d.ts +6 -0
  14. package/dist/components/warnings/ConfirmSwapExtraMessages.d.ts.map +1 -0
  15. package/dist/components/warnings/HighSlippageWarning.d.ts +6 -0
  16. package/dist/components/warnings/HighSlippageWarning.d.ts.map +1 -0
  17. package/dist/components/warnings/MinRequiredSlippage.d.ts +6 -0
  18. package/dist/components/warnings/MinRequiredSlippage.d.ts.map +1 -0
  19. package/dist/constants/swapSettings.d.ts +6 -0
  20. package/dist/constants/swapSettings.d.ts.map +1 -0
  21. package/dist/hooks/useNavigateBack.d.ts +4 -0
  22. package/dist/hooks/useNavigateBack.d.ts.map +1 -0
  23. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  24. package/dist/pages/ConfirmWalletsPage.d.ts +0 -5
  25. package/dist/pages/ConfirmWalletsPage.d.ts.map +1 -1
  26. package/dist/pages/HistoryPage.d.ts.map +1 -1
  27. package/dist/pages/Home.d.ts.map +1 -1
  28. package/dist/pages/LiquiditySourcesPage.d.ts.map +1 -1
  29. package/dist/pages/SelectChainPage.d.ts.map +1 -1
  30. package/dist/pages/SelectTokenPage.d.ts.map +1 -1
  31. package/dist/pages/SettingsPage.d.ts.map +1 -1
  32. package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
  33. package/dist/pages/WalletsPage.d.ts.map +1 -1
  34. package/dist/store/bestRoute.d.ts +1 -0
  35. package/dist/store/bestRoute.d.ts.map +1 -1
  36. package/dist/store/confirmSwap.d.ts +35 -0
  37. package/dist/store/confirmSwap.d.ts.map +1 -0
  38. package/dist/store/settings.d.ts.map +1 -1
  39. package/dist/store/ui.d.ts +2 -0
  40. package/dist/store/ui.d.ts.map +1 -0
  41. package/dist/store/wallets.d.ts.map +1 -1
  42. package/dist/types/index.d.ts +2 -0
  43. package/dist/types/index.d.ts.map +1 -0
  44. package/dist/types/swap.d.ts +11 -0
  45. package/dist/types/swap.d.ts.map +1 -0
  46. package/dist/utils/common.d.ts +1 -0
  47. package/dist/utils/common.d.ts.map +1 -1
  48. package/dist/utils/numbers.d.ts +5 -0
  49. package/dist/utils/numbers.d.ts.map +1 -1
  50. package/dist/utils/routing.d.ts +5 -7
  51. package/dist/utils/routing.d.ts.map +1 -1
  52. package/dist/utils/swap.d.ts +31 -3
  53. package/dist/utils/swap.d.ts.map +1 -1
  54. package/dist/utils/wallets.d.ts +2 -3
  55. package/dist/utils/wallets.d.ts.map +1 -1
  56. package/dist/widget-embedded.cjs.development.js +1814 -1327
  57. package/dist/widget-embedded.cjs.development.js.map +1 -1
  58. package/dist/widget-embedded.cjs.production.min.js +1814 -1327
  59. package/dist/widget-embedded.cjs.production.min.js.map +1 -1
  60. package/dist/widget-embedded.esm.js +1818 -1331
  61. package/dist/widget-embedded.esm.js.map +1 -1
  62. package/package.json +1 -1
  63. package/src/components/AppRouter.tsx +38 -3
  64. package/src/components/AppRoutes.tsx +8 -2
  65. package/src/components/ChangeSlippageButton.tsx +23 -0
  66. package/src/components/ConfirmSwapErrors.tsx +38 -0
  67. package/src/components/ConfirmSwapWarnings.tsx +38 -0
  68. package/src/components/Layout.tsx +22 -6
  69. package/src/components/UpdateUrl.tsx +100 -18
  70. package/src/components/warnings/BalanceWarnings.tsx +16 -0
  71. package/src/components/warnings/ConfirmSwapExtraMessages.tsx +14 -0
  72. package/src/components/warnings/HighSlippageWarning.tsx +21 -0
  73. package/src/components/warnings/MinRequiredSlippage.tsx +18 -0
  74. package/src/constants/navigationRoutes.ts +2 -2
  75. package/src/constants/swapSettings.ts +9 -0
  76. package/src/hooks/useNavigateBack.ts +37 -0
  77. package/src/pages/ConfirmSwapPage.tsx +30 -8
  78. package/src/pages/ConfirmWalletsPage.tsx +30 -17
  79. package/src/pages/HistoryPage.tsx +4 -4
  80. package/src/pages/Home.tsx +79 -36
  81. package/src/pages/LiquiditySourcesPage.tsx +11 -8
  82. package/src/pages/SelectChainPage.tsx +9 -28
  83. package/src/pages/SelectTokenPage.tsx +38 -27
  84. package/src/pages/SettingsPage.tsx +26 -11
  85. package/src/pages/SwapDetailsPage.tsx +9 -3
  86. package/src/pages/WalletsPage.tsx +37 -22
  87. package/src/store/bestRoute.ts +147 -28
  88. package/src/store/confirmSwap.ts +327 -0
  89. package/src/store/settings.ts +44 -32
  90. package/src/store/ui.ts +15 -0
  91. package/src/store/wallets.ts +93 -80
  92. package/src/swapBox.tsx +5 -5
  93. package/src/types/index.ts +1 -0
  94. package/src/types/swap.ts +13 -0
  95. package/src/utils/common.ts +4 -0
  96. package/src/utils/numbers.ts +17 -0
  97. package/src/utils/routing.ts +28 -77
  98. package/src/utils/swap.ts +445 -67
  99. package/src/utils/wallets.ts +4 -19
  100. package/dist/hooks/useBestRoute.d.ts +0 -8
  101. package/dist/hooks/useBestRoute.d.ts.map +0 -1
  102. package/dist/hooks/useConfirmSwap.d.ts +0 -2
  103. package/dist/hooks/useConfirmSwap.d.ts.map +0 -1
  104. package/src/hooks/useBestRoute.ts +0 -70
  105. package/src/hooks/useConfirmSwap.ts +0 -268
@@ -1 +1 @@
1
- {"version":3,"file":"widget-embedded.cjs.production.min.js","sources":["../src/constants/numbers.ts","../src/utils/numbers.ts","../src/utils/routing.ts","../src/store/selectors.ts","../src/store/bestRoute.ts","../src/services/httpService.ts","../src/utils/common.ts","../src/store/meta.ts","../src/constants/searchParams.ts","../src/components/UpdateUrl.tsx","../src/components/AppRouter.tsx","../src/utils/wallets.ts","../src/store/wallets.ts","../src/constants/navigationRoutes.ts","../src/store/settings.ts","../src/hooks/useConfirmSwap.ts","../src/pages/ConfirmSwapPage.tsx","../src/pages/HistoryPage.tsx","../src/components/HeaderButtons.tsx","../src/components/Header.tsx","../src/components/TokenInfo.tsx","../src/components/BottomLogo.tsx","../src/components/SwitchFromAndTo.tsx","../src/components/Footer.tsx","../src/hooks/useBestRoute.ts","../src/constants/errors.ts","../src/utils/swap.ts","../src/pages/Home.tsx","../src/pages/LiquiditySourcesPage.tsx","../src/pages/SelectChainPage.tsx","../src/pages/SelectTokenPage.tsx","../src/pages/SettingsPage.tsx","../src/pages/WalletsPage.tsx","../src/pages/ConfirmWalletsPage.tsx","../src/mockData/pendingSwap.ts","../src/pages/SwapDetailsPage.tsx","../src/components/AppRoutes.tsx","../src/components/Layout.tsx","../src/globalStyles.ts","../src/hooks/useTheme.ts","../src/lib.tsx"],"sourcesContent":["import BigNumber from 'bignumber.js';\n\nexport const ZERO = new BigNumber(0);\n","import { BigNumber } from 'bignumber.js';\n\nexport const percentToString = (p: number, fractions = 0): string => (p * 100).toFixed(fractions);\nexport const secondsToString = (s: number): string => {\n const seconds = (s % 60).toString().padStart(2, '0');\n const minutes = parseInt((s / 60).toString())\n .toString()\n .padStart(2, '0');\n return `${minutes}:${seconds}`;\n};\n\nexport const numberToString = (\n number: BigNumber | string | null,\n minDecimals: number | null = null,\n maxDecimals: number | null = null,\n): string => {\n if (number === null) return '';\n if (number === '') return '';\n const n = new BigNumber(number);\n const roundingMode = 1;\n let maxI = 1000;\n for (let i = 0; i < 60; i++) {\n if (new BigNumber(n.toFixed(i, roundingMode)).eq(n)) {\n maxI = i;\n break;\n }\n }\n\n if (n.gte(10000)) return n.toFormat(0, roundingMode);\n if (n.gte(1000))\n return n.toFormat(\n Math.min(maxI, Math.min(maxDecimals || 100, Math.max(minDecimals || 0, 1))),\n roundingMode,\n );\n if (n.gte(100))\n return n.toFormat(\n Math.min(maxI, Math.min(maxDecimals || 100, Math.max(minDecimals || 0, 1))),\n roundingMode,\n );\n if (n.gte(1))\n return n.toFormat(\n Math.min(maxI, Math.min(maxDecimals || 100, Math.max(minDecimals || 0, 2))),\n roundingMode,\n );\n if (n.gte(0.01))\n return n.toFormat(\n Math.min(maxI, Math.min(maxDecimals || 100, Math.max(minDecimals || 0, 4))),\n roundingMode,\n );\n for (let i = minDecimals || 4; i < 17; i++)\n if (n.gte(Math.pow(10, -i)))\n return n.toFormat(\n Math.min(maxI, Math.min(maxDecimals || 100, Math.max(minDecimals || 0, i))),\n roundingMode,\n );\n if (n.isEqualTo(0)) return '0';\n\n return n.toFormat(\n Math.min(maxI, Math.min(maxDecimals || 100, Math.max(minDecimals || 0, 8))),\n roundingMode,\n );\n};\n\nexport const convertBigNumberToHex = (value: BigNumber, decimals: number): string => {\n return '0x' + value.shiftedBy(decimals).toString(16);\n};\n\nexport const uint8ArrayToHex = (buffer: Uint8Array): string => {\n // buffer is an ArrayBuffer\n return [...buffer].map((x) => x.toString(16).padStart(2, '0')).join('');\n};\n\nexport function dollarToConciseString(num: number | undefined): string {\n if (!num) return '-';\n if (num < 1) return ' < 1$';\n if (num < 1000) return numberToString(new BigNumber(num)) + '$';\n if (num < 10_000) return parseInt((num / 100).toString()) / 10 + 'K';\n if (num < 1_000_000) return parseInt((num / 1000).toString()) + 'K';\n if (num < 100_000_000) return parseInt((num / 100000).toString()) / 10 + 'M';\n return parseInt((num / 1000000).toString()) + 'M';\n}\n\nexport function removeExtraDecimals(num: string, maxDecimals: number): string {\n try {\n if (!num.includes('.')) return num;\n const [b, f] = num.split('.');\n if (f && f.length > maxDecimals) {\n return `${b}.${f.substring(0, maxDecimals)}`;\n }\n return num;\n } catch (e) {\n return num;\n }\n}\n","import {\n SimulationAssetAndAmount,\n SimulationValidationStatus,\n} from '@rango-dev/ui/dist/types/swaps';\nimport BigNumber from 'bignumber.js';\nimport { BestRouteResponse } from 'rango-sdk';\nimport { ZERO } from '../constants/numbers';\nimport { numberToString } from './numbers';\nimport { SelectedWallet } from './wallets';\n\nexport const getBestRouteToTokenUsdPrice = (\n bestRoute: BestRouteResponse | null,\n): number | null | undefined =>\n bestRoute?.result?.swaps[bestRoute?.result?.swaps.length - 1].to.usdPrice;\n\nexport type RouteChangeStatus = {\n isChanged: boolean;\n warningMessage?: string;\n};\n\nexport const compareRoutes = (\n route1: BestRouteResponse,\n route2: BestRouteResponse,\n inputAmount: string,\n fromTokenUsdPrice: number | null,\n toTokenUsdPrice: number | null,\n): RouteChangeStatus => {\n let outUsdValue: BigNumber = (\n new BigNumber(route2.result?.outputAmount || '0') || ZERO\n ).multipliedBy(toTokenUsdPrice || 0);\n if (outUsdValue.isNaN()) outUsdValue = ZERO;\n let inUsdValue: BigNumber = new BigNumber(inputAmount || '0').multipliedBy(\n fromTokenUsdPrice || 0,\n );\n if (inUsdValue.isNaN()) inUsdValue = ZERO;\n const outToInRatio =\n inUsdValue === null || inUsdValue.lte(ZERO)\n ? 0\n : outUsdValue === null || outUsdValue.lte(ZERO)\n ? 0\n : outUsdValue.div(inUsdValue).minus(1).multipliedBy(100);\n const disableSwapButton =\n (parseInt(outToInRatio?.toFixed(2) || '0') <= -10 &&\n (inUsdValue === null || inUsdValue.gte(new BigNumber(400)))) ||\n (parseInt(outToInRatio?.toFixed(2) || '0') <= -5 &&\n (inUsdValue === null || inUsdValue.gte(new BigNumber(1000))));\n\n if (disableSwapButton) {\n return {\n isChanged: true,\n warningMessage: 'Route updated and price impact is too high, try again later!',\n };\n }\n\n const out1 = route1.result?.outputAmount || null;\n const out2 = route2.result?.outputAmount || null;\n if (!!out1 && !!out2) {\n const changePercent = new BigNumber(out2).div(new BigNumber(out1)).minus(1).multipliedBy(100);\n if (changePercent.toNumber() <= -1) {\n return {\n isChanged: true,\n warningMessage: `Output amount changed to ${numberToString(out2)} \n (${numberToString(changePercent, null, 2)}% change).`,\n };\n }\n }\n const route1Swaps = route1.result?.swaps || [];\n const route2Swaps = route2.result?.swaps || [];\n if (route1Swaps.length !== route2Swaps.length)\n return { isChanged: true, warningMessage: 'Route has been updated.' };\n else {\n for (let i = 0; i < route1Swaps.length; i++) {\n if (route1Swaps[i].swapperId !== route2Swaps[i].swapperId)\n return { isChanged: true, warningMessage: 'Route swappers has been updated.' };\n else if (route1Swaps[i].to.symbol !== route2Swaps[i].to.symbol)\n return {\n isChanged: true,\n warningMessage: 'Route internal coins has been updated.',\n };\n }\n }\n return { isChanged: false };\n};\n\nexport const getOutToInRatio = (fromUsdValue: BigNumber | null, toUsdValue: BigNumber | null) =>\n fromUsdValue === null || fromUsdValue.lte(ZERO)\n ? 0\n : toUsdValue === null || toUsdValue.lte(ZERO)\n ? 0\n : toUsdValue.div(fromUsdValue).minus(1).multipliedBy(100);\n\nexport const outToRatioHasWarning = (fromUsdValue: BigNumber | null, outToInRatio: BigNumber | 0) =>\n (parseInt(outToInRatio?.toFixed(2) || '0') <= -10 &&\n (fromUsdValue === null || fromUsdValue.gte(new BigNumber(200)))) ||\n (parseInt(outToInRatio?.toFixed(2) || '0') <= -5 &&\n (fromUsdValue === null || fromUsdValue.gte(new BigNumber(1000))));\n\nexport const getRequiredBalanceOfWallet = (\n wallet: SelectedWallet,\n fee: SimulationValidationStatus[] | null,\n): SimulationAssetAndAmount[] | null => {\n if (fee === null) return null;\n const relatedFeeStatus = fee\n ?.find((item) => item.blockchain === wallet.chain)\n ?.wallets.find((it) => it.address?.toLowerCase() === wallet.address.toLowerCase());\n if (!relatedFeeStatus) return null;\n return relatedFeeStatus.requiredAssets;\n};\n","import { StoreApi, UseBoundStore } from 'zustand';\n\ntype State = object;\n\ntype WithSelectors<S> = S extends { getState: () => infer T }\n ? S & { use: { [K in keyof T]: () => T[K] } }\n : never;\n\nconst createSelectors = <S extends UseBoundStore<StoreApi<State>>>(_store: S) => {\n let store = _store as WithSelectors<typeof _store>;\n store.use = {};\n for (let k of Object.keys(store.getState())) {\n (store.use as any)[k] = () => store((s) => s[k as keyof typeof s]);\n }\n\n return store;\n};\n\nexport default createSelectors;\n","import { BestRouteResponse, BlockchainMeta } from 'rango-sdk';\nimport { Token } from 'rango-sdk/lib';\nimport { create } from 'zustand';\nimport { immer } from 'zustand/middleware/immer';\nimport BigNumber from 'bignumber.js';\nimport { ZERO } from '../constants/numbers';\nimport { getBestRouteToTokenUsdPrice } from '../utils/routing';\nimport createSelectors from './selectors';\n\nconst getUsdValue = (token: Token | null, amount: string) =>\n new BigNumber(amount || ZERO).multipliedBy(token?.usdPrice || 0);\n\ninterface RouteState {\n fromChain: BlockchainMeta | null;\n toChain: BlockchainMeta | null;\n inputAmount: string;\n inputUsdValue: BigNumber;\n outputAmount: BigNumber | null;\n outputUsdValue: BigNumber;\n fromToken: Token | null;\n toToken: Token | null;\n setFromChain: (chain: BlockchainMeta | null) => void;\n setToChain: (chian: BlockchainMeta | null) => void;\n setFromToken: (token: Token | null) => void;\n setToToken: (token: Token | null) => void;\n setInputAmount: (amount: string) => void;\n bestRoute: BestRouteResponse | null;\n setBestRoute: (bestRoute: BestRouteResponse | null) => void;\n}\n\nexport const useBestRouteStore = createSelectors(\n create<RouteState>()(\n immer((set) => ({\n fromChain: null,\n fromToken: null,\n inputAmount: '',\n outputAmount: null,\n inputUsdValue: new BigNumber(0),\n outputUsdValue: new BigNumber(0),\n toChain: null,\n toToken: null,\n bestRoute: null,\n setBestRoute: (bestRoute) =>\n set((state) => {\n state.bestRoute = bestRoute;\n if (!!bestRoute) {\n const outputAmount = !!bestRoute.result?.outputAmount\n ? new BigNumber(bestRoute.result?.outputAmount)\n : null;\n state.outputAmount = outputAmount;\n state.outputUsdValue = new BigNumber(outputAmount || ZERO).multipliedBy(\n getBestRouteToTokenUsdPrice(bestRoute) || state.toToken?.usdPrice || 0,\n );\n }\n }),\n setFromChain: (chain) =>\n set((state) => {\n state.fromChain = chain;\n }),\n setFromToken: (token) =>\n set((state) => {\n state.fromToken = token;\n if (!!state.inputAmount)\n state.inputUsdValue = getUsdValue(state.fromToken!, state.inputAmount);\n }),\n setToChain: (chain) =>\n set((state) => {\n state.toChain = chain;\n }),\n setToToken: (token) =>\n set((state) => {\n state.toToken = token;\n }),\n setInputAmount: (amount) =>\n set((state) => {\n state.inputAmount = amount;\n if (!!state.fromToken)\n state.inputUsdValue = getUsdValue(state.fromToken, state.inputAmount);\n }),\n })),\n ),\n);\n","import { RangoClient } from 'rango-sdk';\n\nexport const httpService = new RangoClient(process.env.REACT_API_KEY as string);\n","export function removeDuplicateFrom<T>(array: T[]): T[] {\n return Array.from(new Set(array));\n}\n","import { create } from 'zustand';\nimport { MetaResponse } from 'rango-sdk';\nimport { httpService } from '../services/httpService';\nimport createSelectors from './selectors';\nimport { removeDuplicateFrom } from '../utils/common';\n\nexport type LoadingStatus = 'loading' | 'success' | 'failed';\n\nexport interface MetaState {\n meta: MetaResponse;\n loadingStatus: LoadingStatus;\n fetchMeta: () => Promise<void>;\n}\n\nexport const useMetaStore = createSelectors(\n create<MetaState>()((set) => ({\n meta: { blockchains: [], popularTokens: [], swappers: [], tokens: [] },\n loadingStatus: 'loading',\n fetchMeta: async () => {\n try {\n const response = await httpService.getAllMetadata();\n const chainThatHasTokenInMetaResponse = removeDuplicateFrom(\n response.tokens.map((t) => t.blockchain),\n );\n const enabledChains = response.blockchains.filter(\n (chain) => chain.enabled && chainThatHasTokenInMetaResponse.includes(chain.name),\n );\n response.blockchains = enabledChains.sort((a, b) => a.sort - b.sort);\n set({ meta: response, loadingStatus: 'success' });\n } catch (error) {\n set({ loadingStatus: 'failed' });\n }\n },\n })),\n);\n","export enum SearchParams {\n 'FROM_CHAIN' = 'fromChain',\n 'FROM_TOKEN' = 'fromToken',\n 'TO_CHAIN' = 'toChain',\n 'TO_TOKEN' = 'toToken',\n 'FROM_AMOUNT' = 'fromAmount',\n}\n","import { Token } from 'rango-sdk';\nimport { useEffect, useRef } from 'react';\nimport { useLocation, useSearchParams } from 'react-router-dom';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { useMetaStore } from '../store/meta';\nimport { SearchParams } from '../constants/searchParams';\n\nfunction searchParamsToToken(tokens: Token[], searchParams: string | null): Token | null {\n return (\n tokens.find((token) => {\n const symbolAndAddress = searchParams?.split('--');\n if (symbolAndAddress?.length === 1)\n return token.symbol === symbolAndAddress[0] && token.address === null;\n return token.symbol === symbolAndAddress?.[0] && token.address === symbolAndAddress?.[1];\n }) || null\n );\n}\n\nexport function UpdateUrl() {\n const firstRender = useRef(true);\n const [searchParams, setSearchParams] = useSearchParams();\n const location = useLocation();\n\n const fromChain = useBestRouteStore.use.fromChain();\n const toChain = useBestRouteStore.use.toChain();\n const fromToken = useBestRouteStore.use.fromToken();\n const toToken = useBestRouteStore.use.toToken();\n const setFromChain = useBestRouteStore.use.setFromChain();\n const setFromToken = useBestRouteStore.use.setFromToken();\n const setToChain = useBestRouteStore.use.setToChain();\n const setToToken = useBestRouteStore.use.setToToken();\n const inputAmount = useBestRouteStore.use.inputAmount();\n const setInputAmount = useBestRouteStore.use.setInputAmount();\n const loadingStatus = useMetaStore.use.loadingStatus();\n const { blockchains, tokens } = useMetaStore.use.meta();\n\n useEffect(() => {\n if (!firstRender.current) {\n const fromChainString = fromChain?.name || '';\n const fromTokenString =\n (fromToken?.symbol || '') + (fromToken?.address ? `--${fromToken?.address}` : '');\n const toChainString = toChain?.name || '';\n const toTokenString =\n (toToken?.symbol || '') + (toToken?.address ? `--${toToken?.address}` : '');\n const fromAmount = inputAmount;\n\n setSearchParams(\n {\n ...(fromChainString && { [SearchParams.FROM_CHAIN]: fromChainString }),\n ...(fromTokenString && { [SearchParams.FROM_TOKEN]: fromTokenString }),\n ...(toChainString && { [SearchParams.TO_CHAIN]: toChainString }),\n ...(toTokenString && { [SearchParams.TO_TOKEN]: toTokenString }),\n ...(fromAmount && { [SearchParams.FROM_AMOUNT]: fromAmount.toString() }),\n },\n { replace: true },\n );\n }\n firstRender.current = false;\n }, [location.pathname, inputAmount]);\n\n useEffect(() => {\n if (loadingStatus === 'success') {\n const fronChainString = searchParams.get(SearchParams.FROM_CHAIN);\n const fromTokenString = searchParams.get(SearchParams.FROM_TOKEN);\n const toChainString = searchParams.get(SearchParams.TO_CHAIN);\n const toTokenString = searchParams.get(SearchParams.TO_TOKEN);\n const fromAmount = searchParams.get(SearchParams.FROM_AMOUNT);\n const fromChain = blockchains.find((blockchain) => blockchain.name === fronChainString);\n const fromToken = searchParamsToToken(tokens, fromTokenString);\n const toChain = blockchains.find((blockchain) => blockchain.name === toChainString);\n const toToken = searchParamsToToken(tokens, toTokenString);\n if (!!fromChain) {\n setFromChain(fromChain);\n if (!!fromToken) setFromToken(fromToken);\n }\n if (!!toChain) {\n setToChain(toChain);\n if (!!toToken) setToToken(toToken);\n }\n if (fromAmount) setInputAmount(fromAmount);\n }\n }, [loadingStatus]);\n\n return null;\n}\n","import React, { Fragment, PropsWithChildren } from 'react';\nimport { MemoryRouter, useInRouterContext } from 'react-router';\nimport { UpdateUrl } from './UpdateUrl';\n\nexport function AppRouter({ children }: PropsWithChildren) {\n const isRouterInContext = useInRouterContext();\n const Router = isRouterInContext ? Fragment : MemoryRouter;\n\n return (\n <>\n <Router>{children}</Router>\n {isRouterInContext && <UpdateUrl />}\n </>\n );\n}\n","import {\n getCosmosExperimentalChainInfo,\n isEvmAddress,\n KEPLR_COMPATIBLE_WALLETS,\n Network,\n WalletInfo,\n WalletState,\n WalletType,\n isCosmosBlockchain,\n} from '@rango-dev/wallets-shared';\n\nimport {\n WalletInfo as ModalWalletInfo,\n WalletState as WalletStatus,\n} from '@rango-dev/ui';\nimport {\n BestRouteResponse,\n BlockchainMeta,\n Token,\n WalletDetail,\n} from 'rango-sdk';\nimport { readAccountAddress } from '@rango-dev/wallets-core';\nimport { SelectableWallet } from '../pages/ConfirmWalletsPage';\nimport { Account, Balance, TokenBalance } from '../store/wallets';\nimport { numberToString } from './numbers';\nimport BigNumber from 'bignumber.js';\nimport { TokenWithBalance } from '../pages/SelectTokenPage';\nimport { ZERO } from '../constants/numbers';\n\nexport function getStateWallet(state: WalletState): WalletStatus {\n switch (true) {\n case state.connected:\n return WalletStatus.CONNECTED;\n case state.connecting:\n return WalletStatus.CONNECTING;\n case !state.installed:\n return WalletStatus.NOT_INSTALLED;\n default:\n return WalletStatus.DISCONNECTED;\n }\n}\n\nexport const excludedWallets = [\n WalletType.UNKNOWN,\n WalletType.TERRA_STATION,\n WalletType.LEAP,\n];\n\nexport function getlistWallet(\n getState: (type: WalletType) => WalletState,\n getWalletInfo: (type: WalletType) => WalletInfo,\n list: WalletType[]\n): ModalWalletInfo[] {\n const excludedWallets = [\n WalletType.UNKNOWN,\n WalletType.TERRA_STATION,\n WalletType.LEAP,\n ];\n\n return list\n .filter((wallet) => !excludedWallets.includes(wallet))\n .map((type) => {\n const { name, img: image, installLink } = getWalletInfo(type);\n const state = getStateWallet(getState(type));\n return {\n name,\n image,\n installLink,\n state,\n type,\n };\n });\n}\n\nexport function walletAndSupportedChainsNames(\n supportedChains: BlockchainMeta[]\n): Network[] | null {\n if (!supportedChains) return null;\n let walletAndSupportedChainsNames: Network[] = [];\n walletAndSupportedChainsNames = supportedChains.map(\n (blockchainMeta) => blockchainMeta.name as Network\n );\n\n return walletAndSupportedChainsNames;\n}\n\nexport function prepareAccountsForWalletStore(\n wallet: WalletType,\n accounts: string[],\n evmBasedChains: string[],\n supportedChainNames: Network[] | null\n): Account[] {\n const result: Account[] = [];\n\n function addAccount(network: Network, address: string) {\n const newAccount: Account = {\n address,\n chain: network,\n walletType: wallet,\n };\n\n result.push(newAccount);\n }\n\n const supportedChains = supportedChainNames || [];\n\n accounts.forEach((account) => {\n const { address, network } = readAccountAddress(account);\n\n const hasLimitation = supportedChains.length > 0;\n const isSupported = supportedChains.includes(network);\n const isUnknown = network === Network.Unknown;\n const notSupportedNetworkByWallet =\n hasLimitation && !isSupported && !isUnknown;\n\n // Here we check given `network` is not supported by wallet\n // And also the network is known.\n if (notSupportedNetworkByWallet) return;\n\n // In some cases we can handle unknown network by checking its address\n // pattern and act on it.\n // Example: showing our evm compatible netwrok when the uknown network is evem.\n // Otherwise, we stop executing this function.\n const isUknownAndEvmBased =\n network === Network.Unknown && isEvmAddress(address);\n if (isUnknown && !isUknownAndEvmBased) return;\n\n const isEvmBasedChain = evmBasedChains.includes(network);\n\n // If it's an evm network, we will add the address to all the evm chains.\n if (isEvmBasedChain || isUknownAndEvmBased) {\n // all evm chains are not supported in wallets, so we are adding\n // only to those that are supported by wallet.\n const evmChainsSupportedByWallet = supportedChains.filter((chain) =>\n evmBasedChains.includes(chain)\n );\n\n evmChainsSupportedByWallet.forEach((network) => {\n // EVM addresses are not case sensetive.\n // Some wallets like Binance-chain return some letters in uppercase which produces bugs in our wallet state.\n addAccount(network, address.toLowerCase());\n });\n } else {\n addAccount(network, address);\n }\n });\n\n return result;\n}\n\nexport function getRequiredChains(route: BestRouteResponse | null) {\n const wallets: string[] = [];\n\n route?.result?.swaps.forEach((swap) => {\n const currentStepFromBlockchain = swap.from.blockchain;\n const currentStepToBlockchain = swap.to.blockchain;\n let lastAddedWallet = wallets[wallets.length - 1];\n if (currentStepFromBlockchain != lastAddedWallet)\n wallets.push(currentStepFromBlockchain);\n lastAddedWallet = wallets[wallets.length - 1];\n if (currentStepToBlockchain != lastAddedWallet)\n wallets.push(currentStepToBlockchain);\n });\n return wallets;\n}\n\nexport interface SelectedWallet extends Account {}\ntype Blockchain = { name: string; accounts: Balance[] };\n\nexport function getSelectableWallets(\n accounts: Account[],\n selectedWallets: SelectedWallet[],\n getWalletInfo: (type: WalletType) => WalletInfo,\n requiredChains?: string[]\n) {\n const connectedWallets: SelectableWallet[] = accounts.map((account) => ({\n address: account.address,\n walletType: account.walletType,\n chain: account.chain,\n image: getWalletInfo(account.walletType).img,\n name: getWalletInfo(account.walletType).name,\n selected: !!selectedWallets.find(\n (wallet) =>\n wallet.chain === account.chain &&\n wallet.walletType === account.walletType\n ),\n }));\n\n return requiredChains\n ? connectedWallets.filter(\n (wallet, index, array) =>\n requiredChains.includes(wallet.chain) &&\n array.findIndex((w) => w.address === wallet.address) === index\n )\n : removeDuplicateWallets(connectedWallets, 'walletType');\n}\n\nconst removeDuplicateWallets = (\n arr: SelectableWallet[],\n key: string\n): SelectableWallet[] => {\n const map = new Map(arr.map((item) => [item[key], item]));\n return Array.from(map.values());\n};\n\nexport function getBalanceFromWallet(\n balances: Balance[],\n chain: string,\n symbol: string,\n address: string | null\n): TokenBalance | null {\n if (balances.length === 0) return null;\n\n const selectedChainBalances = balances.filter(\n (balance) => balance.chain === chain\n );\n if (selectedChainBalances.length === 0) return null;\n\n return (\n selectedChainBalances\n .map(\n (a) =>\n a.balances?.find(\n (bl) =>\n (address !== null && bl.address === address) ||\n (address === null &&\n bl.address === address &&\n bl.symbol === symbol)\n ) || null\n )\n .filter((b) => b !== null)\n .sort(\n (a, b) => parseFloat(b?.amount || '0') - parseFloat(a?.amount || '1')\n )\n .find(() => true) || null\n );\n}\n\nexport function isAccountAndBalanceMatched(account: Account, balance: Balance) {\n return (\n account.address === balance.address &&\n account.chain === balance.chain &&\n account.walletType === balance.walletType\n );\n}\n\nexport function makeBalanceFor(\n account: Account,\n retrivedBalance: WalletDetail,\n tokens: Token[]\n): Balance {\n const {\n address,\n blockChain: chain,\n explorerUrl,\n balances = [],\n } = retrivedBalance;\n return {\n address,\n chain,\n loading: false,\n error: false,\n explorerUrl,\n walletType: account.walletType,\n balances:\n balances?.map((tokenBalance) => ({\n chain,\n symbol: tokenBalance.asset.symbol,\n ticker: tokenBalance.asset.symbol,\n address: tokenBalance.asset.address || null,\n rawAmount: tokenBalance.amount.amount,\n decimal: tokenBalance.amount.decimals,\n amount: new BigNumber(tokenBalance.amount.amount)\n .shiftedBy(-tokenBalance.amount.decimals)\n .toFixed(),\n logo: '',\n usdPrice:\n getUsdPrice(\n chain,\n tokenBalance.asset.symbol,\n tokenBalance.asset.address,\n tokens\n ) || null,\n })) || [],\n };\n}\n\nexport function resetBalanceState(balance: Balance): Balance {\n return { ...balance, loading: false, error: true };\n}\n\nexport const calculateWalletUsdValue = (balance: Balance[]) => {\n const uniqueAccountAddresses = new Set<string | null>();\n const uniqueBalane: Balance[] = balance?.reduce(\n (acc: Balance[], current: Balance) => {\n return acc.findIndex(\n (i) => i.address === current.address && i.chain === current.chain\n ) === -1\n ? [...acc, current]\n : acc;\n },\n []\n );\n\n const modifiedWalletBlockchains = uniqueBalane?.map((chain) => {\n const modifiedWalletBlockchain: Blockchain = {\n name: chain.chain,\n accounts: [],\n };\n if (!uniqueAccountAddresses.has(chain.address)) {\n uniqueAccountAddresses.add(chain.address);\n }\n uniqueAccountAddresses.forEach((accountAddress) => {\n if (chain.address === accountAddress)\n modifiedWalletBlockchain.accounts.push(chain);\n });\n return modifiedWalletBlockchain;\n });\n const total = numberToString(\n modifiedWalletBlockchains\n ?.flatMap((b) => b.accounts)\n ?.flatMap((a) => a?.balances)\n ?.map((b) =>\n new BigNumber(b?.amount || ZERO).multipliedBy(b?.usdPrice || 0)\n )\n ?.reduce((a, b) => a.plus(b), ZERO) || ZERO\n ).toString();\n\n return numberWithThousandSeperator(total);\n};\n\nfunction numberWithThousandSeperator(number: string | number): string {\n var parts = number.toString().split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n return parts.join('.');\n}\n\nexport const sortedTokens = (\n tokens: TokenWithBalance[],\n position: 'from' | 'to',\n balance: Balance[]\n): TokenWithBalance[] => {\n if (!tokens) return [];\n const walletSymbols = new Set(\n (balance || [])\n .flatMap((a) => a.balances || [])\n .filter((b) => (new BigNumber(b?.rawAmount) || ZERO).gt(0))\n .map((b) => `${b?.chain}.${b?.symbol}.${b?.address}`)\n );\n let sortedList = [\n ...tokens.filter(\n (t) => !t.address && walletSymbols.size && position === 'to'\n ),\n ...tokens\n .filter(\n (t) =>\n !(position === 'to' && !t.address) &&\n walletSymbols.has(`${t.blockchain}.${t.symbol}.${t.address}`)\n )\n .sort((tokenA, tokenB) => compareBalance(tokenA, tokenB, balance)),\n ...tokens.filter(\n (t) =>\n !walletSymbols.has(`${t.blockchain}.${t.symbol}.${t.address}`) &&\n !t.address &&\n (!walletSymbols.size || position === 'from')\n ),\n ...tokens.filter(\n (t) =>\n !walletSymbols.has(`${t.blockchain}.${t.symbol}.${t.address}`) &&\n t.address &&\n !t.isSecondaryCoin\n ),\n ...tokens.filter(\n (t) =>\n !walletSymbols.has(`${t.blockchain}.${t.symbol}.${t.address}`) &&\n t.isSecondaryCoin\n ),\n ];\n\n return sortedList;\n};\n\nconst compareBalance = (\n tokenA: TokenWithBalance,\n tokenB: TokenWithBalance,\n wallet: Balance[]\n): number => {\n if (!tokenA.usdPrice || !tokenB.usdPrice) return 0;\n\n const tokenAUsdValue = new BigNumber(\n getBalanceFromWallet(\n wallet,\n tokenA.blockchain,\n tokenA.symbol,\n tokenA.address\n )?.amount || ZERO\n ).multipliedBy(tokenA.usdPrice);\n const tokenBUsdValue = new BigNumber(\n getBalanceFromWallet(\n wallet,\n tokenB.blockchain,\n tokenB.symbol,\n tokenB.address\n )?.amount || ZERO\n ).multipliedBy(tokenB.usdPrice);\n if (tokenAUsdValue.gt(tokenBUsdValue)) return -1;\n return 1;\n};\n\nexport const getUsdPrice = (\n blockchain: string,\n symbol: string,\n address: string | null,\n allTokens: Token[]\n): number | null => {\n const token = allTokens?.find(\n (t) =>\n t.blockchain === blockchain &&\n t.symbol?.toUpperCase() === symbol?.toUpperCase() &&\n t.address === address\n );\n return token?.usdPrice || null;\n};\nexport const isExperimentalChain = (\n blockchains: BlockchainMeta[],\n wallet: string\n): boolean => {\n const cosmosExperimentalChainInfo = getCosmosExperimentalChainInfo(\n Object.entries(blockchains)\n .map(([, blockchainMeta]) => blockchainMeta)\n .filter(isCosmosBlockchain)\n );\n return cosmosExperimentalChainInfo && !!cosmosExperimentalChainInfo[wallet];\n};\n\nexport const getKeplrCompatibleConnectedWallets = (\n selectableWallets: SelectableWallet[]\n): WalletType[] => {\n const connectedWalletTypes = new Set(\n selectableWallets.map((a: any) => a.walletType.toString())\n );\n\n return KEPLR_COMPATIBLE_WALLETS.filter((compatibleWallet) =>\n connectedWalletTypes.has(compatibleWallet)\n );\n};\n","import { WalletType } from '@rango-dev/wallets-shared';\nimport { create } from 'zustand';\nimport { SelectableWallet } from '../pages/ConfirmWalletsPage';\nimport { httpService } from '../services/httpService';\nimport {\n getRequiredChains,\n isAccountAndBalanceMatched,\n makeBalanceFor,\n resetBalanceState,\n SelectedWallet,\n} from '../utils/wallets';\nimport { useBestRouteStore } from './bestRoute';\nimport { useMetaStore } from './meta';\nimport createSelectors from './selectors';\n\nexport interface Account {\n chain: string;\n address: string;\n walletType: WalletType;\n}\n\nexport type TokenBalance = {\n chain: string;\n symbol: string;\n ticker: string;\n address: string | null;\n rawAmount: string;\n decimal: number | null;\n amount: string;\n logo: string | null;\n usdPrice: number | null;\n};\n\nexport interface Balance {\n balances: TokenBalance[] | null;\n address: string;\n chain: string;\n loading: boolean;\n walletType: WalletType;\n error: boolean;\n explorerUrl: string | null;\n}\n\ninterface WalletsStore {\n accounts: Account[];\n balances: Balance[];\n selectedWallets: SelectedWallet[];\n connectWallet: (accounts: Account[]) => void;\n disconnectWallet: (walletType: WalletType) => void;\n initSelectedWallets: () => void;\n setSelectedWallet: (wallet: SelectableWallet) => void;\n}\n\nexport const useWalletsStore = createSelectors(\n create<WalletsStore>()((set) => ({\n accounts: [],\n balances: [],\n selectedWallets: [],\n connectWallet: (accounts) => {\n const tokens = useMetaStore.getState().meta.tokens;\n\n set((state) => ({\n accounts: state.accounts.concat(accounts),\n balances: state.balances.concat(\n accounts.map((account) => ({\n balances: [],\n address: account.address,\n chain: account.chain,\n loading: true,\n walletType: account.walletType,\n error: false,\n explorerUrl: null,\n })),\n ),\n }));\n accounts.forEach(async (account) => {\n try {\n const response = await httpService.getWalletsDetails([\n { address: account.address, blockchain: account.chain },\n ]);\n const retrivedBalance = response.wallets[0];\n if (retrivedBalance) {\n set((state) => ({\n balances: state.balances.map((balance) => {\n return isAccountAndBalanceMatched(account, balance)\n ? makeBalanceFor(account, retrivedBalance, tokens)\n : balance;\n }),\n }));\n } else throw new Error('Wallet not found');\n } catch (error) {\n set((state) => ({\n balances: state.balances.map((balance) => {\n return isAccountAndBalanceMatched(account, balance)\n ? resetBalanceState(balance)\n : balance;\n }),\n }));\n }\n });\n },\n disconnectWallet: (walletType) => {\n set((state) => ({\n accounts: state.accounts.filter((account) => account.walletType !== walletType),\n balances: state.balances.filter((balance) => balance.walletType !== walletType),\n selectedWallets: state.selectedWallets.filter((wallet) => wallet.walletType != walletType),\n }));\n },\n initSelectedWallets: () =>\n set((state) => {\n const requiredChains = getRequiredChains(useBestRouteStore.getState().bestRoute);\n const connectedWallets = state.accounts;\n const selectedWallets: SelectedWallet[] = [];\n requiredChains.forEach((chain) => {\n const anyWalletSelected = !!state.selectedWallets.find(\n (wallet) => wallet.chain === chain,\n );\n if (!anyWalletSelected) {\n const firstWalletWithMatchedChain = connectedWallets.find(\n (wallet) => wallet.chain === chain,\n );\n if (!!firstWalletWithMatchedChain)\n selectedWallets.push({\n address: firstWalletWithMatchedChain.address,\n chain: firstWalletWithMatchedChain.chain,\n walletType: firstWalletWithMatchedChain.walletType,\n });\n }\n });\n return { selectedWallets: state.selectedWallets.concat(selectedWallets) };\n }),\n setSelectedWallet: (wallet) =>\n set((state) => ({\n selectedWallets: state.selectedWallets\n .filter((selectedWallet) => selectedWallet.chain !== wallet.chain)\n .concat({\n chain: wallet.chain,\n address: wallet.address,\n walletType: wallet.walletType,\n }),\n })),\n })),\n);\n","export const navigationRoutes = {\n home: '/',\n fromChain: '/from-chain',\n fromToken: '/from-token',\n toChain: '/to-chain',\n toToken: '/to-token',\n settings: '/settings',\n liquiditySources: '/liquidity-sources',\n history: '/history',\n wallets: '/wallets',\n confirmSwap: '/confirm-swap',\n confirmWallets: '/confirm-wallets',\n swapDetails: '/swap-details',\n};\n","import { create } from 'zustand';\nimport { persist } from 'zustand/middleware';\nimport { immer } from 'zustand/middleware/immer';\nimport { useMetaStore } from './meta';\nimport createSelectors from './selectors';\n\ntype Theme = 'auto' | 'dark' | 'light';\n\ninterface Settings {\n slippage: number;\n customSlippage: number | null;\n infinitApprove: boolean;\n disabledLiquiditySources: string[];\n theme: Theme;\n setSlippage: (slippage: number) => void;\n setCustomSlippage: (customSlippage: number | null) => void;\n toggleInfinitApprove: () => void;\n toggleLiquiditySource: (name: string) => void;\n setTheme: (theme: Theme) => void;\n toggleAllLiquiditySources: () => void;\n}\n\nexport const useSettingsStore = createSelectors(\n create<Settings>()(\n persist(\n immer((set) => ({\n slippage: 1,\n customSlippage: null,\n infinitApprove: false,\n disabledLiquiditySources: [],\n theme: 'auto',\n setSlippage: (slippage) =>\n set((state) => {\n state.slippage = slippage;\n }),\n setCustomSlippage: (customSlippage) => {\n return set((state) => {\n state.customSlippage = customSlippage;\n });\n },\n toggleAllLiquiditySources: () =>\n set((state) => {\n const { swappers } = useMetaStore.getState().meta;\n\n if (swappers.length - state.disabledLiquiditySources.length === 0)\n state.disabledLiquiditySources = [];\n else {\n const allSwappers = swappers.map((swapper) => swapper.swapperGroup);\n state.disabledLiquiditySources = allSwappers;\n }\n }),\n toggleInfinitApprove: () =>\n set((state) => {\n state.infinitApprove = !state.infinitApprove;\n }),\n toggleLiquiditySource: (name) =>\n set((state) => {\n state.disabledLiquiditySources = state.disabledLiquiditySources.includes(name)\n ? state.disabledLiquiditySources.filter((liquiditySource) => liquiditySource != name)\n : state.disabledLiquiditySources.concat(name);\n }),\n setTheme: (theme) =>\n set((state) => {\n state.theme = theme;\n }),\n })),\n {\n name: 'user-settings',\n },\n ),\n ),\n);\n","import {\n BestRouteType,\n SimulationValidationStatus,\n} from '@rango-dev/ui/dist/types/swaps';\n// import { WalletType } from '@rango-dev/wallets-shared';\nimport BigNumber from 'bignumber.js';\nimport { BestRouteRequest, BestRouteResponse } from 'rango-sdk';\nimport { useState } from 'react';\nimport { httpService } from '../services/httpService';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { useSettingsStore } from '../store/settings';\nimport { useWalletsStore } from '../store/wallets';\nimport { compareRoutes, getRequiredBalanceOfWallet } from '../utils/routing';\nimport { SelectedWallet } from '../utils/wallets';\n\ntype CheckFeeAndBalanceResult =\n | {\n hasEnoughBalanceOrSlippage: {\n balance: boolean;\n slippage: boolean;\n routeChanged: boolean;\n };\n bestRoute: BestRouteType;\n }\n | { bestRoute: null }\n | null;\n\nexport function useConfirmSwap() {\n const fromToken = useBestRouteStore.use.fromToken();\n const toToken = useBestRouteStore.use.toToken();\n const inputAmount = useBestRouteStore.use.inputAmount();\n const bestRoute = useBestRouteStore.use.bestRoute();\n const setBestRoute = useBestRouteStore.use.setBestRoute();\n const accounts = useWalletsStore.use.accounts();\n const selectedWallets = useWalletsStore.use.selectedWallets();\n\n const slippage = useSettingsStore.use.slippage();\n const disabledLiquiditySources =\n useSettingsStore.use.disabledLiquiditySources();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState('');\n const [warning, setWarning] = useState('');\n const [data, setData] = useState<BestRouteResponse | null>(null);\n const [feeStatus, setFeeStatus] = useState<\n SimulationValidationStatus[] | null\n >(null);\n const [bestRouteChanged, setBestRouteChanged] = useState(false);\n const [enoughBalance, setEnoughBalance] = useState<boolean | null>(null);\n\n const hasEnoughBalanceOrProperSlippage = (\n route: BestRouteType,\n selectedWallets: SelectedWallet[],\n userSlippage: string,\n routeChanged: boolean\n ): { balance: boolean; slippage: boolean; routeChanged: boolean } => {\n const fee = route.validationStatus;\n\n if (fee === null || fee.length === 0)\n return { balance: true, slippage: true, routeChanged };\n\n for (const wallet of selectedWallets) {\n const requiredAssets = getRequiredBalanceOfWallet(wallet, fee);\n if (!requiredAssets) continue;\n\n const hasEnoughBalance = requiredAssets\n ?.map((it) => it.ok)\n .reduce((a, b) => a && b);\n if (!hasEnoughBalance)\n return { balance: false, slippage: true, routeChanged };\n }\n\n const slippages = route.result?.swaps?.map((s) => s.recommendedSlippage);\n const slippageError =\n (slippages?.filter((s) => !!s?.error)?.length || 0) > 0;\n const minSlippage =\n slippages\n ?.map((s) => parseFloat(s?.slippage.toString() || '0') || 0)\n .filter((s) => s > 0)\n .sort((a, b) => b - a)\n .find(() => true) || null;\n if (slippageError) {\n setError('Server cannot calculated required slippage for your swap');\n return { balance: true, slippage: false, routeChanged };\n } else if (minSlippage !== null && minSlippage > parseFloat(userSlippage)) {\n setError(`Your slippage should be ${minSlippage} at least`);\n return { balance: true, slippage: false, routeChanged };\n }\n\n return { balance: true, slippage: true, routeChanged };\n };\n\n const checkFeeAndBalance = async (\n selectedWallets: SelectedWallet[]\n ): Promise<CheckFeeAndBalanceResult> => {\n setLoading(true);\n setFeeStatus(null);\n\n const selectedWalletsMap = selectedWallets.reduce(\n (\n selectedWalletsMap: BestRouteRequest['selectedWallets'],\n selectedWallet\n ) => (\n (selectedWalletsMap[selectedWallet.chain] = selectedWallet.address),\n selectedWalletsMap\n ),\n {}\n );\n\n const connectedWallets: BestRouteRequest['connectedWallets'] = [];\n\n accounts.forEach((account) => {\n const chainAndAccounts = connectedWallets.find(\n (wallet) => wallet.blockchain\n );\n if (!!chainAndAccounts) chainAndAccounts.addresses.push(account.address);\n else\n connectedWallets.push({\n blockchain: account.chain,\n addresses: [account.address],\n });\n });\n\n const r = await httpService\n .getBestRoute({\n amount: inputAmount!.toString(),\n checkPrerequisites: true,\n from: {\n address: fromToken!.address,\n blockchain: fromToken!.blockchain,\n symbol: fromToken!.symbol,\n },\n to: {\n address: toToken!.address,\n blockchain: toToken!.blockchain,\n symbol: toToken!.symbol,\n },\n connectedWallets,\n selectedWallets: selectedWalletsMap,\n //@ts-ignore\n swapperGroups: disabledLiquiditySources,\n swappersGroupsExclude: true,\n })\n .catch((error) => {\n setError(error.message);\n setLoading(false);\n });\n setLoading(false);\n if (!r || !r.result || !bestRoute) return { bestRoute: null };\n if (\n !new BigNumber(r.requestAmount).isEqualTo(\n new BigNumber(inputAmount || '-1')\n )\n )\n return null;\n setFeeStatus(r.validationStatus);\n const routeChangeStatus = compareRoutes(\n bestRoute,\n r,\n inputAmount!.toString(),\n fromToken!.usdPrice,\n toToken!.usdPrice\n );\n setBestRoute(r);\n const isChanged = routeChangeStatus.isChanged;\n // const changeWarningMessage = routeChangeStatus.warningMessage;\n setBestRouteChanged(isChanged);\n setWarning('Best route changed');\n setData(r);\n return {\n hasEnoughBalanceOrSlippage: hasEnoughBalanceOrProperSlippage(\n r,\n selectedWallets,\n slippage.toString(),\n isChanged\n ),\n bestRoute: r,\n };\n };\n\n const swap = () => {\n if (!bestRoute) return;\n if (inputAmount!.toString() === '') return;\n // const wallets = selectedWallets.reduce(\n // (\n // selectedWalletsMap: { [p: string]: { address: string; walletType: WalletType } },\n // selectedWallet,\n // ) => (\n // (selectedWalletsMap[selectedWallet.chain] = {\n // address: selectedWallet.address,\n // walletType: selectedWallet.walletType,\n // }),\n // selectedWalletsMap\n // ),\n // {},\n // );\n\n const proceedAnyway = enoughBalance !== null;\n\n // const settings: SwapSavedSettings = {\n // slippage: slippage.toString(),\n // disabledSwappersGroups: ['Osmosis'],\n // disabledSwappersIds: [],\n // };\n // if (proceedAnyway) {\n // const newSwap: PendingSwap = calculatePendingSwap(\n // inputAmount!.toString(),\n // bestRoute,\n // wallets,\n // settings,\n // false,\n // );\n // }\n\n !proceedAnyway &&\n checkFeeAndBalance(selectedWallets)\n .then((data) => {\n if (!data) {\n setError('confirm swap error');\n return;\n }\n\n if (!data.bestRoute) {\n setError('confirm swap error');\n return;\n } else {\n // @ts-ignore\n const { hasEnoughBalanceOrSlippage } = data;\n if (!hasEnoughBalanceOrSlippage) {\n return;\n }\n\n setEnoughBalance(\n hasEnoughBalanceOrSlippage.balance &&\n hasEnoughBalanceOrSlippage.slippage\n );\n\n if (\n hasEnoughBalanceOrSlippage.balance &&\n hasEnoughBalanceOrSlippage.slippage &&\n !hasEnoughBalanceOrSlippage.routeChanged\n ) {\n // const newSwap: PendingSwap = calculatePendingSwap(\n // inputAmount!.toString(),\n // newBestRoute,\n // wallets,\n // settings,\n // true,\n // );\n } else if (!hasEnoughBalanceOrSlippage.balance) {\n setError('not enough balance');\n }\n }\n })\n .catch((error) => {\n console.log('unexpected error', error);\n });\n };\n return {\n loading,\n error,\n data,\n warning,\n feeStatus,\n bestRouteChanged,\n enoughBalance,\n swap,\n } as any;\n}\n","import React from 'react';\nimport { ConfirmSwap } from '@rango-dev/ui';\nimport { useNavigate } from 'react-router-dom';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { useConfirmSwap } from '../hooks/useConfirmSwap';\n\nexport function ConfirmSwapPage() {\n const navigate = useNavigate();\n\n const bestRoute = useBestRouteStore.use.bestRoute();\n\n const { error, loading, warning, swap } = useConfirmSwap();\n\n return (\n <ConfirmSwap\n onConfirm={swap.bind(null)}\n onBack={navigate.bind(null, -1)}\n bestRoute={bestRoute}\n loading={loading}\n error={error}\n warning={warning}\n />\n );\n}\n","import { History } from '@rango-dev/ui';\nimport { PendingSwap } from '@rango-dev/ui/dist/containers/History/types';\nimport { TransactionType } from 'rango-sdk';\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { navigationRoutes } from '../constants/navigationRoutes';\n\nexport const pendingSwap: PendingSwap[] = [\n {\n creationTime: '1673164511955',\n finishTime: '1673164550137',\n requestId: '51e211d9-d61c-45d2-a4d4-1f9f7f90ee85',\n inputAmount: '1',\n wallets: {\n OSMOSIS: {\n walletType: 'keplr',\n address: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n },\n },\n status: 'running',\n isPaused: false,\n extraMessage: null,\n extraMessageSeverity: 'info',\n extraMessageDetail: '',\n extraMessageErrorCode: null,\n networkStatusExtraMessage: null,\n networkStatusExtraMessageDetail: null,\n lastNotificationTime: null,\n settings: {\n slippage: '1.0',\n disabledSwappersIds: [],\n disabledSwappersGroups: [],\n },\n simulationResult: {\n outputAmount: '1.540670',\n swaps: [\n {\n swapperId: 'Osmosis',\n swapperType: 'DEX',\n swapperLogo: '',\n // @ts-ignore\n result: null,\n from: {\n symbol: 'JUNO',\n logo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n address:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n blockchain: 'OSMOSIS',\n blockchainLogo: '',\n decimals: 6,\n usdPrice: 1.1091996179668873,\n },\n to: {\n symbol: 'OSMO',\n logo: 'https://api.rango.exchange/i/mJQPS2',\n address: null,\n blockchain: 'OSMOSIS',\n decimals: 6,\n blockchainLogo: '',\n usdPrice: 0.7192435454440882,\n },\n fromAmount: '1.000000',\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n toAmount: '1.540670',\n fee: [\n {\n name: '',\n asset: {\n blockchain: 'OSMOSIS',\n symbol: 'OSMO',\n address: null,\n },\n expenseType: 'FROM_SOURCE_WALLET',\n amount: '0',\n },\n ],\n estimatedTimeInSeconds: 45,\n swapChainType: 'INTRA_CHAIN',\n routes: [\n {\n nodes: [\n {\n nodes: [\n {\n marketName: 'pool#498',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'JUNO',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n fromAddress:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n fromBlockchain: 'OSMOSIS',\n to: 'ATOM',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/ATOM.png',\n toAddress:\n 'ibc/27394fb092d2eccd56123c74f36e4c1f926001ceada9ca97ea622b25f41e5eb2',\n toBlockchain: 'OSMOSIS',\n },\n {\n nodes: [\n {\n marketName: 'pool#8',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'ATOM',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/ATOM.png',\n fromAddress:\n 'ibc/27394fb092d2eccd56123c74f36e4c1f926001ceada9ca97ea622b25f41e5eb2',\n fromBlockchain: 'OSMOSIS',\n to: 'IRIS',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/IRIS.png',\n toAddress:\n 'ibc/7c4d60aa95e5a7558b0a364860979ca34b7ff8aaf255b87af9e879374470cec0',\n toBlockchain: 'OSMOSIS',\n },\n {\n nodes: [\n {\n marketName: 'pool#7',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'IRIS',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/IRIS.png',\n fromAddress:\n 'ibc/7c4d60aa95e5a7558b0a364860979ca34b7ff8aaf255b87af9e879374470cec0',\n fromBlockchain: 'OSMOSIS',\n to: 'OSMO',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/OSMO.png',\n toAddress: null,\n toBlockchain: 'OSMOSIS',\n },\n ],\n },\n ],\n recommendedSlippage: null,\n timeStat: {\n min: 6,\n avg: 40,\n max: 241,\n },\n includesDestinationTx: false,\n },\n ],\n },\n validateBalanceOrFee: true,\n steps: [\n {\n id: 1,\n fromBlockchain: 'OSMOSIS',\n fromSymbol: 'JUNO',\n fromSymbolAddress:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n fromDecimals: 6,\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n swapperLogo: '',\n swapperType: '',\n fromAmountMaxValue: null,\n toBlockchainLogo: 'https://api.rango.exchange/swappers/osmosis.png',\n fromBlockchainLogo: 'https://api.rango.exchange/swappers/osmosis.png',\n toBlockchain: 'OSMOSIS',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n toSymbol: 'OSMO',\n toSymbolAddress: null,\n toDecimals: 6,\n toLogo: 'https://api.rango.exchange/i/mJQPS2',\n startTransactionTime: 1673164519916,\n swapperId: 'Osmosis',\n expectedOutputAmountHumanReadable: '1.540670',\n outputAmount: '1.540658',\n status: 'running',\n networkStatus: null,\n executedTransactionId:\n '0f8f17eecc863c2d6be65ef52cfe3128ff3cd7baeddf133160bea8ccdfbf876b',\n explorerUrl: [\n {\n url: 'https://www.mintscan.io/osmosis/txs/0f8f17eecc863c2d6be65ef52cfe3128ff3cd7baeddf133160bea8ccdfbf876b',\n description: null,\n },\n ],\n cosmosTransaction: {\n type: TransactionType.COSMOS,\n fromWalletAddress: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n blockChain: 'OSMOSIS',\n data: {\n chainId: 'osmosis-1',\n account_number: 102721,\n sequence: '308',\n msgs: [\n {\n __type: 'OsmosisSwapMessage',\n type: 'osmosis/gamm/swap-exact-amount-in',\n value: {\n sender: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n routes: [\n {\n pool_id: '498',\n token_out_denom:\n 'ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2',\n },\n {\n pool_id: '8',\n token_out_denom:\n 'ibc/7C4D60AA95E5A7558B0A364860979CA34B7FF8AAF255B87AF9E879374470CEC0',\n },\n {\n pool_id: '7',\n token_out_denom: 'uosmo',\n },\n ],\n token_in: {\n denom:\n 'ibc/46B44899322F3CD854D2D46DEEF881958467CDD4B3B10086DA49296BBED94BED',\n amount: '1000000',\n },\n token_out_min_amount: '1525264',\n },\n },\n ],\n protoMsgs: [\n {\n type_url: '/osmosis.gamm.v1beta1.MsgSwapExactAmountIn',\n value: [\n 10, 43, 111, 115, 109, 111, 49, 117, 110, 102, 50, 114, 99,\n 121, 116, 106, 120, 102, 112, 122, 56, 120, 56, 97, 114, 54,\n 51, 104, 52, 113, 101, 102, 116, 97, 100, 112, 116, 103, 53,\n 116, 48, 110, 113, 99, 108, 18, 73, 8, -14, 3, 18, 68, 105,\n 98, 99, 47, 50, 55, 51, 57, 52, 70, 66, 48, 57, 50, 68, 50,\n 69, 67, 67, 68, 53, 54, 49, 50, 51, 67, 55, 52, 70, 51, 54,\n 69, 52, 67, 49, 70, 57, 50, 54, 48, 48, 49, 67, 69, 65, 68,\n 65, 57, 67, 65, 57, 55, 69, 65, 54, 50, 50, 66, 50, 53, 70,\n 52, 49, 69, 53, 69, 66, 50, 18, 72, 8, 8, 18, 68, 105, 98, 99,\n 47, 55, 67, 52, 68, 54, 48, 65, 65, 57, 53, 69, 53, 65, 55,\n 53, 53, 56, 66, 48, 65, 51, 54, 52, 56, 54, 48, 57, 55, 57,\n 67, 65, 51, 52, 66, 55, 70, 70, 56, 65, 65, 70, 50, 53, 53,\n 66, 56, 55, 65, 70, 57, 69, 56, 55, 57, 51, 55, 52, 52, 55,\n 48, 67, 69, 67, 48, 18, 9, 8, 7, 18, 5, 117, 111, 115, 109,\n 111, 26, 79, 10, 68, 105, 98, 99, 47, 52, 54, 66, 52, 52, 56,\n 57, 57, 51, 50, 50, 70, 51, 67, 68, 56, 53, 52, 68, 50, 68,\n 52, 54, 68, 69, 69, 70, 56, 56, 49, 57, 53, 56, 52, 54, 55,\n 67, 68, 68, 52, 66, 51, 66, 49, 48, 48, 56, 54, 68, 65, 52,\n 57, 50, 57, 54, 66, 66, 69, 68, 57, 52, 66, 69, 68, 18, 7, 49,\n 48, 48, 48, 48, 48, 48, 34, 7, 49, 53, 50, 53, 50, 54, 52,\n ],\n },\n ],\n memo: '',\n source: null,\n fee: {\n gas: '900000',\n amount: [\n {\n denom: 'uosmo',\n amount: '0',\n },\n ],\n },\n signType: 'AMINO',\n rpcUrl: '',\n },\n rawTransfer: null,\n },\n solanaTransaction: null,\n evmTransaction: null,\n evmApprovalTransaction: null,\n transferTransaction: null,\n diagnosisUrl: null,\n internalSteps: null,\n },\n ],\n },\n {\n creationTime: '1673164511955',\n finishTime: '1673164550137',\n requestId: '51e211d9-d61c-45d2-a4d4-1f9f7f90ee85',\n inputAmount: '1',\n wallets: {\n OSMOSIS: {\n walletType: 'keplr',\n address: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n },\n },\n status: 'failed',\n isPaused: false,\n extraMessage: null,\n extraMessageSeverity: 'info',\n extraMessageDetail: '',\n extraMessageErrorCode: null,\n networkStatusExtraMessage: null,\n networkStatusExtraMessageDetail: null,\n lastNotificationTime: null,\n settings: {\n slippage: '1.0',\n disabledSwappersIds: [],\n disabledSwappersGroups: [],\n },\n simulationResult: {\n outputAmount: '1.540670',\n swaps: [\n {\n swapperId: 'Osmosis',\n swapperLogo: '',\n // @ts-ignore\n result: null,\n swapperType: 'DEX',\n from: {\n symbol: 'JUNO',\n logo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n address:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n blockchain: 'OSMOSIS',\n blockchainLogo: '',\n decimals: 6,\n usdPrice: 1.1091996179668873,\n },\n to: {\n symbol: 'OSMO',\n logo: 'https://api.rango.exchange/i/mJQPS2',\n address: null,\n blockchain: 'OSMOSIS',\n decimals: 6,\n blockchainLogo: '',\n usdPrice: 0.7192435454440882,\n },\n fromAmount: '1.000000',\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n toAmount: '1.540670',\n fee: [\n {\n name: '',\n asset: {\n blockchain: 'OSMOSIS',\n symbol: 'OSMO',\n address: null,\n },\n expenseType: 'FROM_SOURCE_WALLET',\n amount: '0',\n },\n ],\n estimatedTimeInSeconds: 45,\n swapChainType: 'INTRA_CHAIN',\n routes: [\n {\n nodes: [\n {\n nodes: [\n {\n marketName: 'pool#498',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'JUNO',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n fromAddress:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n fromBlockchain: 'OSMOSIS',\n to: 'ATOM',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/ATOM.png',\n toAddress:\n 'ibc/27394fb092d2eccd56123c74f36e4c1f926001ceada9ca97ea622b25f41e5eb2',\n toBlockchain: 'OSMOSIS',\n },\n {\n nodes: [\n {\n marketName: 'pool#8',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'ATOM',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/ATOM.png',\n fromAddress:\n 'ibc/27394fb092d2eccd56123c74f36e4c1f926001ceada9ca97ea622b25f41e5eb2',\n fromBlockchain: 'OSMOSIS',\n to: 'IRIS',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/IRIS.png',\n toAddress:\n 'ibc/7c4d60aa95e5a7558b0a364860979ca34b7ff8aaf255b87af9e879374470cec0',\n toBlockchain: 'OSMOSIS',\n },\n {\n nodes: [\n {\n marketName: 'pool#7',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'IRIS',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/IRIS.png',\n fromAddress:\n 'ibc/7c4d60aa95e5a7558b0a364860979ca34b7ff8aaf255b87af9e879374470cec0',\n fromBlockchain: 'OSMOSIS',\n to: 'OSMO',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/OSMO.png',\n toAddress: null,\n toBlockchain: 'OSMOSIS',\n },\n ],\n },\n ],\n recommendedSlippage: null,\n timeStat: {\n min: 6,\n avg: 40,\n max: 241,\n },\n includesDestinationTx: false,\n },\n ],\n },\n validateBalanceOrFee: true,\n steps: [\n {\n id: 1,\n fromBlockchain: 'OSMOSIS',\n fromSymbol: 'JUNO',\n fromSymbolAddress:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n fromDecimals: 6,\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n toBlockchainLogo: 'https://api.rango.exchange/swappers/osmosis.png',\n fromBlockchainLogo: 'https://api.rango.exchange/swappers/osmosis.png',\n toBlockchain: 'OSMOSIS',\n swapperLogo: '',\n swapperType: '',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n toSymbol: 'OSMO',\n toSymbolAddress: null,\n toDecimals: 6,\n toLogo: 'https://api.rango.exchange/i/mJQPS2',\n startTransactionTime: 1673164519916,\n swapperId: 'Osmosis',\n expectedOutputAmountHumanReadable: '1.540670',\n outputAmount: '1.540658',\n status: 'failed',\n networkStatus: null,\n executedTransactionId:\n '0f8f17eecc863c2d6be65ef52cfe3128ff3cd7baeddf133160bea8ccdfbf876b',\n explorerUrl: [\n {\n url: 'https://www.mintscan.io/osmosis/txs/0f8f17eecc863c2d6be65ef52cfe3128ff3cd7baeddf133160bea8ccdfbf876b',\n description: null,\n },\n ],\n cosmosTransaction: {\n type: TransactionType.COSMOS,\n fromWalletAddress: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n blockChain: 'OSMOSIS',\n data: {\n chainId: 'osmosis-1',\n account_number: 102721,\n sequence: '308',\n msgs: [\n {\n __type: 'OsmosisSwapMessage',\n type: 'osmosis/gamm/swap-exact-amount-in',\n value: {\n sender: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n routes: [\n {\n pool_id: '498',\n token_out_denom:\n 'ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2',\n },\n {\n pool_id: '8',\n token_out_denom:\n 'ibc/7C4D60AA95E5A7558B0A364860979CA34B7FF8AAF255B87AF9E879374470CEC0',\n },\n {\n pool_id: '7',\n token_out_denom: 'uosmo',\n },\n ],\n token_in: {\n denom:\n 'ibc/46B44899322F3CD854D2D46DEEF881958467CDD4B3B10086DA49296BBED94BED',\n amount: '1000000',\n },\n token_out_min_amount: '1525264',\n },\n },\n ],\n protoMsgs: [\n {\n type_url: '/osmosis.gamm.v1beta1.MsgSwapExactAmountIn',\n value: [\n 10, 43, 111, 115, 109, 111, 49, 117, 110, 102, 50, 114, 99,\n 121, 116, 106, 120, 102, 112, 122, 56, 120, 56, 97, 114, 54,\n 51, 104, 52, 113, 101, 102, 116, 97, 100, 112, 116, 103, 53,\n 116, 48, 110, 113, 99, 108, 18, 73, 8, -14, 3, 18, 68, 105,\n 98, 99, 47, 50, 55, 51, 57, 52, 70, 66, 48, 57, 50, 68, 50,\n 69, 67, 67, 68, 53, 54, 49, 50, 51, 67, 55, 52, 70, 51, 54,\n 69, 52, 67, 49, 70, 57, 50, 54, 48, 48, 49, 67, 69, 65, 68,\n 65, 57, 67, 65, 57, 55, 69, 65, 54, 50, 50, 66, 50, 53, 70,\n 52, 49, 69, 53, 69, 66, 50, 18, 72, 8, 8, 18, 68, 105, 98, 99,\n 47, 55, 67, 52, 68, 54, 48, 65, 65, 57, 53, 69, 53, 65, 55,\n 53, 53, 56, 66, 48, 65, 51, 54, 52, 56, 54, 48, 57, 55, 57,\n 67, 65, 51, 52, 66, 55, 70, 70, 56, 65, 65, 70, 50, 53, 53,\n 66, 56, 55, 65, 70, 57, 69, 56, 55, 57, 51, 55, 52, 52, 55,\n 48, 67, 69, 67, 48, 18, 9, 8, 7, 18, 5, 117, 111, 115, 109,\n 111, 26, 79, 10, 68, 105, 98, 99, 47, 52, 54, 66, 52, 52, 56,\n 57, 57, 51, 50, 50, 70, 51, 67, 68, 56, 53, 52, 68, 50, 68,\n 52, 54, 68, 69, 69, 70, 56, 56, 49, 57, 53, 56, 52, 54, 55,\n 67, 68, 68, 52, 66, 51, 66, 49, 48, 48, 56, 54, 68, 65, 52,\n 57, 50, 57, 54, 66, 66, 69, 68, 57, 52, 66, 69, 68, 18, 7, 49,\n 48, 48, 48, 48, 48, 48, 34, 7, 49, 53, 50, 53, 50, 54, 52,\n ],\n },\n ],\n memo: '',\n source: null,\n fee: {\n gas: '900000',\n amount: [\n {\n denom: 'uosmo',\n amount: '0',\n },\n ],\n },\n signType: 'AMINO',\n rpcUrl: '',\n },\n rawTransfer: null,\n },\n solanaTransaction: null,\n evmTransaction: null,\n evmApprovalTransaction: null,\n transferTransaction: null,\n diagnosisUrl: null,\n internalSteps: null,\n },\n ],\n },\n {\n creationTime: '1673164511955',\n finishTime: '1673164550137',\n requestId: '51e211d9-d61c-45d2-a4d4-1f9f7f90ee85',\n inputAmount: '1',\n wallets: {\n OSMOSIS: {\n walletType: 'keplr',\n address: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n },\n },\n status: 'success',\n isPaused: false,\n extraMessage: null,\n extraMessageSeverity: 'info',\n extraMessageDetail: '',\n extraMessageErrorCode: null,\n networkStatusExtraMessage: null,\n networkStatusExtraMessageDetail: null,\n lastNotificationTime: null,\n settings: {\n slippage: '1.0',\n disabledSwappersIds: [],\n disabledSwappersGroups: [],\n },\n simulationResult: {\n outputAmount: '1.540670',\n swaps: [\n {\n // @ts-ignore\n result: [],\n swapperId: 'Osmosis',\n swapperType: 'DEX',\n swapperLogo: '',\n\n from: {\n symbol: 'JUNO',\n logo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n address:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n blockchain: 'OSMOSIS',\n blockchainLogo: '',\n decimals: 6,\n usdPrice: 1.1091996179668873,\n },\n to: {\n symbol: 'OSMO',\n logo: 'https://api.rango.exchange/i/mJQPS2',\n address: null,\n blockchain: 'OSMOSIS',\n decimals: 6,\n blockchainLogo: '',\n usdPrice: 0.7192435454440882,\n },\n fromAmount: '1.000000',\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n toAmount: '1.540670',\n fee: [\n {\n name: '',\n asset: {\n blockchain: 'OSMOSIS',\n symbol: 'OSMO',\n address: null,\n },\n expenseType: 'FROM_SOURCE_WALLET',\n amount: '0',\n },\n ],\n estimatedTimeInSeconds: 45,\n swapChainType: 'INTRA_CHAIN',\n routes: [\n {\n nodes: [\n {\n nodes: [\n {\n marketName: 'pool#498',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'JUNO',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n fromAddress:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n fromBlockchain: 'OSMOSIS',\n to: 'ATOM',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/ATOM.png',\n toAddress:\n 'ibc/27394fb092d2eccd56123c74f36e4c1f926001ceada9ca97ea622b25f41e5eb2',\n toBlockchain: 'OSMOSIS',\n },\n {\n nodes: [\n {\n marketName: 'pool#8',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'ATOM',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/ATOM.png',\n fromAddress:\n 'ibc/27394fb092d2eccd56123c74f36e4c1f926001ceada9ca97ea622b25f41e5eb2',\n fromBlockchain: 'OSMOSIS',\n to: 'IRIS',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/IRIS.png',\n toAddress:\n 'ibc/7c4d60aa95e5a7558b0a364860979ca34b7ff8aaf255b87af9e879374470cec0',\n toBlockchain: 'OSMOSIS',\n },\n {\n nodes: [\n {\n marketName: 'pool#7',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'IRIS',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/IRIS.png',\n fromAddress:\n 'ibc/7c4d60aa95e5a7558b0a364860979ca34b7ff8aaf255b87af9e879374470cec0',\n fromBlockchain: 'OSMOSIS',\n to: 'OSMO',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/OSMO.png',\n toAddress: null,\n toBlockchain: 'OSMOSIS',\n },\n ],\n },\n ],\n recommendedSlippage: null,\n timeStat: {\n min: 6,\n avg: 40,\n max: 241,\n },\n includesDestinationTx: false,\n },\n ],\n },\n validateBalanceOrFee: true,\n steps: [\n {\n id: 1,\n fromBlockchain: 'OSMOSIS',\n fromSymbol: 'JUNO',\n fromSymbolAddress:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n fromDecimals: 6,\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n swapperLogo: '',\n swapperType: '',\n fromAmountMaxValue: null,\n toBlockchainLogo: 'https://api.rango.exchange/swappers/osmosis.png',\n fromBlockchainLogo: 'https://api.rango.exchange/swappers/osmosis.png',\n toBlockchain: 'OSMOSIS',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n toSymbol: 'OSMO',\n toSymbolAddress: null,\n toDecimals: 6,\n toLogo: 'https://api.rango.exchange/i/mJQPS2',\n startTransactionTime: 1673164519916,\n swapperId: 'Osmosis',\n expectedOutputAmountHumanReadable: '1.540670',\n outputAmount: '1.540658',\n status: 'success',\n networkStatus: null,\n executedTransactionId:\n '0f8f17eecc863c2d6be65ef52cfe3128ff3cd7baeddf133160bea8ccdfbf876b',\n explorerUrl: [\n {\n url: 'https://www.mintscan.io/osmosis/txs/0f8f17eecc863c2d6be65ef52cfe3128ff3cd7baeddf133160bea8ccdfbf876b',\n description: null,\n },\n ],\n cosmosTransaction: {\n type: TransactionType.COSMOS,\n fromWalletAddress: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n blockChain: 'OSMOSIS',\n data: {\n chainId: 'osmosis-1',\n account_number: 102721,\n sequence: '308',\n msgs: [\n {\n __type: 'OsmosisSwapMessage',\n type: 'osmosis/gamm/swap-exact-amount-in',\n value: {\n sender: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n routes: [\n {\n pool_id: '498',\n token_out_denom:\n 'ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2',\n },\n {\n pool_id: '8',\n token_out_denom:\n 'ibc/7C4D60AA95E5A7558B0A364860979CA34B7FF8AAF255B87AF9E879374470CEC0',\n },\n {\n pool_id: '7',\n token_out_denom: 'uosmo',\n },\n ],\n token_in: {\n denom:\n 'ibc/46B44899322F3CD854D2D46DEEF881958467CDD4B3B10086DA49296BBED94BED',\n amount: '1000000',\n },\n token_out_min_amount: '1525264',\n },\n },\n ],\n protoMsgs: [\n {\n type_url: '/osmosis.gamm.v1beta1.MsgSwapExactAmountIn',\n value: [\n 10, 43, 111, 115, 109, 111, 49, 117, 110, 102, 50, 114, 99,\n 121, 116, 106, 120, 102, 112, 122, 56, 120, 56, 97, 114, 54,\n 51, 104, 52, 113, 101, 102, 116, 97, 100, 112, 116, 103, 53,\n 116, 48, 110, 113, 99, 108, 18, 73, 8, -14, 3, 18, 68, 105,\n 98, 99, 47, 50, 55, 51, 57, 52, 70, 66, 48, 57, 50, 68, 50,\n 69, 67, 67, 68, 53, 54, 49, 50, 51, 67, 55, 52, 70, 51, 54,\n 69, 52, 67, 49, 70, 57, 50, 54, 48, 48, 49, 67, 69, 65, 68,\n 65, 57, 67, 65, 57, 55, 69, 65, 54, 50, 50, 66, 50, 53, 70,\n 52, 49, 69, 53, 69, 66, 50, 18, 72, 8, 8, 18, 68, 105, 98, 99,\n 47, 55, 67, 52, 68, 54, 48, 65, 65, 57, 53, 69, 53, 65, 55,\n 53, 53, 56, 66, 48, 65, 51, 54, 52, 56, 54, 48, 57, 55, 57,\n 67, 65, 51, 52, 66, 55, 70, 70, 56, 65, 65, 70, 50, 53, 53,\n 66, 56, 55, 65, 70, 57, 69, 56, 55, 57, 51, 55, 52, 52, 55,\n 48, 67, 69, 67, 48, 18, 9, 8, 7, 18, 5, 117, 111, 115, 109,\n 111, 26, 79, 10, 68, 105, 98, 99, 47, 52, 54, 66, 52, 52, 56,\n 57, 57, 51, 50, 50, 70, 51, 67, 68, 56, 53, 52, 68, 50, 68,\n 52, 54, 68, 69, 69, 70, 56, 56, 49, 57, 53, 56, 52, 54, 55,\n 67, 68, 68, 52, 66, 51, 66, 49, 48, 48, 56, 54, 68, 65, 52,\n 57, 50, 57, 54, 66, 66, 69, 68, 57, 52, 66, 69, 68, 18, 7, 49,\n 48, 48, 48, 48, 48, 48, 34, 7, 49, 53, 50, 53, 50, 54, 52,\n ],\n },\n ],\n memo: '',\n source: null,\n fee: {\n gas: '900000',\n amount: [\n {\n denom: 'uosmo',\n amount: '0',\n },\n ],\n },\n signType: 'AMINO',\n rpcUrl: '',\n },\n rawTransfer: null,\n },\n solanaTransaction: null,\n evmTransaction: null,\n evmApprovalTransaction: null,\n transferTransaction: null,\n diagnosisUrl: null,\n internalSteps: null,\n },\n ],\n },\n];\n\nexport function HistoryPage() {\n const navigate = useNavigate();\n return (\n <History\n list={pendingSwap}\n onSwapClick={() => navigate(navigationRoutes.swapDetails)}\n onBack={() => {\n navigate(-1);\n }}\n />\n );\n}\n","import React from 'react';\nimport { SettingsIcon, Tooltip, styled, Button, HistoryIcon, RetryIcon } from '@rango-dev/ui';\nimport { useNavigate } from 'react-router-dom';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { PropTypes } from './Header';\n\nconst ButtonsContainer = styled('div', {\n display: 'flex',\n});\n\nexport function HeaderButtons(props: PropTypes) {\n const { onClickRefresh } = props;\n const navigate = useNavigate();\n\n return (\n <ButtonsContainer>\n <Tooltip content=\"Retry\">\n <Button variant=\"ghost\" onClick={onClickRefresh.bind(null)}>\n <RetryIcon size={28} />\n </Button>\n </Tooltip>\n <Tooltip content=\"Transactions History\">\n <Button variant=\"ghost\" onClick={() => navigate(navigationRoutes.history)}>\n <HistoryIcon size={24} />\n </Button>\n </Tooltip>\n <Tooltip content=\"Settings\">\n <Button variant=\"ghost\" onClick={() => navigate(navigationRoutes.settings)}>\n <SettingsIcon size={24} />\n </Button>\n </Tooltip>\n </ButtonsContainer>\n );\n}\n","import React from 'react';\nimport { styled, Typography } from '@rango-dev/ui';\nimport { HeaderButtons } from './HeaderButtons';\n\nexport const HeaderContainer = styled('div', {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n padding: '$16 0',\n});\n\nexport interface PropTypes {\n onClickRefresh: () => void;\n}\n\nexport function Header(props: PropTypes) {\n const { onClickRefresh } = props;\n return (\n <HeaderContainer>\n <Typography variant=\"h4\">SWAP</Typography>\n <HeaderButtons onClickRefresh={onClickRefresh} />\n </HeaderContainer>\n );\n}\n","import React from 'react';\nimport { AngleDownIcon, Button, InfoCircleIcon, styled, TextField, Typography } from '@rango-dev/ui';\nimport { useMetaStore } from '../store/meta';\nimport { BlockchainMeta, Token } from 'rango-sdk';\nimport { useNavigate } from 'react-router-dom';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { numberToString } from '../utils/numbers';\nimport BigNumber from 'bignumber.js';\nimport { getBalanceFromWallet } from '../utils/wallets';\nimport { useWalletsStore } from '../store/wallets';\n\ntype PropTypes = (\n | { type: 'From'; inputAmount: string; onAmountChange: (amount: string) => void }\n | {\n type: 'To';\n outputAmount: BigNumber | null;\n outputUsdValue: BigNumber | null;\n }\n) & { chain: BlockchainMeta | null; token: Token | null };\n\nconst Box = styled('div', {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n});\n\nconst Container = styled('div', {\n boxSizing: 'border-box',\n backgroundColor: '$neutrals300',\n borderRadius: '$5',\n padding: '$8 0',\n\n '.form': {\n display: 'flex',\n width: '100%',\n padding: '$8 $16',\n },\n});\n\nconst StyledImage = styled('img', {\n width: '$24',\n maxHeight: '$24',\n});\n\nconst Options = styled('div', {\n display: 'flex',\n justifyContent: 'flex-end',\n padding: '0 $8',\n});\n\nconst ImagePlaceholder = styled('span', {\n width: '24px',\n height: '24px',\n backgroundColor: '$neutrals300',\n borderRadius: '99999px',\n});\n\nconst OutputContainer = styled('div', {\n height: '$48',\n borderRadius: '$5',\n flexGrow: 1,\n width: '70%',\n backgroundColor: '$background',\n border: '1px solid transparent',\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n paddingLeft: '$8',\n paddingRight: '$8',\n});\n\nexport function TokenInfo(props: PropTypes) {\n const { type, chain, token } = props;\n const loadingStatus = useMetaStore.use.loadingStatus();\n const fromChain = useBestRouteStore.use.fromChain();\n const toChain = useBestRouteStore.use.toChain();\n const inputUsdValue = useBestRouteStore.use.inputUsdValue();\n const fromToken = useBestRouteStore.use.fromToken();\n const setInputAmount = useBestRouteStore.use.setInputAmount();\n const bestRoute = useBestRouteStore.use.bestRoute();\n const inputAmount = useBestRouteStore.use.inputAmount();\n const balances = useWalletsStore.use.balances();\n const navigate = useNavigate();\n\n const tokenBalance =\n !!fromChain && !!fromToken\n ? numberToString(\n getBalanceFromWallet(balances, fromChain?.name, fromToken?.symbol, fromToken?.address)\n ?.amount || '0',\n 8,\n )\n : '0';\n\n const tokenBalanceReal =\n !!fromChain && !!fromToken\n ? numberToString(\n getBalanceFromWallet(balances, fromChain?.name, fromToken?.symbol, fromToken?.address)\n ?.amount || '0',\n getBalanceFromWallet(balances, fromChain?.name, fromToken?.symbol, fromToken?.address)\n ?.decimal,\n )\n : '0';\n\n const ItemSuffix = (\n <div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center' }}>\n {loadingStatus === 'failed' && <InfoCircleIcon color=\"error\" size={24} />}\n <AngleDownIcon />\n </div>\n );\n\n return (\n <Box>\n <div>\n <Typography variant=\"body2\">{type}</Typography>\n </div>\n <Container>\n {props.type === 'From' && (\n <Options>\n <div\n className=\"balance\"\n onClick={() => {\n if (tokenBalance !== '0') setInputAmount(tokenBalanceReal.split(',').join(''));\n }}>\n <Button variant=\"ghost\" size=\"small\">\n <Typography variant=\"body2\">{`Max: ${tokenBalance} ${\n fromToken?.symbol || ''\n }`}</Typography>\n </Button>\n </div>\n </Options>\n )}\n <div className=\"form\">\n <Button\n onClick={() => {\n navigate(`/${props.type.toLowerCase()}-chain`);\n }}\n variant=\"outlined\"\n disabled={loadingStatus === 'failed'}\n loading={loadingStatus === 'loading'}\n prefix={\n loadingStatus === 'success' && chain ? (\n <StyledImage src={chain.logo} />\n ) : (\n <ImagePlaceholder />\n )\n }\n suffix={ItemSuffix}\n align=\"start\"\n size=\"large\"\n style={{ marginRight: '.5rem' }}>\n {loadingStatus === 'success' && chain ? chain.displayName : 'Chain'}\n </Button>\n <Button\n onClick={() => {\n navigate(`/${props.type.toLowerCase()}-token`);\n }}\n variant=\"outlined\"\n disabled={\n loadingStatus === 'failed' ||\n (type === 'From' && !fromChain) ||\n (type === 'To' && !toChain)\n }\n loading={loadingStatus === 'loading'}\n prefix={\n loadingStatus === 'success' && token ? (\n <StyledImage src={token.image} />\n ) : (\n <ImagePlaceholder />\n )\n }\n suffix={ItemSuffix}\n size=\"large\"\n align=\"start\"\n style={{ marginRight: '.5rem' }}>\n {loadingStatus === 'success' && token ? token.symbol : 'Token'}\n </Button>\n {props.type === 'From' ? (\n <TextField\n type=\"number\"\n size=\"large\"\n autoFocus\n placeholder=\"0\"\n style={{\n width: '70%',\n position: 'relative',\n backgroundColor: '$background !important',\n }}\n suffix={\n <span style={{ position: 'absolute', right: '4px', bottom: '2px' }}>\n <Typography variant=\"caption\">{`$${numberToString(inputUsdValue)}`}</Typography>\n </span>\n }\n value={props.inputAmount || ''}\n onChange={\n props.type === 'From'\n ? (event) => {\n props.onAmountChange(event.target.value);\n }\n : undefined\n }\n />\n ) : (\n <OutputContainer>\n <Typography variant=\"body1\">\n {bestRoute ? `≈ ${numberToString(props.outputAmount)}` : inputAmount ? '?' : '0'}\n </Typography>\n <span style={{ position: 'absolute', right: '4px', bottom: '2px' }}>\n <Typography variant=\"caption\">{`$${numberToString(\n props.outputUsdValue,\n )}`}</Typography>\n </span>\n </OutputContainer>\n )}\n </div>\n </Container>\n </Box>\n );\n}\n","import React from 'react';\nimport { styled } from '@rango-dev/ui/src/theme';\nimport { Typography } from '@rango-dev/ui';\n\nconst Container = styled('div', {\n display: 'flex',\n width: '100%',\n justifyContent: 'end',\n alignItems: 'center',\n paddingTop: '$16',\n});\n\nconst Logo = styled('svg', {\n fill: '$foreground',\n width: '$24',\n margin: '0 $8 0 $16',\n});\n\nconst StyledAnchor = styled('a', {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n textDecoration: 'none',\n});\n\nexport function BottomLogo() {\n return (\n <Container>\n <Typography variant=\"caption\">Powered By</Typography>\n <StyledAnchor href=\"https://rango.exchange\" target=\"_blank\">\n <Logo xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 33.68 29\">\n <defs></defs>\n <g id=\"Layer_2\" data-name=\"Layer 2\">\n <g id=\"Layer_1-2\" data-name=\"Layer 1\">\n <path d=\"M33.68,18.05A17.93,17.93,0,0,0,28.34,5.29,18.31,18.31,0,0,0,15.45,0H13.54V7.41L6.07,0H.69L9.83,9.07H0V11A17.93,17.93,0,0,0,5.34,23.71,18.32,18.32,0,0,0,18.24,29h1.9V21.59l7.38,7.31h5.39l-9-9h9.82ZM17.37,16.16H12.49a1.93,1.93,0,0,0-1.35.55,1.89,1.89,0,0,0-.56,1.34,1.85,1.85,0,0,0,.56,1.33,1.93,1.93,0,0,0,1.35.55h3.84V25.1A14.43,14.43,0,0,1,8,21a14.21,14.21,0,0,1-4.1-8.2H21.2a1.86,1.86,0,0,0,.74-.13,1.92,1.92,0,0,0,.64-.4,2,2,0,0,0,.43-.62,1.88,1.88,0,0,0,0-1.47,2,2,0,0,0-.43-.62,1.92,1.92,0,0,0-.64-.4,1.86,1.86,0,0,0-.74-.13H17.35V3.9A14.43,14.43,0,0,1,25.64,8a14.19,14.19,0,0,1,4.11,8.2Zm2.12-5.27a1.43,1.43,0,0,1,.26-.83,1.52,1.52,0,0,1,.67-.56,1.55,1.55,0,0,1,.88-.08,1.51,1.51,0,0,1,.77.4,1.54,1.54,0,0,1,.42.77,1.41,1.41,0,0,1-.09.86,1.47,1.47,0,0,1-.55.68,1.56,1.56,0,0,1-.84.25,1.52,1.52,0,0,1-1.52-1.49Z\" />\n <path d=\"M21.7,11.57a.68.68,0,0,0-.12-.38.64.64,0,0,0-.31-.25.68.68,0,0,0-.75.15.61.61,0,0,0-.19.35.62.62,0,0,0,0,.4.67.67,0,0,0,.25.3.69.69,0,0,0,.39.12.7.7,0,0,0,.49-.2A.68.68,0,0,0,21.7,11.57Z\" />\n </g>\n </g>\n </Logo>\n <Typography variant=\"body2\">RANGO</Typography>\n </StyledAnchor>\n </Container>\n );\n}\n","import { useEffect, useRef } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { SearchParams } from '../constants/searchParams';\nimport { useBestRouteStore } from '../store/bestRoute';\n\nexport function SwithFromAndTo({ count }: { count: number }) {\n const firstRender = useRef(true);\n const [searchParams, setSearchParams] = useSearchParams();\n const outputAmount = useBestRouteStore.use.outputAmount();\n\n useEffect(() => {\n if (!firstRender.current) {\n const fromChainString = searchParams.get(SearchParams.FROM_CHAIN);\n const fromTokenString = searchParams.get(SearchParams.FROM_TOKEN);\n const toChainString = searchParams.get(SearchParams.TO_CHAIN);\n const toTokenString = searchParams.get(SearchParams.TO_TOKEN);\n setSearchParams({\n ...(toChainString && { [SearchParams.FROM_CHAIN]: toChainString }),\n ...(toTokenString && { [SearchParams.FROM_TOKEN]: toTokenString }),\n ...(fromChainString && { [SearchParams.TO_CHAIN]: fromChainString }),\n ...(fromTokenString && { [SearchParams.TO_TOKEN]: fromTokenString }),\n ...(outputAmount && { [SearchParams.FROM_AMOUNT]: outputAmount.toString() }),\n });\n } else {\n firstRender.current = false;\n }\n }, [count]);\n\n return null;\n}\n","import { styled } from '@rango-dev/ui';\n\nexport const Footer = styled('div', {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n paddingTop: '$16',\n});\n","import { BestRouteRequest, BestRouteResponse } from 'rango-sdk';\nimport { useEffect, useRef, useState } from 'react';\nimport { httpService } from '../services/httpService';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { useSettingsStore } from '../store/settings';\n\nexport function useBestRoute() {\n const fromToken = useBestRouteStore.use.fromToken();\n const toToken = useBestRouteStore.use.toToken();\n const inputAmount = useBestRouteStore.use.inputAmount();\n\n const slippage = useSettingsStore.use.slippage();\n const customSlippage = useSettingsStore.use.customSlippage();\n const disabledLiquiditySources = useSettingsStore.use.disabledLiquiditySources();\n const [count, setCount] = useState(0);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState('');\n const [data, setData] = useState<BestRouteResponse | null>(null);\n const abortControllerRef = useRef<AbortController | null>(null);\n\n const retry = () => {\n setCount((prev) => prev + 1);\n };\n\n useEffect(() => {\n if (abortControllerRef.current) abortControllerRef.current.abort();\n const abortController = new AbortController();\n abortControllerRef.current = abortController;\n if (!!fromToken && !!toToken && !!inputAmount) {\n if (!!data) setData(null);\n const requestBody: BestRouteRequest = {\n amount: inputAmount?.toString(),\n connectedWallets: [],\n selectedWallets: {},\n checkPrerequisites: false,\n swapperGroups: disabledLiquiditySources,\n swappersGroupsExclude: true,\n from: {\n address: fromToken.address,\n blockchain: fromToken.blockchain,\n symbol: fromToken.symbol,\n },\n to: { address: toToken.address, blockchain: toToken.blockchain, symbol: toToken.symbol },\n };\n setLoading(true);\n httpService\n .getBestRoute(requestBody, { signal: abortControllerRef.current.signal })\n .then((res) => {\n setData(res);\n setLoading(false);\n abortControllerRef.current = null;\n })\n .catch((error) => {\n if (error.code === 'ERR_CANCELED') return;\n setError(error.message);\n setLoading(false);\n });\n }\n }, [\n fromToken,\n toToken,\n inputAmount,\n count,\n slippage,\n customSlippage,\n disabledLiquiditySources.length,\n ]);\n\n return { loading, error, data, retry };\n}\n","export const errorMessages = {\n genericServerError: 'Error connecting server, please reload the app and try again',\n};\n","import { PendingSwap } from '@rango-dev/ui/dist/containers/History/types';\nimport { WalletTypeAndAddress, SwapSavedSettings } from '@rango-dev/ui/dist/types/swaps';\nimport BigNumber from 'bignumber.js';\nimport { BestRouteResponse } from 'rango-sdk';\nimport { Account } from '../store/wallets';\nimport { ZERO } from '../constants/numbers';\n\nexport function getOutputRatio(inputUsdValue: BigNumber, outputUsdValue: BigNumber) {\n if (inputUsdValue.lte(ZERO) || outputUsdValue.lte(ZERO)) return 0;\n return outputUsdValue.div(inputUsdValue).minus(1).multipliedBy(100);\n}\n\nexport function outputRatioHasWarning(inputUsdValue: BigNumber, outputRatio: BigNumber | 0) {\n return (\n (parseInt(outputRatio.toFixed(2) || '0') <= -10 && inputUsdValue.gte(new BigNumber(400))) ||\n (parseInt(outputRatio.toFixed(2) || '0') <= -5 && inputUsdValue.gte(new BigNumber(1000)))\n );\n}\n\nexport function hasLimitError(bestRoute: BestRouteResponse | null): boolean {\n return (\n (bestRoute?.result?.swaps || []).filter((swap) => {\n const minimum = !!swap.fromAmountMinValue ? new BigNumber(swap.fromAmountMinValue) : null;\n const maximum = !!swap.fromAmountMaxValue ? new BigNumber(swap.fromAmountMaxValue) : null;\n const isExclusive = swap.fromAmountRestrictionType === 'EXCLUSIVE';\n if (isExclusive) {\n return minimum?.gte(swap.fromAmount) || maximum?.lte(swap.fromAmount);\n } else {\n return minimum?.gt(swap.fromAmount) || maximum?.lt(swap.fromAmount);\n }\n }).length > 0\n );\n}\n\nexport function getSwapButtonTitle(\n accounts: Account[],\n loading: boolean,\n hasLimitError: boolean,\n highValueLoss: boolean,\n priceImpactCanNotBeComputed: boolean,\n needsToWarnEthOnPath: boolean,\n): string {\n if (loading) return 'Finding Best Route...';\n\n if (accounts.length == 0) return 'Connect Wallet';\n else if (hasLimitError) return 'Limit Error';\n else if (highValueLoss) return 'Price impact is too high!';\n else if (priceImpactCanNotBeComputed) return 'USD price is unknown, price impact might be high!';\n else if (needsToWarnEthOnPath) return 'The route goes through Ethereum. Continue?';\n else return 'Swap';\n}\n\nexport function canComputePriceImpact(\n bestRoute: BestRouteResponse | null,\n inputAmount: string,\n inputUsdValue: BigNumber,\n outputUsdValue: BigNumber,\n) {\n return !(\n (inputUsdValue.lte(ZERO) || outputUsdValue.lte(ZERO)) &&\n !!bestRoute?.result &&\n !!inputAmount &&\n inputAmount !== '0' &&\n parseFloat(inputAmount || '0') !== 0\n );\n}\n\nexport function calculatePendingSwap(\n inputAmount: string,\n bestRoute: BestRouteResponse,\n wallets: { [p: string]: WalletTypeAndAddress },\n settings: SwapSavedSettings,\n validateBalanceOrFee: boolean,\n): PendingSwap {\n const simulationResult = bestRoute.result;\n if (!simulationResult) throw Error('Simulation result should not be null');\n\n return {\n creationTime: new Date().getTime().toString(),\n finishTime: null,\n requestId: bestRoute.requestId || '',\n inputAmount: inputAmount,\n wallets,\n status: 'running',\n isPaused: false,\n extraMessage: null,\n extraMessageSeverity: null,\n extraMessageDetail: null,\n extraMessageErrorCode: null,\n networkStatusExtraMessage: null,\n networkStatusExtraMessageDetail: null,\n lastNotificationTime: null,\n settings: settings,\n simulationResult: simulationResult,\n validateBalanceOrFee,\n //TODO: finalize PendingSwap type and remove ts-ignore\n //@ts-ignore\n steps:\n bestRoute.result?.swaps?.map((s, i) => ({\n id: i + 1,\n fromBlockchain: s.from.blockchain,\n fromSymbol: s.from.symbol,\n fromSymbolAddress: s.from.address,\n fromDecimals: s.from.decimals,\n fromAmountPrecision: s.fromAmountPrecision,\n fromAmountMinValue: s.fromAmountMinValue,\n fromAmountMaxValue: s.fromAmountMaxValue,\n toBlockchain: s.to.blockchain,\n fromLogo: s.from.logo,\n toSymbol: s.to.symbol,\n toSymbolAddress: s.to.address,\n toDecimals: s.to.decimals,\n toLogo: s.to.logo,\n startTransactionTime: new Date().getTime(),\n swapperId: s.swapperId,\n expectedOutputAmountHumanReadable: s.toAmount,\n outputAmount: null,\n status: 'created',\n networkStatus: null,\n executedTransactionId: null,\n externalTransactionId: null,\n explorerUrl: null,\n trackingCode: null,\n cosmosTransaction: null,\n solanaTransaction: null,\n starknetTransaction: null,\n starknetApprovalTransaction: null,\n tronTransaction: null,\n tronApprovalTransaction: null,\n evmTransaction: null,\n evmApprovalTransaction: null,\n transferTransaction: null,\n diagnosisUrl: null,\n internalSteps: null,\n fromBlockchainLogo: '',\n toBlockchainLogo: '',\n swapperLogo: '',\n swapperType: '',\n })) || [],\n };\n}\n\nexport function requiredWallets(route: BestRouteResponse | null) {\n const wallets: string[] = [];\n\n route?.result?.swaps.forEach((swap) => {\n const currentStepFromBlockchain = swap.from.blockchain;\n const currentStepToBlockchain = swap.to.blockchain;\n let lastAddedWallet = wallets[wallets.length - 1];\n if (currentStepFromBlockchain != lastAddedWallet) wallets.push(currentStepFromBlockchain);\n lastAddedWallet = wallets[wallets.length - 1];\n if (currentStepToBlockchain != lastAddedWallet) wallets.push(currentStepToBlockchain);\n });\n return wallets;\n}\n","import { Alert, BestRoute, Button, styled, VerticalSwapIcon } from '@rango-dev/ui';\nimport React, { useEffect, useState } from 'react';\nimport { useInRouterContext, useNavigate } from 'react-router-dom';\nimport { Header } from '../components/Header';\nimport { TokenInfo } from '../components/TokenInfo';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { BottomLogo } from '../components/BottomLogo';\nimport { SwithFromAndTo } from '../components/SwitchFromAndTo';\nimport { Footer } from '../components/Footer';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { useBestRoute } from '../hooks/useBestRoute';\nimport { useMetaStore } from '../store/meta';\nimport { useWalletsStore } from '../store/wallets';\nimport { errorMessages } from '../constants/errors';\nimport {\n getSwapButtonTitle,\n getOutputRatio,\n hasLimitError,\n outputRatioHasWarning,\n canComputePriceImpact,\n} from '../utils/swap';\n\nconst Container = styled('div', {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n});\n\nconst SwitchButtonContainer = styled('div', {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'relative',\n top: '11px',\n});\n\nconst BestRouteContainer = styled('div', {\n width: '100%',\n paddingTop: '$16',\n});\n\nconst Alerts = styled('div', {\n paddingTop: '$16',\n});\n\nexport function Home() {\n const waningMessage = '';\n const isRouterInContext = useInRouterContext();\n const navigate = useNavigate();\n const [count, setCount] = useState(0);\n const fromChain = useBestRouteStore.use.fromChain();\n const fromToken = useBestRouteStore.use.fromToken();\n const toChain = useBestRouteStore.use.toChain();\n const toToken = useBestRouteStore.use.toToken();\n const setFromChain = useBestRouteStore.use.setFromChain();\n const setFromToken = useBestRouteStore.use.setFromToken();\n const setToChain = useBestRouteStore.use.setToChain();\n const setToToken = useBestRouteStore.use.setToToken();\n const setBestRoute = useBestRouteStore.use.setBestRoute();\n const inputUsdValue = useBestRouteStore.use.inputUsdValue();\n const inputAmount = useBestRouteStore.use.inputAmount();\n const setInputAmount = useBestRouteStore.use.setInputAmount();\n const outputAmount = useBestRouteStore.use.outputAmount();\n const outputUsdValue = useBestRouteStore.use.outputUsdValue();\n const bestRoute = useBestRouteStore.use.bestRoute();\n\n const loadingMetaStatus = useMetaStore.use.loadingStatus();\n const accounts = useWalletsStore.use.accounts();\n\n const swithFromAndTo = () => {\n setFromChain(toChain);\n setFromToken(toToken);\n setToChain(fromChain);\n setToToken(fromToken);\n setInputAmount(outputAmount?.toString() || '');\n setCount((prev) => prev + 1);\n };\n\n const { data, loading: fetchingBestRoute, error: bestRouteError, retry } = useBestRoute();\n\n const noConnectedWallet = accounts.length > 0;\n\n const noRoutesFound = !bestRoute?.result;\n\n const errorMessage =\n loadingMetaStatus === 'failed' ? errorMessages.genericServerError : bestRouteError;\n\n const needsToWarnEthOnPath = false;\n\n const showBestRoute = inputAmount && (!!data || fetchingBestRoute || bestRouteError);\n\n const outToInRatio = getOutputRatio(inputUsdValue, outputUsdValue);\n\n const highValueLoss = outputRatioHasWarning(inputUsdValue, outToInRatio);\n\n const priceImpactCanNotBeComputed = !canComputePriceImpact(\n bestRoute,\n inputAmount,\n inputUsdValue,\n outputUsdValue,\n );\n\n const buttonTitle = getSwapButtonTitle(\n accounts,\n fetchingBestRoute,\n hasLimitError(bestRoute),\n highValueLoss,\n priceImpactCanNotBeComputed,\n needsToWarnEthOnPath,\n );\n\n const buttonDisabled =\n loadingMetaStatus != 'success' ||\n fetchingBestRoute ||\n highValueLoss ||\n (noConnectedWallet && noRoutesFound) ||\n hasLimitError(bestRoute);\n\n useEffect(() => {\n setBestRoute(data);\n }, [data]);\n\n return (\n <Container>\n <Header onClickRefresh={retry} />\n <TokenInfo\n type=\"From\"\n chain={fromChain}\n token={fromToken}\n onAmountChange={setInputAmount}\n inputAmount={inputAmount}\n />\n <SwitchButtonContainer>\n <Button variant=\"ghost\" onClick={swithFromAndTo}>\n <VerticalSwapIcon size={36} />\n {isRouterInContext && <SwithFromAndTo count={count} />}\n </Button>\n </SwitchButtonContainer>\n <TokenInfo\n type=\"To\"\n chain={toChain}\n token={toToken}\n outputAmount={outputAmount}\n outputUsdValue={outputUsdValue}\n />\n {showBestRoute && (\n <BestRouteContainer>\n <BestRoute error={bestRouteError} loading={fetchingBestRoute} data={data} />\n </BestRouteContainer>\n )}\n {(errorMessage || waningMessage) && (\n <Alerts>\n {errorMessage && <Alert description={errorMessage} type=\"error\" />}\n {waningMessage && <Alert description={waningMessage} type=\"warning\" />}\n </Alerts>\n )}\n <Footer>\n <Button\n type=\"primary\"\n align=\"grow\"\n size=\"large\"\n disabled={buttonDisabled}\n onClick={() => {\n if (buttonTitle === 'Connect Wallet') navigate(navigationRoutes.wallets);\n else {\n navigate(navigationRoutes.confirmWallets);\n }\n }}>\n {buttonTitle}\n </Button>\n <BottomLogo />\n </Footer>\n </Container>\n );\n}","import { LiquiditySourcesSelector } from '@rango-dev/ui';\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useMetaStore } from '../store/meta';\nimport { useSettingsStore } from '../store/settings';\nimport { removeDuplicateFrom } from '../utils/common';\n\nexport function LiquiditySourcePage() {\n const { swappers } = useMetaStore.use.meta();\n const toggleLiquiditySource = useSettingsStore.use.toggleLiquiditySource();\n const disabledLiquiditySources = useSettingsStore.use.disabledLiquiditySources();\n const toggleAllLiquiditySources = useSettingsStore.use.toggleAllLiquiditySources();\n\n const navigate = useNavigate();\n\n const uniqueSwappersGroups: Array<{\n title: string;\n logo: string;\n type: 'BRIDGE' | 'AGGREGATOR' | 'DEX';\n selected: boolean;\n }> = [];\n removeDuplicateFrom(swappers.map((s) => s.swapperGroup))\n .map((swapperGroup) => {\n return swappers.find((s) => s.swapperGroup === swapperGroup);\n })\n .find((s) => {\n if (s) {\n for (const type of s.types) {\n uniqueSwappersGroups.push({\n title: s.swapperGroup,\n logo: s.logo,\n type,\n selected: !disabledLiquiditySources.includes(s.swapperGroup),\n });\n }\n }\n });\n\n return (\n <LiquiditySourcesSelector\n toggleAll={toggleAllLiquiditySources}\n list={uniqueSwappersGroups}\n onChange={(liquiditySource) => toggleLiquiditySource(liquiditySource.title)}\n onBack={() => {\n navigate(-1);\n }}\n />\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { BlockchainSelector } from '@rango-dev/ui';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { useMetaStore } from '../store/meta';\nimport { useNavigate } from 'react-router-dom';\nimport { useWalletsStore } from '../store/wallets';\nimport { BlockchainMeta } from 'rango-sdk';\nimport { removeDuplicateFrom } from '../utils/common';\n\ninterface PropTypes {\n type: 'from' | 'to';\n}\n\nexport function SelectChainPage(props: PropTypes) {\n const { type } = props;\n const accounts = useWalletsStore.use.accounts();\n\n const { blockchains } = useMetaStore.use.meta();\n const loadingStatus = useMetaStore.use.loadingStatus();\n const fromChain = useBestRouteStore.use.fromChain();\n const toChain = useBestRouteStore.use.toChain();\n const setFromChain = useBestRouteStore.use.setFromChain();\n const setToChain = useBestRouteStore.use.setToChain();\n const setFromToken = useBestRouteStore.use.setFromToken();\n const setToToken = useBestRouteStore.use.setToToken();\n\n const navigate = useNavigate();\n\n const [list, setList] = useState(blockchains);\n\n useEffect(() => {\n let chainSortedByConnectedWallets: BlockchainMeta[] = [];\n if (accounts.length !== 0) {\n const connectedChains = removeDuplicateFrom(accounts.map((account) => account.chain));\n chainSortedByConnectedWallets = blockchains.sort(\n (blockchainA, blockchainB) =>\n connectedChains.lastIndexOf(blockchainA.name) -\n connectedChains.lastIndexOf(blockchainB.name),\n );\n } else {\n chainSortedByConnectedWallets = blockchains;\n }\n setList(chainSortedByConnectedWallets);\n }, [blockchains.length, accounts.length]);\n\n return (\n <BlockchainSelector\n type={type === 'from' ? 'Source' : 'Destination'}\n list={list}\n selected={type === 'from' ? fromChain : toChain}\n loadingStatus={loadingStatus}\n onChange={(chain) => {\n if (type === 'from') setFromChain(chain);\n else setToChain(chain);\n if (type === 'from' && fromChain?.name != chain.name) setFromToken(null);\n if (type === 'to' && toChain?.name != chain.name) setToToken(null);\n navigate(-1);\n }}\n onBack={navigate.bind(null, -1)}\n />\n );\n}\n","import React from 'react';\nimport { TokenSelector } from '@rango-dev/ui';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { useMetaStore } from '../store/meta';\nimport { useNavigate } from 'react-router-dom';\nimport { Token } from 'rango-sdk';\nimport { numberToString } from '../utils/numbers';\nimport BigNumber from 'bignumber.js';\nimport { getBalanceFromWallet } from '../utils/wallets';\nimport { useWalletsStore } from '../store/wallets';\nimport { sortedTokens } from '../utils/wallets';\nimport { ZERO } from '../constants/numbers';\n\ninterface PropTypes {\n type: 'from' | 'to';\n}\n\nexport interface TokenWithBalance extends Token {\n balance?: {\n amount: string;\n usdValue: string;\n };\n}\n\nexport function SelectTokenPage(props: PropTypes) {\n const { type } = props;\n const navigate = useNavigate();\n\n const { tokens } = useMetaStore.use.meta();\n const fromChain = useBestRouteStore.use.fromChain();\n const toChain = useBestRouteStore.use.toChain();\n const fromToken = useBestRouteStore.use.fromToken();\n const toToken = useBestRouteStore.use.toToken();\n const setFromToken = useBestRouteStore.use.setFromToken();\n const setToToken = useBestRouteStore.use.setToToken();\n\n const balance = useWalletsStore.use.balances();\n\n const tokenWithSelectedChain = tokens.filter((token) => {\n if (type === 'from') return token.blockchain === fromChain?.name;\n return token.blockchain === toChain?.name;\n });\n\n const TokensWithBalance: TokenWithBalance[] = tokenWithSelectedChain.map((token) => {\n const tokenAmount = numberToString(\n new BigNumber(\n getBalanceFromWallet(balance, token.blockchain, token.symbol, token.address)?.amount ||\n ZERO,\n ),\n );\n\n let tokenUsdValue = '';\n if (token.usdPrice)\n tokenUsdValue = numberToString(\n new BigNumber(\n getBalanceFromWallet(balance, token.blockchain, token.symbol, token.address)?.amount ||\n ZERO,\n ).multipliedBy(token.usdPrice),\n );\n return {\n ...token,\n balance: {\n amount: tokenAmount !== '0' ? tokenAmount : '',\n usdValue: tokenUsdValue !== '0' ? tokenUsdValue : '',\n },\n };\n });\n\n const sortedTokenList = sortedTokens(TokensWithBalance, type, balance);\n\n return (\n <TokenSelector\n type={type === 'from' ? 'Source' : 'Destination'}\n list={sortedTokenList}\n selected={type === 'from' ? fromToken : toToken}\n onChange={(token) => {\n if (type === 'from') setFromToken(token);\n else setToToken(token);\n navigate(-1);\n }}\n onBack={navigate.bind(null, -1)}\n />\n );\n}","import React from 'react';\nimport { Settings } from '@rango-dev/ui';\nimport { useSettingsStore } from '../store/settings';\nimport { useMetaStore } from '../store/meta';\nimport { useNavigate } from 'react-router-dom';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { removeDuplicateFrom } from '../utils/common';\n\nexport function SettingsPage() {\n const slippage = useSettingsStore.use.slippage();\n const setSlippage = useSettingsStore.use.setSlippage();\n const disabledLiquiditySources = useSettingsStore.use.disabledLiquiditySources();\n const customSlippage = useSettingsStore.use.customSlippage();\n const setCustomSlippage = useSettingsStore.use.setCustomSlippage();\n const theme = useSettingsStore.use.theme();\n const setTheme = useSettingsStore.use.setTheme();\n const { swappers } = useMetaStore.use.meta();\n const navigate = useNavigate();\n\n const uniqueSwappersGroups: Array<{\n title: string;\n logo: string;\n type: 'BRIDGE' | 'AGGREGATOR' | 'DEX';\n selected: boolean;\n }> = [];\n removeDuplicateFrom(swappers.map((s) => s.swapperGroup))\n .map((swapperGroup) => {\n return swappers.find((s) => s.swapperGroup === swapperGroup);\n })\n .find((s) => {\n if (s) {\n for (const type of s.types) {\n uniqueSwappersGroups.push({\n title: s.swapperGroup,\n logo: s.logo,\n type,\n selected: !disabledLiquiditySources.includes(s.swapperGroup),\n });\n }\n }\n });\n\n return (\n <Settings\n slippages={[1, 2, 3, 4]}\n selectedSlippage={slippage}\n onSlippageChange={(slippage) => setSlippage(slippage)}\n liquiditySources={uniqueSwappersGroups}\n selectedLiquiditySources={uniqueSwappersGroups.filter((s) => s.selected)}\n onLiquiditySourcesClick={() => navigate(navigationRoutes.liquiditySources)}\n onBack={navigate.bind(null, -1)}\n customSlippage={customSlippage || NaN}\n onCustomSlippageChange={setCustomSlippage}\n minSlippage={1}\n maxSlippage={10}\n selectedTheme={theme}\n onThemeChange={setTheme}\n />\n );\n}\n","import { useNavigate } from 'react-router-dom';\nimport { Alert, SecondaryPage, styled, Wallet } from '@rango-dev/ui';\nimport React, { useState } from 'react';\nimport { getlistWallet } from '../utils/wallets';\nimport { WalletType } from '@rango-dev/wallets-shared';\nimport { useWallets } from '@rango-dev/wallets-core';\n\nconst ListContainer = styled('div', {\n display: 'grid',\n gap: '.5rem',\n gridTemplateColumns: ' repeat(2, minmax(0, 1fr))',\n height: '450px',\n alignContent: 'baseline',\n padding: '0 0.5rem',\n});\n\nconst AlertContainer = styled('div', {\n paddingBottom: '$16',\n});\nexport function WalletsPage() {\n const navigate = useNavigate();\n const { state, disconnect, getWalletInfo, connect } = useWallets();\n const wallets = getlistWallet(\n state,\n getWalletInfo,\n Object.values(WalletType)\n );\n const [walletErrorMessage, setWalletErrorMessage] = useState('');\n\n const onSelectWallet = async (type: WalletType) => {\n const wallet = state(type);\n try {\n if (walletErrorMessage) setWalletErrorMessage('');\n if (wallet.connected) {\n await disconnect(type);\n } else {\n await connect(type);\n }\n } catch (e) {\n setWalletErrorMessage('Error: ' + e.message);\n }\n };\n return (\n <SecondaryPage\n title=\"Select Wallet\"\n textField={false}\n onBack={() => {\n navigate(-1);\n }}\n Content={\n <>\n {walletErrorMessage && (\n <AlertContainer>\n <Alert type=\"error\" description={walletErrorMessage} />\n </AlertContainer>\n )}\n <ListContainer>\n {wallets.map((info, index) => (\n <Wallet {...info} key={index} onClick={onSelectWallet} />\n ))}\n </ListContainer>\n </>\n }\n />\n );\n}\n","import React, { useEffect } from 'react';\nimport { ConfirmWallets } from '@rango-dev/ui';\nimport { useNavigate } from 'react-router-dom';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { useWalletsStore } from '../store/wallets';\nimport { useWallets } from '@rango-dev/wallets-core';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { getKeplrCompatibleConnectedWallets, getRequiredChains, getSelectableWallets, isExperimentalChain, SelectedWallet } from '../utils/wallets';\nimport { requiredWallets } from '../utils/swap';\nimport { useMetaStore } from '../store/meta';\nimport { Network, WalletType } from '@rango-dev/wallets-shared';\n\nexport interface SelectableWallet extends SelectedWallet {\n image: string;\n selected: boolean;\n}\n\nexport function ConfirmWalletsPage() {\n const navigate = useNavigate();\n const bestRoute = useBestRouteStore.use.bestRoute();\n\n const { blockchains } = useMetaStore.use.meta();\n const accounts = useWalletsStore.use.accounts();\n const selectedWallets = useWalletsStore.use.selectedWallets();\n const initSelectedWallets = useWalletsStore.use.initSelectedWallets();\n const setSelectedWallet = useWalletsStore.use.setSelectedWallet();\n\n const { getWalletInfo, connect } = useWallets();\n const confirmDisabled = !requiredWallets(bestRoute).every((chain) =>\n selectedWallets.map((wallet) => wallet.chain).includes(chain),\n );\n\n useEffect(() => {\n initSelectedWallets();\n }, []);\n\n const selectableWallets = getSelectableWallets(\n accounts,\n selectedWallets,\n getWalletInfo,\n getRequiredChains(bestRoute),\n );\n\n const handleConnectChain = (wallet: string) => {\n const network = wallet as Network;\n getKeplrCompatibleConnectedWallets(selectableWallets).forEach(\n (compatibleWallet: WalletType) =>\n connect?.(compatibleWallet, network)\n );\n }\n \n return (\n <ConfirmWallets\n requiredWallets={getRequiredChains(bestRoute)}\n selectableWallets={selectableWallets}\n onBack={() => navigate(-1)}\n swap={bestRoute!}\n onConfirm={() => navigate(navigationRoutes.confirmSwap)}\n onChange={(wallet) => setSelectedWallet(wallet)}\n confirmDisabled={confirmDisabled}\n handleConnectChain={(wallet) => handleConnectChain(wallet)}\n isExperimentalChain={(wallet) => getKeplrCompatibleConnectedWallets(selectableWallets).length > 0 ? isExperimentalChain(blockchains , wallet) : false}\n />\n );\n}","//TODO: remove mock data after queue manager integration\nexport const pendingSwap: any = {\n creationTime: '1675837879344',\n finishTime: '1675842500799',\n requestId: 'c40b81cd-fdac-4dad-bfef-1c7b2cff715f',\n inputAmount: '2',\n wallets: {\n POLYGON: {\n walletType: 'metamask',\n address: '0x2702d89c1c8658b49c45dd460deebcc45faec03c',\n },\n SOLANA: {\n walletType: 'phantom',\n address: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n },\n },\n status: 'success',\n isPaused: false,\n extraMessage: null,\n extraMessageSeverity: 'info',\n extraMessageDetail: '',\n extraMessageErrorCode: null,\n networkStatusExtraMessage: '',\n networkStatusExtraMessageDetail: '',\n lastNotificationTime: null,\n settings: {\n slippage: '13.0',\n disabledSwappersIds: [\n 'PancakeSwapBsc',\n 'ThorChain',\n 'Horizon Bridge',\n 'OneInchOptimism',\n 'OneInchGnosis',\n 'OneInchBsc',\n 'OneInchArbitrum',\n 'OpenOceanFantom',\n 'SushiHarmony',\n 'SushiArbitrum',\n 'OkcSwap',\n 'CherrySwap',\n 'Osmosis',\n 'SolanaWrapper',\n 'Jupiter',\n 'stargate',\n 'AnySwap',\n 'Satellite',\n 'Diffusion',\n 'JunoSwap',\n 'PangolinSwap',\n 'MMFinance',\n 'CronaSwap',\n 'VVSFinance',\n 'MDexHeco',\n 'ParaSwap Polygon',\n 'ParaSwap Bsc',\n 'ParaSwap Avalanche',\n 'AuroraSwap',\n 'Across',\n 'Arbitrum Bridge',\n 'TrisolarisSwap',\n 'Polygon Bridge',\n 'SpookySwap',\n 'Rainbow Bridge',\n 'Lido',\n 'Symbiosis',\n 'Avalanche Bridge',\n 'VoltageSwap',\n 'Stargate Aggregator',\n 'Across Aggregator',\n 'THORChain Aggregator',\n 'CBridge Aggregator',\n 'AnySwap Aggregator',\n 'Hyphen Aggregator',\n 'Optimism Bridge',\n 'OolongSwap',\n 'QuickSwap',\n 'StellaSwap',\n 'Hyphen',\n 'ViperSwap',\n 'cBridge v2.0',\n 'FinKujira',\n 'Hop',\n 'BeamSwap',\n 'SolarbeamSwap',\n 'Sifchain',\n 'Wormhole',\n 'EthUniSwapV2',\n 'OneInchPolygon',\n ],\n disabledSwappersGroups: [],\n },\n simulationResult: {\n outputAmount: '0.084249153',\n swaps: [\n {\n swapperId: 'QuickSwap',\n swapperLogo: 'https://api.rango.exchange/swappers/quick-swap.png',\n swapperType: 'DEX',\n from: {\n symbol: 'USDC',\n logo: 'https://api.rango.exchange/i/ns0AMf',\n blockchainLogo: 'https://api.rango.exchange/blockchains/polygon.svg',\n address: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n blockchain: 'POLYGON',\n decimals: 6,\n usdPrice: 0.999792,\n },\n to: {\n symbol: 'SOL',\n logo: 'https://api.rango.exchange/i/YhJ1nK',\n blockchainLogo: 'https://api.rango.exchange/blockchains/polygon.svg',\n address: '0xd93f7e271cb87c23aaa73edc008a79646d1f9912',\n blockchain: 'POLYGON',\n decimals: 9,\n usdPrice: 23.700913462284028,\n },\n fromAmount: '2.000000',\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n fromAmountRestrictionType: null,\n toAmount: '0.084249153',\n fee: [\n {\n asset: {\n blockchain: 'POLYGON',\n symbol: 'USDC',\n address: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n },\n expenseType: 'DECREASE_FROM_OUTPUT',\n amount: '0.006000000000000000124900090270330110797658562660217285156250000000',\n name: 'Swapper Fee',\n },\n {\n asset: {\n blockchain: 'POLYGON',\n symbol: 'MATIC',\n address: null,\n },\n expenseType: 'FROM_SOURCE_WALLET',\n amount: '0.032758180196833611',\n name: 'Network Fee',\n },\n ],\n estimatedTimeInSeconds: 60,\n swapChainType: 'INTER_CHAIN',\n routes: [\n {\n nodes: [\n {\n nodes: [\n {\n marketName: 'QuickSwap',\n marketId: 'QuickSwap',\n percent: 1,\n },\n ],\n from: 'USDC',\n fromLogo: '',\n fromAddress: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n fromBlockchain: 'POLYGON',\n\n to: 'SOL',\n toLogo: '',\n toAddress: '0xd93f7e271cb87c23aaa73edc008a79646d1f9912',\n toBlockchain: 'POLYGON',\n },\n ],\n },\n ],\n recommendedSlippage: null,\n warnings: [],\n timeStat: {\n min: 7,\n avg: 59,\n max: 736,\n },\n includesDestinationTx: false,\n internalSwaps: null,\n maxRequiredSign: 1,\n fromAsset: {\n blockchain: 'POLYGON',\n symbol: 'USDC',\n address: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n },\n toAsset: {\n blockchain: 'POLYGON',\n symbol: 'SOL',\n address: '0xd93f7e271cb87c23aaa73edc008a79646d1f9912',\n },\n },\n {\n swapperId: 'Wormhole',\n swapperLogo: 'https://api.rango.exchange/swappers/wormhole.png',\n swapperType: 'BRIDGE',\n from: {\n symbol: 'SOL',\n logo: 'https://api.rango.exchange/i/YhJ1nK',\n blockchainLogo: 'https://api.rango.exchange/blockchains/polygon.svg',\n address: '0xd93f7e271cb87c23aaa73edc008a79646d1f9912',\n blockchain: 'POLYGON',\n decimals: 9,\n usdPrice: 23.700913462284028,\n },\n to: {\n symbol: 'SOL',\n logo: 'https://api.rango.exchange/i/eLHYrb',\n blockchainLogo: 'https://api.rango.exchange/blockchains/solana.svg',\n address: null,\n blockchain: 'SOLANA',\n decimals: 9,\n usdPrice: 23.97093428787272,\n },\n fromAmount: '0.084249153',\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n fromAmountRestrictionType: null,\n toAmount: '0.084249153',\n fee: [\n {\n asset: {\n blockchain: 'POLYGON',\n symbol: 'MATIC',\n address: null,\n },\n expenseType: 'FROM_SOURCE_WALLET',\n amount: '0.042205949048288939',\n name: 'Network Fee',\n },\n {\n asset: {\n blockchain: 'SOLANA',\n symbol: 'SOL',\n address: null,\n },\n expenseType: 'FROM_DESTINATION_WALLET',\n amount: '0.000070000',\n name: 'Swapper Fee',\n },\n ],\n estimatedTimeInSeconds: 150,\n swapChainType: 'INTRA_CHAIN',\n routes: null,\n recommendedSlippage: null,\n warnings: [],\n timeStat: {\n min: 42,\n avg: 146,\n max: 5582,\n },\n includesDestinationTx: true,\n internalSwaps: null,\n maxRequiredSign: 6,\n fromAsset: {\n blockchain: 'POLYGON',\n symbol: 'SOL',\n address: '0xd93f7e271cb87c23aaa73edc008a79646d1f9912',\n },\n toAsset: {\n blockchain: 'SOLANA',\n symbol: 'SOL',\n address: null,\n },\n },\n ],\n resultType: 'OK',\n },\n validateBalanceOrFee: true,\n steps: [\n {\n id: 1,\n fromBlockchain: 'POLYGON',\n fromSymbol: 'USDC',\n fromSymbolAddress: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n fromDecimals: 6,\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n toBlockchain: 'POLYGON',\n fromLogo: 'https://api.rango.exchange/i/ns0AMf',\n fromBlockchainLogo: 'https://api.rango.exchange/blockchains/polygon.svg',\n toBlockchainLogo: 'https://api.rango.exchange/blockchains/solana.svg',\n toSymbol: 'SOL',\n toSymbolAddress: '0xd93f7e271cb87c23aaa73edc008a79646d1f9912',\n toDecimals: 9,\n toLogo: 'https://api.rango.exchange/i/YhJ1nK',\n startTransactionTime: 1675837904769,\n swapperId: 'QuickSwap',\n swapperLogo: 'https://api.rango.exchange/swappers/quick-swap.png',\n expectedOutputAmountHumanReadable: '0.084249153',\n outputAmount: '0.084206923',\n status: 'success',\n networkStatus: 'networkChanged',\n executedTransactionId: '0xb2a6b1b497b660bd58d8583d05425ea1b89fa19efc18c9b3baa501abf5f8cee9',\n externalTransactionId: null,\n explorerUrl: [\n {\n url: 'https://polygonscan.com/tx/0xb2a6b1b497b660bd58d8583d05425ea1b89fa19efc18c9b3baa501abf5f8cee9',\n description: 'swap',\n },\n ],\n trackingCode: null,\n cosmosTransaction: null,\n solanaTransaction: null,\n evmTransaction: {\n type: 'EVM',\n blockChain: 'POLYGON',\n isApprovalTx: false,\n from: '0x2702d89c1c8658b49c45dd460deebcc45faec03c',\n to: '0x38F7Aa5370439E879370E24AdD063a11Bd74610D',\n spender: null,\n data: '0xa60fdfb60000000000000000000000002791bca1f2de4661ed88a30c99a7a9449aa84174000000000000000000000000d93f7e271cb87c23aaa73edc008a79646d1f991200000000000000000000000000000000000000000000000000000000001e84800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010438ed173900000000000000000000000000000000000000000000000000000000001e848000000000000000000000000000000000000000000000000000000000045e6b7b00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000038f7aa5370439e879370e24add063a11bd74610d0000000000000000000000000000000000000000000000000000000063e348d800000000000000000000000000000000000000000000000000000000000000020000000000000000000000002791bca1f2de4661ed88a30c99a7a9449aa84174000000000000000000000000d93f7e271cb87c23aaa73edc008a79646d1f991200000000000000000000000000000000000000000000000000000000',\n value: null,\n gasLimit: '0x62f20',\n gasPrice: '247516799843',\n nonce: null,\n },\n evmApprovalTransaction: null,\n transferTransaction: null,\n diagnosisUrl: null,\n internalSteps: null,\n },\n {\n id: 2,\n fromBlockchain: 'POLYGON',\n fromSymbol: 'SOL',\n fromSymbolAddress: '0xd93f7e271cb87c23aaa73edc008a79646d1f9912',\n fromDecimals: 9,\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n toBlockchain: 'SOLANA',\n fromLogo: 'https://api.rango.exchange/i/YhJ1nK',\n fromBlockchainLogo: 'https://api.rango.exchange/blockchains/polygon.svg',\n toBlockchainLogo: 'https://api.rango.exchange/blockchains/solana.svg',\n toSymbol: 'SOL',\n toSymbolAddress: null,\n toDecimals: 9,\n toLogo: 'https://api.rango.exchange/i/eLHYrb',\n startTransactionTime: 1675842459076,\n swapperId: 'Wormhole',\n swapperLogo: 'https://api.rango.exchange/swappers/wormhole.png',\n expectedOutputAmountHumanReadable: '0.084249153',\n outputAmount: '0.08420692',\n status: 'failed',\n networkStatus: 'networkChanged',\n executedTransactionId:\n '5MGhqrNRwRKkHGU11S37mgF7LscXWhAvwBeAWEdxcmV9AD6bNqig6iCCzC4mKBH41JBexKb6kj4axLfcH4XZQsT9',\n externalTransactionId: null,\n explorerUrl: [\n {\n url: 'https://solscan.io/tx/2wvqHEy5hCDfpwZM5sZhBpFxXZL7p6PRqpDdCZGpGF85deGQU9oiBC9Jgoszdo8x9hjkySktGPYzubcXP8pxW3H4',\n description: 'Associate Token',\n },\n {\n url: 'https://polygonscan.com/tx/0xcdd0c684fc203d41a0eaacfba2201ab0a48845bb6d0f0805fb4a70a0f971a599',\n description: 'Transfer',\n },\n {\n url: 'https://solscan.io/tx/5rc5EHfMrChB749RsJew1ze35yQMddafkQqy5JFqcdKPJ6j2NiggGT7UDmFDAXzP2AwHGyFj2XjaYr7RQjjc1KmH',\n description: 'Verify vaa 1',\n },\n {\n url: 'https://solscan.io/tx/5xNgHvdzu63fmF7uojrHuqcHC3NgErpdGiSg38X7KZ7EEjTyPWt8W1QUtuyUFcNcSjGkFGrGzfnkRUbe4Hj6oY2v',\n description: 'Verify vaa 2',\n },\n {\n url: 'https://solscan.io/tx/3FnXLYwwpc93o2TyjKNDfiBcRDZ9W1qJVdmCjTRw3kz4Jrwjr5zQzLSbsbbBzqFNMSxBFcUDaiQ7pP4DL5coUGq',\n description: 'Post vaa',\n },\n {\n url: 'https://solscan.io/tx/5MGhqrNRwRKkHGU11S37mgF7LscXWhAvwBeAWEdxcmV9AD6bNqig6iCCzC4mKBH41JBexKb6kj4axLfcH4XZQsT9',\n description: 'Redeem',\n },\n ],\n trackingCode: null,\n cosmosTransaction: null,\n solanaTransaction: {\n type: 'SOLANA',\n blockChain: 'SOLANA',\n from: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n identifier: 'redeem',\n instructions: [\n {\n keys: [\n {\n pubkey: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: 'DapiQYH3BGonhN8cngWcXQ6SrqSm3cwysoznoHr6Sbsx',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: 'Wf8aqunuZ9y1tprCihMateij299Pa57XL15a6EQz9qt',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: 'FTWSFuqyc6B5BbarBzuHdBofA2ks12eyRNmUfKmDiUN1',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: 'J6fNPeeJc1E2zDRUtvD9aaC9kBsEq7JaFr1oa97DAJhj',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: '8nUPRxuXUJPbWiCbqCPrVLkmXqR8LdifLrRW3VjCQDhZ',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: '8nUPRxuXUJPbWiCbqCPrVLkmXqR8LdifLrRW3VjCQDhZ',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: '2nQNF8F9LLWMqdjymiLK2u8HoHMvYa4orCXsp3w65fQ2',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: 'So11111111111111111111111111111111111111112',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: 'GugU1tP7doLeTw9hQP51xRJyS8Da1fWxuiy2rVrnMD2m',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: 'SysvarRent111111111111111111111111111111111',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: '11111111111111111111111111111111',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: 'worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n isSigner: false,\n isWritable: false,\n },\n ],\n programId: 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb',\n data: [2],\n },\n {\n keys: [\n {\n pubkey: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: '72pK2FqwMYPr9ajAhzLNQq8e5S2Rf33MGpVXxdXwCT6V',\n isSigner: true,\n isWritable: true,\n },\n ],\n programId: '11111111111111111111111111111111',\n data: [\n 0, 0, 0, 0, -16, 29, 31, 0, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 6, -35, -10, -31,\n -41, 101, -95, -109, -39, -53, -31, 70, -50, -21, 121, -84, 28, -76, -123, -19, 95,\n 91, 55, -111, 58, -116, -11, -123, 126, -1, 0, -87,\n ],\n },\n {\n keys: [\n {\n pubkey: '72pK2FqwMYPr9ajAhzLNQq8e5S2Rf33MGpVXxdXwCT6V',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: 'So11111111111111111111111111111111111111112',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: 'SysvarRent111111111111111111111111111111111',\n isSigner: false,\n isWritable: false,\n },\n ],\n programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n data: [1],\n },\n {\n keys: [\n {\n pubkey: '8nUPRxuXUJPbWiCbqCPrVLkmXqR8LdifLrRW3VjCQDhZ',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: '72pK2FqwMYPr9ajAhzLNQq8e5S2Rf33MGpVXxdXwCT6V',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n isSigner: true,\n isWritable: false,\n },\n ],\n programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n data: [3, 72, -27, 4, 5, 0, 0, 0, 0],\n },\n {\n keys: [\n {\n pubkey: '72pK2FqwMYPr9ajAhzLNQq8e5S2Rf33MGpVXxdXwCT6V',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n isSigner: true,\n isWritable: false,\n },\n ],\n programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n data: [9],\n },\n ],\n recentBlockhash: '2wBCvR3jVNj6wzL8vHSuqTRtxBYiwhtoY6Gkp6WaBxSG',\n signatures: [\n {\n publicKey: '72pK2FqwMYPr9ajAhzLNQq8e5S2Rf33MGpVXxdXwCT6V',\n signature: [\n -116, 17, -5, 86, -122, 120, -7, -53, -29, -15, -70, -100, 16, 48, 113, -42, 8, 126,\n 75, -13, 63, -31, -17, 1, 74, 85, 77, 90, 98, -15, 104, 63, 4, -74, 45, -3, -3, -117,\n -24, -56, 20, -89, -40, 33, 125, -120, -44, -75, 17, 69, 20, -48, 106, 48, 16, -19,\n 83, 123, -77, 93, -20, -27, -77, 7,\n ],\n },\n ],\n serializedMessage: null,\n },\n evmTransaction: null,\n evmApprovalTransaction: null,\n transferTransaction: null,\n diagnosisUrl: null,\n internalSteps: [\n {\n name: 'associate token address',\n state: 'SUCCESSED',\n current: false,\n },\n {\n name: 'transfer',\n state: 'SUCCESSED',\n current: false,\n },\n {\n name: 'signed vaa',\n state: 'SUCCESSED',\n current: false,\n },\n {\n name: 'verify vaa#1',\n state: 'SUCCESSED',\n current: false,\n },\n {\n name: 'verify vaa#2',\n state: 'SUCCESSED',\n current: false,\n },\n {\n name: 'post vaa',\n state: 'SUCCESSED',\n current: false,\n },\n {\n name: 'redeem',\n state: 'SUCCESSED',\n current: true,\n },\n ],\n },\n ],\n};\n","import { SwapHistory } from '@rango-dev/ui';\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { pendingSwap } from '../mockData/pendingSwap';\n\nexport function SwapDetailsPage() {\n const navigate = useNavigate();\n return <SwapHistory onBack={navigate.bind(null, -1)} pendingSwap={pendingSwap} />;\n}\n","import React from 'react';\nimport { useRoutes } from 'react-router-dom';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { ConfirmSwapPage } from '../pages/ConfirmSwapPage';\nimport { HistoryPage } from '../pages/HistoryPage';\nimport { Home } from '../pages/Home';\nimport { LiquiditySourcePage } from '../pages/LiquiditySourcesPage';\nimport { SelectChainPage } from '../pages/SelectChainPage';\nimport { SelectTokenPage } from '../pages/SelectTokenPage';\nimport { SettingsPage } from '../pages/SettingsPage';\nimport { WalletsPage } from '../pages/WalletsPage';\nimport { ConfirmWalletsPage } from '../pages/ConfirmWalletsPage';\nimport { SwapDetailsPage } from '../pages/SwapDetailsPage';\n\nexport const AppRoutes = () =>\n useRoutes([\n { path: navigationRoutes.home, element: <Home /> },\n { path: navigationRoutes.fromChain, element: <SelectChainPage type=\"from\" /> },\n { path: navigationRoutes.toChain, element: <SelectChainPage type=\"to\" /> },\n { path: navigationRoutes.fromToken + '/*', element: <SelectTokenPage type=\"from\" /> },\n { path: navigationRoutes.toToken, element: <SelectTokenPage type=\"to\" /> },\n { path: navigationRoutes.settings, element: <SettingsPage /> },\n {\n path: navigationRoutes.liquiditySources,\n element: <LiquiditySourcePage />,\n },\n { path: navigationRoutes.history, element: <HistoryPage /> },\n { path: navigationRoutes.wallets, element: <WalletsPage /> },\n { path: navigationRoutes.confirmSwap, element: <ConfirmSwapPage /> },\n { path: navigationRoutes.confirmWallets, element: <ConfirmWalletsPage /> },\n { path: navigationRoutes.swapDetails, element: <SwapDetailsPage /> },\n ]);\n","import { Button, AddWalletIcon, Typography, styled } from '@rango-dev/ui';\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useWallets } from '@rango-dev/wallets-core';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { AppRoutes } from './AppRoutes';\nimport { useWalletsStore } from '../store/wallets';\nimport { calculateWalletUsdValue, getSelectableWallets } from '../utils/wallets';\n\nconst Header = styled('div', {\n display: 'flex',\n width: '100%',\n justifyContent: 'end',\n});\n\nconst WalletImage = styled('img', {\n width: '$24',\n height: '$24',\n marginLeft: -15,\n marginRight: '$6',\n borderRadius: '99999px',\n});\n\nexport function Layout() {\n const navigate = useNavigate();\n const { balances, accounts, selectedWallets } = useWalletsStore();\n const { getWalletInfo } = useWallets();\n const filterSelelectedWallets = getSelectableWallets(accounts, selectedWallets, getWalletInfo);\n const totalBalance = calculateWalletUsdValue(balances);\n\n return (\n <>\n <Header>\n <Button\n size=\"small\"\n suffix={<AddWalletIcon size={20} />}\n variant=\"ghost\"\n flexContent\n onClick={() => navigate(navigationRoutes.wallets)}>\n {accounts?.length ? (\n filterSelelectedWallets.map((selectedWallet, index) => (\n <WalletImage key={index} src={selectedWallet.image} />\n ))\n ) : (\n <></>\n )}\n <Typography variant=\"body2\">\n {!accounts?.length ? 'Connect Wallet' : `$${totalBalance || 0}`}\n </Typography>\n </Button>\n </Header>\n <AppRoutes />\n </>\n );\n}\n","import { globalCss } from '@rango-dev/ui';\n\nexport const globalStyles = globalCss({\n '*': {\n '&::-webkit-scrollbar': { width: '$8' },\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: '$neutrals400',\n },\n '&::-webkit-scrollbar-thumb:hover': {\n backgroundColor: '$neutrals500',\n },\n '&::-webkit-scrollbar-track': {\n backgroundColor: '$neutrals300',\n },\n },\n});\n","import { lightTheme, darkTheme } from '@rango-dev/ui';\nimport { useState, useEffect } from 'react';\nimport { useMetaStore } from '../store/meta';\nimport { useSettingsStore } from '../store/settings';\n\nexport function useTheme() {\n const theme = useSettingsStore.use.theme();\n const fetchMeta = useMetaStore.use.fetchMeta();\n\n const [OSTheme, setOSTheme] = useState(lightTheme);\n useEffect(() => {\n (async () => {\n await fetchMeta();\n })();\n\n const switchTheme = (event: MediaQueryListEvent) => {\n if (event.matches) setOSTheme(darkTheme);\n else setOSTheme(lightTheme);\n };\n\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n setOSTheme(darkTheme);\n }\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', switchTheme);\n return () => {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', switchTheme);\n };\n }, []);\n\n const getActiveTheme = () => {\n if (theme === 'auto') return OSTheme;\n else return theme === 'dark' ? darkTheme : lightTheme;\n };\n\n return { activeTheme: getActiveTheme() };\n}\n","import { SwapContainer } from '@rango-dev/ui';\nimport React from 'react';\nimport { AppRouter } from './components/AppRouter';\nimport { useMetaStore } from './store/meta';\nimport { Events, Provider } from '@rango-dev/wallets-core';\nimport { allProviders } from '@rango-dev/provider-all';\nimport { EventHandler } from '@rango-dev/wallets-core/dist/wallet';\nimport { isEvmBlockchain, Network } from '@rango-dev/wallets-shared';\nimport {\n prepareAccountsForWalletStore,\n walletAndSupportedChainsNames,\n} from './utils/wallets';\nimport { useWalletsStore } from './store/wallets';\nimport { Layout } from './components/Layout';\nimport { globalStyles } from './globalStyles';\nimport { useTheme } from './hooks/useTheme';\n\nconst providers = allProviders();\n\nexport const SwapBox: React.FC = () => {\n globalStyles();\n const { activeTheme } = useTheme();\n const { blockchains } = useMetaStore.use.meta();\n const disconnectWallet = useWalletsStore.use.disconnectWallet();\n const connectWallet = useWalletsStore.use.connectWallet();\n const evmBasedChainNames = blockchains\n .filter(isEvmBlockchain)\n .map((chain) => chain.name);\n\n const onUpdateState: EventHandler = (type, event, value, supportedChains) => {\n if (event === Events.ACCOUNTS) {\n if (value) {\n const supportedChainNames: Network[] | null =\n //@ts-ignore\n walletAndSupportedChainsNames(supportedChains);\n const data = prepareAccountsForWalletStore(\n type,\n value,\n evmBasedChainNames,\n supportedChainNames\n );\n connectWallet(data);\n } else {\n disconnectWallet(type);\n }\n }\n };\n\n return (\n <Provider\n allBlockChains={blockchains}\n providers={providers}\n onUpdateState={onUpdateState}\n >\n <div id=\"pageContainer\" className={activeTheme}>\n <SwapContainer>\n <AppRouter>\n <Layout />\n </AppRouter>\n </SwapContainer>\n </div>\n </Provider>\n );\n};\n"],"names":["ZERO","BigNumber","numberToString","number","minDecimals","maxDecimals","n","roundingMode","maxI","i","toFixed","eq","gte","toFormat","Math","min","max","pow","isEqualTo","getBestRouteToTokenUsdPrice","bestRoute","result","swaps","length","to","usdPrice","compareRoutes","route1","route2","inputAmount","fromTokenUsdPrice","toTokenUsdPrice","outUsdValue","outputAmount","multipliedBy","isNaN","inUsdValue","outToInRatio","lte","div","minus","disableSwapButton","parseInt","isChanged","warningMessage","out1","out2","changePercent","toNumber","route1Swaps","route2Swaps","swapperId","symbol","getRequiredBalanceOfWallet","wallet","fee","relatedFeeStatus","find","item","blockchain","chain","wallets","it","address","toLowerCase","requiredAssets","createSelectors","_store","store","use","k","Object","keys","getState","s","getUsdValue","token","amount","useBestRouteStore","create","immer","set","fromChain","fromToken","inputUsdValue","outputUsdValue","toChain","toToken","setBestRoute","state","setFromChain","setFromToken","setToChain","setToToken","setInputAmount","httpService","RangoClient","process","env","REACT_API_KEY","removeDuplicateFrom","array","Array","from","Set","useMetaStore","meta","blockchains","popularTokens","swappers","tokens","loadingStatus","fetchMeta","response","getAllMetadata","chainThatHasTokenInMetaResponse","map","t","enabledChains","filter","enabled","includes","name","sort","a","b","error","SearchParams","searchParamsToToken","searchParams","symbolAndAddress","split","UpdateUrl","firstRender","useRef","setSearchParams","useSearchParams","location","useLocation","useEffect","current","fromChainString","fromTokenString","toChainString","toTokenString","fromAmount","FROM_CHAIN","FROM_TOKEN","TO_CHAIN","TO_TOKEN","FROM_AMOUNT","toString","replace","pathname","fronChainString","get","AppRouter","children","isRouterInContext","useInRouterContext","Router","Fragment","MemoryRouter","React","getStateWallet","connected","WalletStatus","CONNECTED","connecting","CONNECTING","installed","NOT_INSTALLED","DISCONNECTED","getlistWallet","getWalletInfo","list","excludedWallets","WalletType","UNKNOWN","TERRA_STATION","LEAP","type","img","image","installLink","walletAndSupportedChainsNames","supportedChains","blockchainMeta","prepareAccountsForWalletStore","accounts","evmBasedChains","supportedChainNames","addAccount","network","newAccount","walletType","push","forEach","account","readAccountAddress","hasLimitation","isSupported","isUnknown","Network","Unknown","notSupportedNetworkByWallet","isUknownAndEvmBased","isEvmAddress","isEvmBasedChain","evmChainsSupportedByWallet","getRequiredChains","route","swap","currentStepFromBlockchain","currentStepToBlockchain","lastAddedWallet","getSelectableWallets","selectedWallets","requiredChains","connectedWallets","selected","index","findIndex","w","removeDuplicateWallets","arr","key","Map","values","getBalanceFromWallet","balances","selectedChainBalances","balance","bl","parseFloat","isAccountAndBalanceMatched","makeBalanceFor","retrivedBalance","blockChain","explorerUrl","loading","tokenBalance","asset","ticker","rawAmount","decimal","decimals","shiftedBy","logo","getUsdPrice","resetBalanceState","calculateWalletUsdValue","uniqueAccountAddresses","uniqueBalane","reduce","acc","modifiedWalletBlockchains","modifiedWalletBlockchain","has","add","accountAddress","total","flatMap","plus","numberWithThousandSeperator","parts","join","sortedTokens","position","walletSymbols","gt","sortedList","size","tokenA","tokenB","compareBalance","isSecondaryCoin","tokenAUsdValue","tokenBUsdValue","allTokens","toUpperCase","isExperimentalChain","cosmosExperimentalChainInfo","getCosmosExperimentalChainInfo","entries","isCosmosBlockchain","getKeplrCompatibleConnectedWallets","selectableWallets","connectedWalletTypes","KEPLR_COMPATIBLE_WALLETS","compatibleWallet","useWalletsStore","connectWallet","concat","getWalletsDetails","Error","disconnectWallet","initSelectedWallets","anyWalletSelected","firstWalletWithMatchedChain","setSelectedWallet","selectedWallet","navigationRoutes","home","settings","liquiditySources","history","confirmSwap","confirmWallets","swapDetails","useSettingsStore","persist","slippage","customSlippage","infinitApprove","disabledLiquiditySources","theme","setSlippage","setCustomSlippage","toggleAllLiquiditySources","allSwappers","swapper","swapperGroup","toggleInfinitApprove","toggleLiquiditySource","liquiditySource","setTheme","useConfirmSwap","setLoading","useState","setError","warning","setWarning","data","setData","feeStatus","setFeeStatus","bestRouteChanged","setBestRouteChanged","enoughBalance","setEnoughBalance","hasEnoughBalanceOrProperSlippage","userSlippage","routeChanged","validationStatus","hasEnoughBalance","ok","slippages","recommendedSlippage","slippageError","minSlippage","checkFeeAndBalance","selectedWalletsMap","chainAndAccounts","addresses","r","getBestRoute","checkPrerequisites","swapperGroups","swappersGroupsExclude","catch","message","requestAmount","routeChangeStatus","hasEnoughBalanceOrSlippage","proceedAnyway","then","console","log","ConfirmSwapPage","navigate","useNavigate","ConfirmSwap","onConfirm","bind","onBack","pendingSwap","creationTime","finishTime","requestId","OSMOSIS","status","isPaused","extraMessage","extraMessageSeverity","extraMessageDetail","extraMessageErrorCode","networkStatusExtraMessage","networkStatusExtraMessageDetail","lastNotificationTime","disabledSwappersIds","disabledSwappersGroups","simulationResult","swapperType","swapperLogo","blockchainLogo","fromAmountPrecision","fromAmountMinValue","fromAmountMaxValue","toAmount","expenseType","estimatedTimeInSeconds","swapChainType","routes","nodes","marketName","marketId","percent","fromLogo","fromAddress","fromBlockchain","toLogo","toAddress","toBlockchain","timeStat","avg","includesDestinationTx","validateBalanceOrFee","steps","id","fromSymbol","fromSymbolAddress","fromDecimals","toBlockchainLogo","fromBlockchainLogo","toSymbol","toSymbolAddress","toDecimals","startTransactionTime","expectedOutputAmountHumanReadable","networkStatus","executedTransactionId","url","description","cosmosTransaction","TransactionType","COSMOS","fromWalletAddress","chainId","account_number","sequence","msgs","__type","value","sender","pool_id","token_out_denom","token_in","denom","token_out_min_amount","protoMsgs","type_url","memo","source","gas","signType","rpcUrl","rawTransfer","solanaTransaction","evmTransaction","evmApprovalTransaction","transferTransaction","diagnosisUrl","internalSteps","HistoryPage","History","onSwapClick","ButtonsContainer","styled","display","HeaderButtons","props","onClickRefresh","Tooltip","content","Button","variant","onClick","RetryIcon","HistoryIcon","SettingsIcon","HeaderContainer","justifyContent","alignItems","width","padding","Header","Typography","Box","flexDirection","Container","boxSizing","backgroundColor","borderRadius","StyledImage","maxHeight","Options","ImagePlaceholder","height","OutputContainer","flexGrow","border","paddingLeft","paddingRight","TokenInfo","tokenBalanceReal","ItemSuffix","style","InfoCircleIcon","color","AngleDownIcon","className","disabled","prefix","src","suffix","align","marginRight","displayName","TextField","autoFocus","placeholder","right","bottom","onChange","event","onAmountChange","target","undefined","paddingTop","Logo","fill","margin","StyledAnchor","textDecoration","BottomLogo","href","xmlns","viewBox","d","SwithFromAndTo","count","Footer","useBestRoute","setCount","abortControllerRef","retry","prev","abort","abortController","AbortController","requestBody","signal","res","code","errorMessages","genericServerError","getOutputRatio","outputRatioHasWarning","outputRatio","hasLimitError","minimum","maximum","isExclusive","fromAmountRestrictionType","lt","getSwapButtonTitle","highValueLoss","priceImpactCanNotBeComputed","needsToWarnEthOnPath","canComputePriceImpact","requiredWallets","SwitchButtonContainer","top","BestRouteContainer","Alerts","Home","waningMessage","loadingMetaStatus","swithFromAndTo","fetchingBestRoute","bestRouteError","noConnectedWallet","noRoutesFound","errorMessage","showBestRoute","buttonTitle","buttonDisabled","VerticalSwapIcon","BestRoute","Alert","LiquiditySourcePage","uniqueSwappersGroups","types","title","LiquiditySourcesSelector","toggleAll","SelectChainPage","setList","chainSortedByConnectedWallets","connectedChains","blockchainA","blockchainB","lastIndexOf","BlockchainSelector","SelectTokenPage","tokenWithSelectedChain","TokensWithBalance","tokenAmount","tokenUsdValue","usdValue","sortedTokenList","TokenSelector","SettingsPage","Settings","selectedSlippage","onSlippageChange","selectedLiquiditySources","onLiquiditySourcesClick","NaN","onCustomSlippageChange","maxSlippage","selectedTheme","onThemeChange","ListContainer","gap","gridTemplateColumns","alignContent","AlertContainer","paddingBottom","WalletsPage","disconnect","connect","useWallets","walletErrorMessage","setWalletErrorMessage","onSelectWallet","e","SecondaryPage","textField","Content","info","Wallet","ConfirmWalletsPage","confirmDisabled","every","handleConnectChain","ConfirmWallets","POLYGON","SOLANA","warnings","internalSwaps","maxRequiredSign","fromAsset","toAsset","resultType","externalTransactionId","trackingCode","isApprovalTx","spender","gasLimit","gasPrice","nonce","identifier","instructions","pubkey","isSigner","isWritable","programId","recentBlockhash","signatures","publicKey","signature","serializedMessage","SwapDetailsPage","SwapHistory","AppRoutes","useRoutes","path","element","WalletImage","marginLeft","Layout","filterSelelectedWallets","totalBalance","AddWalletIcon","flexContent","globalStyles","globalCss","useTheme","OSTheme","setOSTheme","lightTheme","switchTheme","matches","darkTheme","window","matchMedia","addEventListener","removeEventListener","getActiveTheme","activeTheme","providers","allProviders","SwapBox","evmBasedChainNames","isEvmBlockchain","onUpdateState","Events","ACCOUNTS","Provider","allBlockChains","SwapContainer"],"mappings":"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EAAE,EAAE,GAAG,EAAE,EAAE,EAC1D,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAC3D,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAC3D,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAC7D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1D,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC5D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE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EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAC3D,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAC7D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1D,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC5D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE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,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAC7D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1D,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC5D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAC7D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAA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"}
1
+ {"version":3,"file":"widget-embedded.cjs.production.min.js","sources":["../src/constants/navigationRoutes.ts","../src/constants/numbers.ts","../src/utils/common.ts","../src/utils/routing.ts","../src/store/selectors.ts","../src/services/httpService.ts","../src/constants/swapSettings.ts","../src/store/meta.ts","../src/store/settings.ts","../src/utils/numbers.ts","../src/utils/wallets.ts","../src/utils/swap.ts","../src/store/bestRoute.ts","../src/constants/searchParams.ts","../src/components/UpdateUrl.tsx","../src/components/HeaderButtons.tsx","../src/components/Header.tsx","../src/store/wallets.ts","../src/components/TokenInfo.tsx","../src/components/BottomLogo.tsx","../src/components/SwitchFromAndTo.tsx","../src/components/Footer.tsx","../src/constants/errors.ts","../src/pages/Home.tsx","../src/components/AppRouter.tsx","../src/store/ui.ts","../src/components/ChangeSlippageButton.tsx","../src/components/warnings/HighSlippageWarning.tsx","../src/components/warnings/ConfirmSwapExtraMessages.tsx","../src/hooks/useNavigateBack.ts","../src/store/confirmSwap.ts","../src/components/warnings/MinRequiredSlippage.tsx","../src/components/ConfirmSwapErrors.tsx","../src/components/warnings/BalanceWarnings.tsx","../src/components/ConfirmSwapWarnings.tsx","../src/pages/ConfirmSwapPage.tsx","../src/pages/HistoryPage.tsx","../src/pages/LiquiditySourcesPage.tsx","../src/pages/SelectChainPage.tsx","../src/pages/SelectTokenPage.tsx","../src/pages/SettingsPage.tsx","../src/pages/WalletsPage.tsx","../src/pages/ConfirmWalletsPage.tsx","../src/mockData/pendingSwap.ts","../src/pages/SwapDetailsPage.tsx","../src/components/AppRoutes.tsx","../src/components/Layout.tsx","../src/globalStyles.ts","../src/hooks/useTheme.ts","../src/lib.tsx"],"sourcesContent":["export const navigationRoutes = {\n home: '/',\n fromChain: '/from-chain',\n fromToken: '/from-token',\n toChain: '/to-chain',\n toToken: '/to-token',\n settings: '/settings',\n liquiditySources: '/settings/liquidity-sources',\n history: '/history',\n wallets: '/wallets',\n confirmSwap: '/confirm-swap',\n confirmWallets: '/confirm-wallets',\n swapDetails: '/history/swap-details',\n};\n","import BigNumber from 'bignumber.js';\n\nexport const ZERO = new BigNumber(0);\n","export function removeDuplicateFrom<T>(array: T[]): T[] {\n return Array.from(new Set(array));\n}\n\nexport function areEqual(array1: (number | string)[], array2: (number | string)[]) {\n return array1.length === array2.length && array1.every((v, i) => v === array2[i]);\n}\n","import {\n SimulationAssetAndAmount,\n SimulationValidationStatus,\n} from '@rango-dev/ui/dist/types/swaps';\nimport BigNumber from 'bignumber.js';\nimport { BestRouteResponse } from 'rango-sdk';\nimport { areEqual } from './common';\nimport { SelectedWallet } from './wallets';\n\nexport const getBestRouteToTokenUsdPrice = (\n bestRoute: BestRouteResponse | null,\n): number | null | undefined =>\n bestRoute?.result?.swaps[bestRoute?.result?.swaps.length - 1].to.usdPrice;\n\nexport function isNumberOfSwapsChanged(route1: BestRouteResponse, route2: BestRouteResponse) {\n const route1Swaps = route1.result?.swaps || [];\n const route2Swaps = route2.result?.swaps || [];\n return route1Swaps.length !== route2Swaps.length;\n}\n\nexport function isRouteSwappersUpdated(route1: BestRouteResponse, route2: BestRouteResponse) {\n const route1Swappers = route1.result?.swaps.map((swap) => swap.swapperId) || [];\n const route2Swappers = route2.result?.swaps.map((swap) => swap.swapperId) || [];\n return !areEqual(route1Swappers, route2Swappers);\n}\n\nexport function isRouteInternalCoinsUpdated(route1: BestRouteResponse, route2: BestRouteResponse) {\n const route1InternalCoins = route1.result?.swaps.map((swap) => swap.to.symbol) || [];\n const route2InternalCoins = route2.result?.swaps.map((swap) => swap.to.symbol) || [];\n return !areEqual(route1InternalCoins, route2InternalCoins);\n}\n\nexport const isRouteChanged = (route1: BestRouteResponse, route2: BestRouteResponse): boolean => {\n return (\n isNumberOfSwapsChanged(route1, route2) ||\n isRouteSwappersUpdated(route1, route2) ||\n isRouteInternalCoinsUpdated(route1, route2)\n );\n};\n\nexport const outToRatioHasWarning = (fromUsdValue: BigNumber | null, outToInRatio: BigNumber | 0) =>\n (parseInt(outToInRatio?.toFixed(2) || '0') <= -10 &&\n (fromUsdValue === null || fromUsdValue.gte(new BigNumber(200)))) ||\n (parseInt(outToInRatio?.toFixed(2) || '0') <= -5 &&\n (fromUsdValue === null || fromUsdValue.gte(new BigNumber(1000))));\n\nexport const getRequiredBalanceOfWallet = (\n selectedWallet: SelectedWallet,\n fee: SimulationValidationStatus[] | null,\n): SimulationAssetAndAmount[] | null => {\n if (fee === null) return null;\n const relatedFeeStatus = fee\n ?.find((item) => item.blockchain === selectedWallet.chain)\n ?.wallets.find(\n (wallet) => wallet.address?.toLowerCase() === selectedWallet.address.toLowerCase(),\n );\n if (!relatedFeeStatus) return null;\n return relatedFeeStatus.requiredAssets;\n};\n","import { StoreApi, UseBoundStore } from 'zustand';\n\ntype State = object;\n\ntype WithSelectors<S> = S extends { getState: () => infer T }\n ? S & { use: { [K in keyof T]: () => T[K] } }\n : never;\n\nconst createSelectors = <S extends UseBoundStore<StoreApi<State>>>(_store: S) => {\n let store = _store as WithSelectors<typeof _store>;\n store.use = {};\n for (let k of Object.keys(store.getState())) {\n (store.use as any)[k] = () => store((s) => s[k as keyof typeof s]);\n }\n\n return store;\n};\n\nexport default createSelectors;\n","import { RangoClient } from 'rango-sdk';\n\nexport const httpService = new RangoClient(process.env.REACT_API_KEY as string);\n","export const SLIPPAGES = [0.5, 1, 3, 5, 8, 13, 20];\n\nexport const DEFAULT_SLIPPAGE = 1;\n\nexport const HIGH_SLIPPAGE = 5;\n\nexport const MAX_SLIPPAGE = 100;\n\nexport const MIN_SLIPPGAE = 0;\n","import { create } from 'zustand';\nimport { MetaResponse } from 'rango-sdk';\nimport { httpService } from '../services/httpService';\nimport createSelectors from './selectors';\nimport { removeDuplicateFrom } from '../utils/common';\n\nexport type LoadingStatus = 'loading' | 'success' | 'failed';\n\nexport interface MetaState {\n meta: MetaResponse;\n loadingStatus: LoadingStatus;\n fetchMeta: () => Promise<void>;\n}\n\nexport const useMetaStore = createSelectors(\n create<MetaState>()((set) => ({\n meta: { blockchains: [], popularTokens: [], swappers: [], tokens: [] },\n loadingStatus: 'loading',\n fetchMeta: async () => {\n try {\n const response = await httpService.getAllMetadata();\n const chainThatHasTokenInMetaResponse = removeDuplicateFrom(\n response.tokens.map((t) => t.blockchain),\n );\n const enabledChains = response.blockchains.filter(\n (chain) => chain.enabled && chainThatHasTokenInMetaResponse.includes(chain.name),\n );\n response.blockchains = enabledChains.sort((a, b) => a.sort - b.sort);\n set({ meta: response, loadingStatus: 'success' });\n } catch (error) {\n set({ loadingStatus: 'failed' });\n }\n },\n })),\n);\n","import { create } from 'zustand';\nimport { persist, subscribeWithSelector } from 'zustand/middleware';\nimport { DEFAULT_SLIPPAGE } from '../constants/swapSettings';\nimport { removeDuplicateFrom } from '../utils/common';\nimport { useMetaStore } from './meta';\nimport createSelectors from './selectors';\n\ntype Theme = 'auto' | 'dark' | 'light';\n\ninterface Settings {\n slippage: number;\n customSlippage: number | null;\n infiniteApprove: boolean;\n disabledLiquiditySources: string[];\n theme: Theme;\n setSlippage: (slippage: number) => void;\n setCustomSlippage: (customSlippage: number | null) => void;\n toggleInfiniteApprove: () => void;\n toggleLiquiditySource: (name: string) => void;\n setTheme: (theme: Theme) => void;\n toggleAllLiquiditySources: () => void;\n}\n\nexport const useSettingsStore = createSelectors(\n create<Settings>()(\n persist(\n subscribeWithSelector((set) => ({\n slippage: DEFAULT_SLIPPAGE,\n customSlippage: null,\n infiniteApprove: false,\n disabledLiquiditySources: [],\n theme: 'auto',\n setSlippage: (slippage) =>\n set(() => ({\n slippage: slippage,\n })),\n setCustomSlippage: (customSlippage) =>\n set(() => ({\n customSlippage: customSlippage,\n })),\n toggleAllLiquiditySources: () =>\n set((state) => {\n const { swappers } = useMetaStore.getState().meta;\n const swappersGroup = removeDuplicateFrom(\n swappers.map((swapper) => swapper.swapperGroup)\n );\n\n if (swappersGroup.length === state.disabledLiquiditySources.length)\n return { disabledLiquiditySources: [] };\n else {\n return {\n disabledLiquiditySources: swappersGroup,\n };\n }\n }),\n toggleInfiniteApprove: () =>\n set((state) => ({\n infiniteApprove: !state.infiniteApprove,\n })),\n toggleLiquiditySource: (name) =>\n set((state) => {\n if (state.disabledLiquiditySources.includes(name))\n return {\n disabledLiquiditySources: state.disabledLiquiditySources.filter(\n (liquiditySource) => liquiditySource != name\n ),\n };\n else\n return {\n disabledLiquiditySources:\n state.disabledLiquiditySources.concat(name),\n };\n }),\n setTheme: (theme) =>\n set(() => ({\n theme,\n })),\n })),\n {\n name: 'user-settings',\n }\n )\n )\n);\n","import { BigNumber } from 'bignumber.js';\nimport { BestRouteResponse } from 'rango-sdk';\n\nexport const percentToString = (p: number, fractions = 0): string => (p * 100).toFixed(fractions);\nexport const secondsToString = (s: number): string => {\n const seconds = (s % 60).toString().padStart(2, '0');\n const minutes = parseInt((s / 60).toString())\n .toString()\n .padStart(2, '0');\n return `${minutes}:${seconds}`;\n};\n\nexport const numberToString = (\n number: BigNumber | string | null,\n minDecimals: number | null = null,\n maxDecimals: number | null = null,\n): string => {\n if (number === null) return '';\n if (number === '') return '';\n const n = new BigNumber(number);\n const roundingMode = 1;\n let maxI = 1000;\n for (let i = 0; i < 60; i++) {\n if (new BigNumber(n.toFixed(i, roundingMode)).eq(n)) {\n maxI = i;\n break;\n }\n }\n\n if (n.gte(10000)) return n.toFormat(0, roundingMode);\n if (n.gte(1000))\n return n.toFormat(\n Math.min(maxI, Math.min(maxDecimals || 100, Math.max(minDecimals || 0, 1))),\n roundingMode,\n );\n if (n.gte(100))\n return n.toFormat(\n Math.min(maxI, Math.min(maxDecimals || 100, Math.max(minDecimals || 0, 1))),\n roundingMode,\n );\n if (n.gte(1))\n return n.toFormat(\n Math.min(maxI, Math.min(maxDecimals || 100, Math.max(minDecimals || 0, 2))),\n roundingMode,\n );\n if (n.gte(0.01))\n return n.toFormat(\n Math.min(maxI, Math.min(maxDecimals || 100, Math.max(minDecimals || 0, 4))),\n roundingMode,\n );\n for (let i = minDecimals || 4; i < 17; i++)\n if (n.gte(Math.pow(10, -i)))\n return n.toFormat(\n Math.min(maxI, Math.min(maxDecimals || 100, Math.max(minDecimals || 0, i))),\n roundingMode,\n );\n if (n.isEqualTo(0)) return '0';\n\n return n.toFormat(\n Math.min(maxI, Math.min(maxDecimals || 100, Math.max(minDecimals || 0, 8))),\n roundingMode,\n );\n};\n\nexport const convertBigNumberToHex = (value: BigNumber, decimals: number): string => {\n return '0x' + value.shiftedBy(decimals).toString(16);\n};\n\nexport const uint8ArrayToHex = (buffer: Uint8Array): string => {\n // buffer is an ArrayBuffer\n return [...buffer].map((x) => x.toString(16).padStart(2, '0')).join('');\n};\n\nexport function dollarToConciseString(num: number | undefined): string {\n if (!num) return '-';\n if (num < 1) return ' < 1$';\n if (num < 1000) return numberToString(new BigNumber(num)) + '$';\n if (num < 10_000) return parseInt((num / 100).toString()) / 10 + 'K';\n if (num < 1_000_000) return parseInt((num / 1000).toString()) + 'K';\n if (num < 100_000_000) return parseInt((num / 100000).toString()) / 10 + 'M';\n return parseInt((num / 1000000).toString()) + 'M';\n}\n\nexport function removeExtraDecimals(num: string, maxDecimals: number): string {\n try {\n if (!num.includes('.')) return num;\n const [b, f] = num.split('.');\n if (f && f.length > maxDecimals) {\n return `${b}.${f.substring(0, maxDecimals)}`;\n }\n return num;\n } catch (e) {\n return num;\n }\n}\n\nexport const totalArrivalTime = (data: BestRouteResponse | null) =>\n data?.result?.swaps?.reduce((a, b) => a + b.estimatedTimeInSeconds, 0) || 0;\n\nexport const rawFees = (data: BestRouteResponse): string =>\n (\n data?.result?.swaps?.flatMap((s) => s.fee.map((f) => ({ swapperId: s.swapperId, fee: f }))) ||\n []\n )\n .reduce((partialSum, a) => partialSum + parseFloat(a.fee.amount), 0)\n .toFixed(3);\n\nexport const decimalNumber = (number = '0', toFixed: number) => parseFloat(number).toFixed(toFixed);\n\nexport const containsText = (text: string, searchText: string) =>\n text.toLowerCase().indexOf(searchText.toLowerCase()) > -1;\n","import {\n getCosmosExperimentalChainInfo,\n isEvmAddress,\n KEPLR_COMPATIBLE_WALLETS,\n Network,\n WalletInfo,\n WalletState,\n WalletType,\n isCosmosBlockchain,\n} from '@rango-dev/wallets-shared';\n\nimport {\n WalletInfo as ModalWalletInfo,\n WalletState as WalletStatus,\n SelectableWallet,\n} from '@rango-dev/ui';\nimport {\n BestRouteResponse,\n BlockchainMeta,\n Token,\n WalletDetail,\n} from 'rango-sdk';\nimport { readAccountAddress } from '@rango-dev/wallets-core';\nimport { Account, Balance, TokenBalance } from '../store/wallets';\nimport { numberToString } from './numbers';\nimport BigNumber from 'bignumber.js';\nimport { TokenWithBalance } from '../pages/SelectTokenPage';\nimport { ZERO } from '../constants/numbers';\n\nexport function getStateWallet(state: WalletState): WalletStatus {\n switch (true) {\n case state.connected:\n return WalletStatus.CONNECTED;\n case state.connecting:\n return WalletStatus.CONNECTING;\n case !state.installed:\n return WalletStatus.NOT_INSTALLED;\n default:\n return WalletStatus.DISCONNECTED;\n }\n}\n\nexport const excludedWallets = [\n WalletType.UNKNOWN,\n WalletType.TERRA_STATION,\n WalletType.LEAP,\n];\n\nexport function getlistWallet(\n getState: (type: WalletType) => WalletState,\n getWalletInfo: (type: WalletType) => WalletInfo,\n list: WalletType[]\n): ModalWalletInfo[] {\n const excludedWallets = [\n WalletType.UNKNOWN,\n WalletType.TERRA_STATION,\n WalletType.LEAP,\n ];\n\n return list\n .filter((wallet) => !excludedWallets.includes(wallet))\n .map((type) => {\n const { name, img: image, installLink } = getWalletInfo(type);\n const state = getStateWallet(getState(type));\n return {\n name,\n image,\n installLink,\n state,\n type,\n };\n });\n}\n\nexport function walletAndSupportedChainsNames(\n supportedChains: BlockchainMeta[]\n): Network[] | null {\n if (!supportedChains) return null;\n let walletAndSupportedChainsNames: Network[] = [];\n walletAndSupportedChainsNames = supportedChains.map(\n (blockchainMeta) => blockchainMeta.name as Network\n );\n\n return walletAndSupportedChainsNames;\n}\n\nexport function prepareAccountsForWalletStore(\n wallet: WalletType,\n accounts: string[],\n evmBasedChains: string[],\n supportedChainNames: Network[] | null\n): Account[] {\n const result: Account[] = [];\n\n function addAccount(network: Network, address: string) {\n const newAccount: Account = {\n address,\n chain: network,\n walletType: wallet,\n };\n\n result.push(newAccount);\n }\n\n const supportedChains = supportedChainNames || [];\n\n accounts.forEach((account) => {\n const { address, network } = readAccountAddress(account);\n\n const hasLimitation = supportedChains.length > 0;\n const isSupported = supportedChains.includes(network);\n const isUnknown = network === Network.Unknown;\n const notSupportedNetworkByWallet =\n hasLimitation && !isSupported && !isUnknown;\n\n // Here we check given `network` is not supported by wallet\n // And also the network is known.\n if (notSupportedNetworkByWallet) return;\n\n // In some cases we can handle unknown network by checking its address\n // pattern and act on it.\n // Example: showing our evm compatible netwrok when the uknown network is evem.\n // Otherwise, we stop executing this function.\n const isUknownAndEvmBased =\n network === Network.Unknown && isEvmAddress(address);\n if (isUnknown && !isUknownAndEvmBased) return;\n\n const isEvmBasedChain = evmBasedChains.includes(network);\n\n // If it's an evm network, we will add the address to all the evm chains.\n if (isEvmBasedChain || isUknownAndEvmBased) {\n // all evm chains are not supported in wallets, so we are adding\n // only to those that are supported by wallet.\n const evmChainsSupportedByWallet = supportedChains.filter((chain) =>\n evmBasedChains.includes(chain)\n );\n\n evmChainsSupportedByWallet.forEach((network) => {\n // EVM addresses are not case sensetive.\n // Some wallets like Binance-chain return some letters in uppercase which produces bugs in our wallet state.\n addAccount(network, address.toLowerCase());\n });\n } else {\n addAccount(network, address);\n }\n });\n\n return result;\n}\n\nexport function getRequiredChains(route: BestRouteResponse | null) {\n const wallets: string[] = [];\n\n route?.result?.swaps.forEach((swap) => {\n const currentStepFromBlockchain = swap.from.blockchain;\n const currentStepToBlockchain = swap.to.blockchain;\n let lastAddedWallet = wallets[wallets.length - 1];\n if (currentStepFromBlockchain != lastAddedWallet)\n wallets.push(currentStepFromBlockchain);\n lastAddedWallet = wallets[wallets.length - 1];\n if (currentStepToBlockchain != lastAddedWallet)\n wallets.push(currentStepToBlockchain);\n });\n return wallets;\n}\n\nexport interface SelectedWallet extends Account {}\ntype Blockchain = { name: string; accounts: Balance[] };\n\nexport function getSelectableWallets(\n accounts: Account[],\n selectedWallets: SelectedWallet[],\n getWalletInfo: (type: WalletType) => WalletInfo\n): SelectableWallet[] {\n const connectedWallets: SelectableWallet[] = accounts.map((account) => ({\n address: account.address,\n walletType: account.walletType,\n chain: account.chain,\n image: getWalletInfo(account.walletType).img,\n name: getWalletInfo(account.walletType).name,\n selected: !!selectedWallets.find(\n (wallet) =>\n wallet.chain === account.chain &&\n wallet.walletType === account.walletType\n ),\n }));\n\n return connectedWallets;\n}\n\nexport function getBalanceFromWallet(\n balances: Balance[],\n chain: string,\n symbol: string,\n address: string | null\n): TokenBalance | null {\n if (balances.length === 0) return null;\n\n const selectedChainBalances = balances.filter(\n (balance) => balance.chain === chain\n );\n if (selectedChainBalances.length === 0) return null;\n\n return (\n selectedChainBalances\n .map(\n (a) =>\n a.balances?.find(\n (bl) =>\n (address !== null && bl.address === address) ||\n (address === null &&\n bl.address === address &&\n bl.symbol === symbol)\n ) || null\n )\n .filter((b) => b !== null)\n .sort(\n (a, b) => parseFloat(b?.amount || '0') - parseFloat(a?.amount || '1')\n )\n .find(() => true) || null\n );\n}\n\nexport function isAccountAndBalanceMatched(account: Account, balance: Balance) {\n return (\n account.address === balance.address &&\n account.chain === balance.chain &&\n account.walletType === balance.walletType\n );\n}\n\nexport function makeBalanceFor(\n account: Account,\n retrivedBalance: WalletDetail,\n tokens: Token[]\n): Balance {\n const {\n address,\n blockChain: chain,\n explorerUrl,\n balances = [],\n } = retrivedBalance;\n return {\n address,\n chain,\n loading: false,\n error: false,\n explorerUrl,\n walletType: account.walletType,\n balances:\n balances?.map((tokenBalance) => ({\n chain,\n symbol: tokenBalance.asset.symbol,\n ticker: tokenBalance.asset.symbol,\n address: tokenBalance.asset.address || null,\n rawAmount: tokenBalance.amount.amount,\n decimal: tokenBalance.amount.decimals,\n amount: new BigNumber(tokenBalance.amount.amount)\n .shiftedBy(-tokenBalance.amount.decimals)\n .toFixed(),\n logo: '',\n usdPrice:\n getUsdPrice(\n chain,\n tokenBalance.asset.symbol,\n tokenBalance.asset.address,\n tokens\n ) || null,\n })) || [],\n };\n}\n\nexport function resetBalanceState(balance: Balance): Balance {\n return { ...balance, loading: false, error: true };\n}\n\nexport const calculateWalletUsdValue = (balance: Balance[]) => {\n const uniqueAccountAddresses = new Set<string | null>();\n const uniqueBalane: Balance[] = balance?.reduce(\n (acc: Balance[], current: Balance) => {\n return acc.findIndex(\n (i) => i.address === current.address && i.chain === current.chain\n ) === -1\n ? [...acc, current]\n : acc;\n },\n []\n );\n\n const modifiedWalletBlockchains = uniqueBalane?.map((chain) => {\n const modifiedWalletBlockchain: Blockchain = {\n name: chain.chain,\n accounts: [],\n };\n if (!uniqueAccountAddresses.has(chain.address)) {\n uniqueAccountAddresses.add(chain.address);\n }\n uniqueAccountAddresses.forEach((accountAddress) => {\n if (chain.address === accountAddress)\n modifiedWalletBlockchain.accounts.push(chain);\n });\n return modifiedWalletBlockchain;\n });\n const total = numberToString(\n modifiedWalletBlockchains\n ?.flatMap((b) => b.accounts)\n ?.flatMap((a) => a?.balances)\n ?.map((b) =>\n new BigNumber(b?.amount || ZERO).multipliedBy(b?.usdPrice || 0)\n )\n ?.reduce((a, b) => a.plus(b), ZERO) || ZERO\n ).toString();\n\n return numberWithThousandSeperator(total);\n};\n\nfunction numberWithThousandSeperator(number: string | number): string {\n var parts = number.toString().split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n return parts.join('.');\n}\n\nexport const sortedTokens = (\n tokens: TokenWithBalance[],\n position: 'from' | 'to',\n balance: Balance[]\n): TokenWithBalance[] => {\n if (!tokens) return [];\n const walletSymbols = new Set(\n (balance || [])\n .flatMap((a) => a.balances || [])\n .filter((b) => (new BigNumber(b?.rawAmount) || ZERO).gt(0))\n .map((b) => `${b?.chain}.${b?.symbol}.${b?.address}`)\n );\n let sortedList = [\n ...tokens.filter(\n (t) => !t.address && walletSymbols.size && position === 'to'\n ),\n ...tokens\n .filter(\n (t) =>\n !(position === 'to' && !t.address) &&\n walletSymbols.has(`${t.blockchain}.${t.symbol}.${t.address}`)\n )\n .sort((tokenA, tokenB) => compareBalance(tokenA, tokenB, balance)),\n ...tokens.filter(\n (t) =>\n !walletSymbols.has(`${t.blockchain}.${t.symbol}.${t.address}`) &&\n !t.address &&\n (!walletSymbols.size || position === 'from')\n ),\n ...tokens.filter(\n (t) =>\n !walletSymbols.has(`${t.blockchain}.${t.symbol}.${t.address}`) &&\n t.address &&\n !t.isSecondaryCoin\n ),\n ...tokens.filter(\n (t) =>\n !walletSymbols.has(`${t.blockchain}.${t.symbol}.${t.address}`) &&\n t.isSecondaryCoin\n ),\n ];\n\n return sortedList;\n};\n\nconst compareBalance = (\n tokenA: TokenWithBalance,\n tokenB: TokenWithBalance,\n wallet: Balance[]\n): number => {\n if (!tokenA.usdPrice || !tokenB.usdPrice) return 0;\n\n const tokenAUsdValue = new BigNumber(\n getBalanceFromWallet(\n wallet,\n tokenA.blockchain,\n tokenA.symbol,\n tokenA.address\n )?.amount || ZERO\n ).multipliedBy(tokenA.usdPrice);\n const tokenBUsdValue = new BigNumber(\n getBalanceFromWallet(\n wallet,\n tokenB.blockchain,\n tokenB.symbol,\n tokenB.address\n )?.amount || ZERO\n ).multipliedBy(tokenB.usdPrice);\n if (tokenAUsdValue.gt(tokenBUsdValue)) return -1;\n return 1;\n};\n\nexport const getUsdPrice = (\n blockchain: string,\n symbol: string,\n address: string | null,\n allTokens: Token[]\n): number | null => {\n const token = allTokens?.find(\n (t) =>\n t.blockchain === blockchain &&\n t.symbol?.toUpperCase() === symbol?.toUpperCase() &&\n t.address === address\n );\n return token?.usdPrice || null;\n};\nexport const isExperimentalChain = (\n blockchains: BlockchainMeta[],\n wallet: string\n): boolean => {\n const cosmosExperimentalChainInfo = getCosmosExperimentalChainInfo(\n Object.entries(blockchains)\n .map(([, blockchainMeta]) => blockchainMeta)\n .filter(isCosmosBlockchain)\n );\n return cosmosExperimentalChainInfo && !!cosmosExperimentalChainInfo[wallet];\n};\n\nexport const getKeplrCompatibleConnectedWallets = (\n selectableWallets: SelectableWallet[]\n): WalletType[] => {\n const connectedWalletTypes = new Set(\n selectableWallets.map((a: any) => a.walletType.toString())\n );\n\n return KEPLR_COMPATIBLE_WALLETS.filter((compatibleWallet) =>\n connectedWalletTypes.has(compatibleWallet)\n );\n};\n","import { PendingSwap } from '@rango-dev/ui/dist/containers/History/types';\nimport {\n WalletTypeAndAddress,\n SwapSavedSettings,\n} from '@rango-dev/ui/dist/types/swaps';\nimport BigNumber from 'bignumber.js';\nimport {\n BestRouteRequest,\n BestRouteResponse,\n RecommendedSlippage,\n SwapResult,\n MetaResponse,\n Token,\n} from 'rango-sdk';\nimport { Account } from '../store/wallets';\nimport { ZERO } from '../constants/numbers';\nimport { numberToString } from './numbers';\nimport { WalletType } from '@rango-dev/wallets-shared';\nimport { getRequiredBalanceOfWallet } from './routing';\nimport { getRequiredChains, SelectedWallet } from './wallets';\nimport { SwapButtonState } from '../types';\nimport { LoadingStatus } from '../store/meta';\n\nexport function getOutputRatio(\n inputUsdValue: BigNumber,\n outputUsdValue: BigNumber\n) {\n if (inputUsdValue.lte(ZERO) || outputUsdValue.lte(ZERO)) return 0;\n return outputUsdValue.div(inputUsdValue).minus(1).multipliedBy(100);\n}\n\nexport function outputRatioHasWarning(\n inputUsdValue: BigNumber,\n outputRatio: BigNumber | 0\n) {\n return (\n (parseInt(outputRatio.toFixed(2) || '0') <= -10 &&\n inputUsdValue.gte(new BigNumber(400))) ||\n (parseInt(outputRatio.toFixed(2) || '0') <= -5 &&\n inputUsdValue.gte(new BigNumber(1000)))\n );\n}\n\nexport function hasLimitError(bestRoute: BestRouteResponse | null): boolean {\n return (\n (bestRoute?.result?.swaps || []).filter((swap) => {\n const minimum = !!swap.fromAmountMinValue\n ? new BigNumber(swap.fromAmountMinValue)\n : null;\n const maximum = !!swap.fromAmountMaxValue\n ? new BigNumber(swap.fromAmountMaxValue)\n : null;\n const isExclusive = swap.fromAmountRestrictionType === 'EXCLUSIVE';\n if (isExclusive) {\n return minimum?.gte(swap.fromAmount) || maximum?.lte(swap.fromAmount);\n } else {\n return minimum?.gt(swap.fromAmount) || maximum?.lt(swap.fromAmount);\n }\n }).length > 0\n );\n}\n\nexport function LimitErrorMessage(bestRoute: BestRouteResponse | null): {\n swap: SwapResult | null;\n fromAmountRangeError: string;\n recommendation: string;\n} {\n if (!bestRoute)\n return { swap: null, fromAmountRangeError: '', recommendation: '' };\n const swap = (bestRoute?.result?.swaps || []).filter((swap) => {\n const minimum = !!swap.fromAmountMinValue\n ? new BigNumber(swap.fromAmountMinValue)\n : null;\n const maximum = !!swap.fromAmountMaxValue\n ? new BigNumber(swap.fromAmountMaxValue)\n : null;\n const isExclusive = swap.fromAmountRestrictionType === 'EXCLUSIVE';\n if (isExclusive) {\n return minimum?.gte(swap.fromAmount) || maximum?.lte(swap.fromAmount);\n } else {\n return minimum?.gt(swap.fromAmount) || maximum?.lt(swap.fromAmount);\n }\n })[0];\n if (!swap)\n return { swap: null, fromAmountRangeError: '', recommendation: '' };\n const minimum = !!swap.fromAmountMinValue\n ? new BigNumber(swap.fromAmountMinValue)\n : null;\n const maximum = !!swap.fromAmountMaxValue\n ? new BigNumber(swap.fromAmountMaxValue)\n : null;\n const isExclusive = swap.fromAmountRestrictionType === 'EXCLUSIVE';\n\n let fromAmountRangeError = '';\n let recommendation = '';\n if (!isExclusive && !!minimum && minimum.gt(swap.fromAmount)) {\n fromAmountRangeError = `Required: >= ${numberToString(minimum)} ${\n swap.from.symbol\n }`;\n recommendation = 'Increase your swap amount';\n } else if (isExclusive && !!minimum && minimum.gte(swap.fromAmount)) {\n fromAmountRangeError = `Required: > ${numberToString(minimum)} ${\n swap.from.symbol\n }`;\n recommendation = 'Increase your swap amount';\n }\n\n if (!isExclusive && !!maximum && maximum.lt(swap.fromAmount)) {\n fromAmountRangeError = `Required: <= ${numberToString(maximum)} ${\n swap.from.symbol\n }`;\n recommendation = 'Decrease your swap amount';\n } else if (isExclusive && !!maximum && maximum.lte(swap.fromAmount)) {\n fromAmountRangeError = `Required: < ${numberToString(maximum)} ${\n swap.from.symbol\n }`;\n recommendation = 'Decrease your swap amount';\n }\n\n return { swap, fromAmountRangeError, recommendation };\n}\n\nexport function getSwapButtonState(\n loadingMetaStatus: LoadingStatus,\n accounts: Account[],\n loading: boolean,\n bestRoute: BestRouteResponse | null,\n hasLimitError: boolean,\n highValueLoss: boolean,\n priceImpactCanNotBeComputed: boolean,\n needsToWarnEthOnPath: boolean\n): SwapButtonState {\n if (loadingMetaStatus !== 'success')\n return { title: 'Connect Wallet', disabled: true };\n if (accounts.length == 0) return { title: 'Connect Wallet', disabled: false };\n if (loading) return { title: 'Finding Best Route...', disabled: true };\n else if (!bestRoute) return { title: 'Swap', disabled: true };\n else if (hasLimitError) return { title: 'Limit Error', disabled: true };\n else if (highValueLoss)\n return { title: 'Price impact is too high!', disabled: true };\n else if (priceImpactCanNotBeComputed)\n return {\n title: 'USD price is unknown, price impact might be high!',\n disabled: false,\n hasWarning: true,\n };\n else if (needsToWarnEthOnPath)\n return {\n title: 'The route goes through Ethereum. Continue?',\n disabled: false,\n hasWarning: true,\n };\n else return { title: 'Swap', disabled: false };\n}\n\nexport function canComputePriceImpact(\n bestRoute: BestRouteResponse | null,\n inputAmount: string,\n inputUsdValue: BigNumber,\n outputUsdValue: BigNumber\n) {\n return !(\n (inputUsdValue.lte(ZERO) || outputUsdValue.lte(ZERO)) &&\n !!bestRoute?.result &&\n !!inputAmount &&\n inputAmount !== '0' &&\n parseFloat(inputAmount || '0') !== 0 &&\n !!bestRoute.result\n );\n}\n\nexport function calculatePendingSwap(\n inputAmount: string,\n bestRoute: BestRouteResponse,\n wallets: { [p: string]: WalletTypeAndAddress },\n settings: Omit<SwapSavedSettings, 'disabledSwappersIds'>,\n validateBalanceOrFee: boolean,\n meta: MetaResponse\n): PendingSwap {\n const simulationResult = bestRoute.result;\n if (!simulationResult) throw Error('Simulation result should not be null');\n\n return {\n creationTime: new Date().getTime().toString(),\n finishTime: null,\n requestId: bestRoute.requestId || '',\n inputAmount: inputAmount,\n wallets,\n status: 'running',\n isPaused: false,\n extraMessage: null,\n extraMessageSeverity: null,\n extraMessageDetail: null,\n extraMessageErrorCode: null,\n networkStatusExtraMessage: null,\n networkStatusExtraMessageDetail: null,\n lastNotificationTime: null,\n //@ts-ignore\n settings: settings,\n simulationResult: simulationResult,\n validateBalanceOrFee,\n steps:\n bestRoute.result?.swaps?.map((swap, index) => {\n const swapper = meta.swappers.find(\n (swapper) => swapper.id === swap.swapperId\n );\n const swapperType = swapper?.types[0];\n const fromBlockchain = meta.blockchains.find(\n (blockchain) => blockchain.name === swap.from.blockchain\n );\n const toBlockchain = meta.blockchains.find(\n (blockchain) => blockchain.name === swap.to.blockchain\n );\n return {\n id: index + 1,\n fromBlockchain: swap.from.blockchain,\n fromSymbol: swap.from.symbol,\n fromSymbolAddress: swap.from.address,\n fromDecimals: swap.from.decimals,\n fromAmountPrecision: swap.fromAmountPrecision,\n fromAmountMinValue: swap.fromAmountMinValue,\n fromAmountMaxValue: swap.fromAmountMaxValue,\n toBlockchain: swap.to.blockchain,\n fromLogo: swap.from.logo,\n toSymbol: swap.to.symbol,\n toSymbolAddress: swap.to.address,\n toDecimals: swap.to.decimals,\n toLogo: swap.to.logo,\n startTransactionTime: new Date().getTime(),\n swapperId: swap.swapperId,\n feeInUsd: numberToString(getUsdFeeOfStep(swap, meta.tokens), null, 2),\n expectedOutputAmountHumanReadable: swap.toAmount,\n outputAmount: '',\n status: 'created',\n networkStatus: null,\n executedTransactionId: null,\n externalTransactionId: null,\n explorerUrl: null,\n trackingCode: null,\n cosmosTransaction: null,\n solanaTransaction: null,\n starknetTransaction: null,\n starknetApprovalTransaction: null,\n tronTransaction: null,\n tronApprovalTransaction: null,\n evmTransaction: null,\n evmApprovalTransaction: null,\n transferTransaction: null,\n diagnosisUrl: null,\n internalSteps: null,\n fromBlockchainLogo: fromBlockchain.logo,\n toBlockchainLogo: toBlockchain.logo,\n swapperLogo: swapper?.logo,\n swapperType: swapperType,\n };\n }) || [],\n };\n}\n\nexport function requiredWallets(route: BestRouteResponse | null) {\n const wallets: string[] = [];\n\n route?.result?.swaps.forEach((swap) => {\n const currentStepFromBlockchain = swap.from.blockchain;\n const currentStepToBlockchain = swap.to.blockchain;\n let lastAddedWallet = wallets[wallets.length - 1];\n if (currentStepFromBlockchain != lastAddedWallet)\n wallets.push(currentStepFromBlockchain);\n lastAddedWallet = wallets[wallets.length - 1];\n if (currentStepToBlockchain != lastAddedWallet)\n wallets.push(currentStepToBlockchain);\n });\n return wallets;\n}\n\nexport const getUsdPrice = (\n blockchain: string,\n symbol: string,\n address: string | null,\n allTokens: Token[]\n): number | null => {\n const token = allTokens?.find(\n (t) =>\n t.blockchain === blockchain &&\n t.symbol?.toUpperCase() === symbol?.toUpperCase() &&\n t.address === address\n );\n return token?.usdPrice || null;\n};\n\nfunction getUsdFeeOfStep(step: SwapResult, allTokens: Token[]): BigNumber {\n let totalFeeInUsd = ZERO;\n for (let i = 0; i < step.fee.length; i++) {\n const fee = step.fee[i];\n if (fee.expenseType === 'DECREASE_FROM_OUTPUT') continue;\n\n const unitPrice = getUsdPrice(\n fee.asset.blockchain,\n fee.asset.symbol,\n fee.asset.address,\n allTokens\n );\n totalFeeInUsd = totalFeeInUsd.plus(\n new BigNumber(fee.amount).multipliedBy(unitPrice || 0)\n );\n }\n\n return totalFeeInUsd;\n}\n\nexport function getTotalFeeInUsd(\n bestRoute: BestRouteResponse | null,\n allTokens: Token[]\n): BigNumber | null {\n return (\n bestRoute?.result?.swaps.reduce(\n (totalFee: BigNumber, step) =>\n totalFee.plus(getUsdFeeOfStep(step, allTokens)),\n ZERO\n ) || null\n );\n}\n\nexport function hasHighFee(totalFeeInUsd: BigNumber | null) {\n if (!totalFeeInUsd) return false;\n return !totalFeeInUsd.lt(new BigNumber(30));\n}\n\nexport function hasSlippageError(\n slippages: (RecommendedSlippage | null)[] | undefined\n) {\n return (slippages?.filter((s) => !!s?.error)?.length || 0) > 0;\n}\n\nexport function getMinRequiredSlippage(route: BestRouteResponse) {\n const slippages = route.result?.swaps.map(\n (slippage) => slippage.recommendedSlippage\n );\n return (\n slippages\n ?.map((s) => s?.slippage || 0)\n ?.filter((s) => s > 0)\n ?.sort((a, b) => b - a)\n ?.find(() => true) || null\n );\n}\n\nexport function hasProperSlippage(\n userSlippage: string,\n minRequiredSlippage: number | null\n) {\n if (!minRequiredSlippage) return true;\n return parseFloat(userSlippage) > minRequiredSlippage;\n}\n\nexport function hasEnoughBalance(\n route: BestRouteResponse,\n selectedWallets: SelectedWallet[]\n) {\n const fee = route.validationStatus;\n\n if (fee === null || fee.length === 0) return true;\n\n for (const wallet of selectedWallets) {\n const requiredAssets = getRequiredBalanceOfWallet(wallet, fee);\n if (!requiredAssets) continue;\n\n const enoughBalanceInWallet = requiredAssets\n .map((asset) => asset.ok)\n .reduce((previous, current) => previous && current);\n if (!enoughBalanceInWallet) return false;\n }\n\n return true;\n}\n\nexport function hasEnoughBalanceAndProperSlippage(\n route: BestRouteResponse,\n selectedWallets: SelectedWallet[],\n userSlippage: string,\n minRequiredSlippage: number | null\n): boolean {\n return (\n hasEnoughBalance(route, selectedWallets) &&\n hasProperSlippage(userSlippage, minRequiredSlippage)\n );\n}\n\nexport function createBestRouteRequestBody(\n fromToken: Token,\n toToken: Token,\n inputAmount: string,\n wallets: Account[],\n selectedWallets: SelectedWallet[],\n disabledLiquiditySources: string[],\n slippage: number,\n checkPrerequisites: boolean\n): BestRouteRequest {\n const selectedWalletsMap = selectedWallets.reduce(\n (\n selectedWalletsMap: BestRouteRequest['selectedWallets'],\n selectedWallet\n ) => (\n (selectedWalletsMap[selectedWallet.chain] = selectedWallet.address),\n selectedWalletsMap\n ),\n {}\n );\n\n const connectedWallets: BestRouteRequest['connectedWallets'] = [];\n\n wallets.forEach((wallet) => {\n const chainAndAccounts = connectedWallets.find(\n (connectedWallet) => connectedWallet.blockchain === wallet.chain\n );\n if (!!chainAndAccounts) chainAndAccounts.addresses.push(wallet.address);\n else\n connectedWallets.push({\n blockchain: wallet.chain,\n addresses: [wallet.address],\n });\n });\n\n const requestBody: BestRouteRequest = {\n amount: inputAmount.toString(),\n checkPrerequisites,\n from: {\n address: fromToken.address,\n blockchain: fromToken.blockchain,\n symbol: fromToken.symbol,\n },\n to: {\n address: toToken.address,\n blockchain: toToken.blockchain,\n symbol: toToken.symbol,\n },\n connectedWallets,\n selectedWallets: selectedWalletsMap,\n swapperGroups: disabledLiquiditySources,\n swappersGroupsExclude: true,\n //@ts-ignore\n slippage: slippage.toString(),\n };\n\n return requestBody;\n}\n\nexport function getWalletsForNewSwap(selectedWallets: SelectedWallet[]) {\n const wallets = selectedWallets.reduce(\n (\n selectedWalletsMap: {\n [p: string]: { address: string; walletType: WalletType };\n },\n selectedWallet\n ) => (\n (selectedWalletsMap[selectedWallet.chain] = {\n address: selectedWallet.address,\n walletType: selectedWallet.walletType,\n }),\n selectedWalletsMap\n ),\n {}\n );\n\n return wallets;\n}\n\nexport function getRouteOutputAmount(route: BestRouteResponse) {\n return route.result?.outputAmount || null;\n}\n\nexport function getPercentageChange(\n oldValue: string | number,\n newValue: string | number\n) {\n return new BigNumber(newValue)\n .div(new BigNumber(oldValue))\n .minus(1)\n .multipliedBy(100);\n}\n\nexport function isOutputAmountChangedALot(\n oldRoute: BestRouteResponse,\n newRoute: BestRouteResponse\n) {\n const oldOutputAmount = getRouteOutputAmount(oldRoute);\n const newOutputAmount = getRouteOutputAmount(newRoute);\n if (!oldOutputAmount || !newOutputAmount) return false;\n const percentageChange = getPercentageChange(\n oldOutputAmount,\n newOutputAmount\n );\n\n return percentageChange.toNumber() <= -1;\n}\n\nexport function getBalanceWarnings(\n route: BestRouteResponse,\n selectedWallets: SelectedWallet[]\n) {\n const fee = route.validationStatus;\n const requiredWallets = getRequiredChains(route);\n const walletsSortedByRequiredWallets = selectedWallets.sort(\n (selectedWallet1, selectedWallet2) =>\n requiredWallets.indexOf(selectedWallet1.chain) -\n requiredWallets.indexOf(selectedWallet2.chain)\n );\n return walletsSortedByRequiredWallets\n .flatMap((wallet) => getRequiredBalanceOfWallet(wallet, fee) || [])\n .filter((asset) => !asset.ok)\n .map((asset) => {\n const symbol = asset.asset.symbol;\n const currentAmount = numberToString(\n new BigNumber(asset.currentAmount.amount).shiftedBy(\n -asset.currentAmount.decimals\n ),\n 8\n );\n const requiredAmount = numberToString(\n new BigNumber(asset.requiredAmount.amount).shiftedBy(\n -asset.requiredAmount.decimals\n ),\n 8\n );\n let reason = '';\n if (asset.reason === 'FEE') reason = ' for network fee';\n if (asset.reason === 'INPUT_ASSET') reason = ' for swap';\n if (asset.reason === 'FEE_AND_INPUT_ASSET')\n reason = ' for input and network fee';\n const warningMessage = `Needs ≈ ${requiredAmount} ${symbol}${reason}, but you have ${currentAmount} ${symbol} in your ${asset.asset.blockchain} wallet.`;\n return warningMessage;\n });\n}\n","import { BestRouteResponse, BlockchainMeta } from 'rango-sdk';\nimport { Token } from 'rango-sdk/lib';\nimport { create } from 'zustand';\nimport BigNumber from 'bignumber.js';\nimport { ZERO } from '../constants/numbers';\nimport { getBestRouteToTokenUsdPrice } from '../utils/routing';\nimport createSelectors from './selectors';\nimport { subscribeWithSelector } from 'zustand/middleware';\nimport { httpService } from '../services/httpService';\nimport { useSettingsStore } from './settings';\nimport { createBestRouteRequestBody } from '../utils/swap';\n\nconst getUsdValue = (token: Token | null, amount: string) =>\n new BigNumber(amount || ZERO).multipliedBy(token?.usdPrice || 0);\n\ninterface RouteState {\n fromChain: BlockchainMeta | null;\n toChain: BlockchainMeta | null;\n inputAmount: string;\n inputUsdValue: BigNumber;\n outputAmount: BigNumber | null;\n outputUsdValue: BigNumber;\n fromToken: Token | null;\n toToken: Token | null;\n loading: boolean;\n error: string;\n setFromChain: (chain: BlockchainMeta | null) => void;\n setToChain: (chian: BlockchainMeta | null) => void;\n setFromToken: (token: Token | null) => void;\n setToToken: (token: Token | null) => void;\n setInputAmount: (amount: string) => void;\n bestRoute: BestRouteResponse | null;\n setBestRoute: (bestRoute: BestRouteResponse | null) => void;\n}\n\nexport const useBestRouteStore = createSelectors(\n create<RouteState>()(\n subscribeWithSelector((set) => ({\n fromChain: null,\n fromToken: null,\n inputAmount: '',\n outputAmount: null,\n inputUsdValue: new BigNumber(0),\n outputUsdValue: new BigNumber(0),\n toChain: null,\n toToken: null,\n bestRoute: null,\n loading: false,\n error: '',\n setBestRoute: (bestRoute) =>\n set((state) => {\n let outputAmount: BigNumber | null = null;\n let outputUsdValue: BigNumber = ZERO;\n if (!!bestRoute) {\n outputAmount = !!bestRoute.result?.outputAmount\n ? new BigNumber(bestRoute.result?.outputAmount)\n : null;\n outputUsdValue = new BigNumber(outputAmount || ZERO).multipliedBy(\n getBestRouteToTokenUsdPrice(bestRoute) ||\n state.toToken?.usdPrice ||\n 0\n );\n }\n return {\n bestRoute,\n ...(!!bestRoute && {\n outputAmount,\n outputUsdValue,\n }),\n };\n }),\n setFromChain: (chain) =>\n set(() => ({\n fromChain: chain,\n })),\n setFromToken: (token) =>\n set((state) => ({\n fromToken: token,\n ...(!!state.inputAmount && {\n inputUsdValue: getUsdValue(token, state.inputAmount),\n }),\n })),\n setToChain: (chain) =>\n set(() => ({\n toChain: chain,\n })),\n setToToken: (token) =>\n set(() => ({\n toToken: token,\n })),\n setInputAmount: (amount) =>\n set((state) => ({\n inputAmount: amount,\n ...(!!state.fromToken && {\n inputUsdValue: getUsdValue(state.fromToken, amount),\n }),\n })),\n }))\n )\n);\n\nconst bestRoute = (\n bestRouteStore: typeof useBestRouteStore,\n settingsStore: typeof useSettingsStore\n) => {\n let abortController: AbortController | null = null;\n const fetchBestRoute = () => {\n const { fromToken, toToken, inputAmount } = bestRouteStore.getState();\n const { slippage, customSlippage, disabledLiquiditySources } =\n settingsStore.getState();\n if (!fromToken || !toToken || !inputAmount) return;\n abortController?.abort();\n abortController = new AbortController();\n const userSlippage = customSlippage | slippage;\n const requestBody = createBestRouteRequestBody(\n fromToken,\n toToken,\n inputAmount,\n [],\n [],\n disabledLiquiditySources,\n userSlippage,\n false\n );\n bestRouteStore.setState({ loading: true, bestRoute: null });\n httpService\n .getBestRoute(requestBody, {\n signal: abortController.signal,\n })\n .then((res) => {\n const { setBestRoute } = bestRouteStore.getState();\n setBestRoute(res);\n bestRouteStore.setState({ loading: false });\n abortController = null;\n })\n .catch((error) => {\n if (error.code === 'ERR_CANCELED') return;\n bestRouteStore.setState({\n error: error.message,\n loading: false,\n });\n });\n };\n\n useBestRouteStore.subscribe(\n (state) => ({\n fromChain: state.fromChain,\n fromToken: state.fromToken,\n toChain: state.toChain,\n toToken: state.toToken,\n inputAmount: state.inputAmount,\n }),\n\n fetchBestRoute.bind(null),\n {\n equalityFn: (prevState, state) => {\n if (\n prevState.fromChain?.name !== state.fromChain?.name ||\n prevState.toChain?.name !== state.toChain?.name ||\n prevState.fromToken?.symbol !== state.fromToken?.symbol ||\n prevState.toToken?.symbol !== state.toToken?.symbol ||\n prevState.fromToken?.blockchain !== state.fromToken?.blockchain ||\n prevState.toToken?.blockchain !== state.toToken?.blockchain ||\n prevState.fromToken?.address !== state.fromToken?.address ||\n prevState.toToken?.address !== state.toToken?.address ||\n prevState.inputAmount !== state.inputAmount\n )\n return false;\n else return true;\n },\n }\n );\n\n useSettingsStore.subscribe(\n (state) => ({\n slippage: state.slippage,\n customSlippage: state.customSlippage,\n disabledLiquiditySources: state.disabledLiquiditySources,\n }),\n fetchBestRoute.bind(null),\n {\n equalityFn: (prevState, state) => {\n if (\n prevState.slippage !== state.slippage ||\n prevState.customSlippage !== state.customSlippage ||\n prevState.disabledLiquiditySources.length !==\n state.disabledLiquiditySources.length\n )\n return false;\n else return true;\n },\n }\n );\n\n return { fetchBestRoute };\n};\n\nexport const { fetchBestRoute } = bestRoute(\n useBestRouteStore,\n useSettingsStore\n);\n","export enum SearchParams {\n 'FROM_CHAIN' = 'fromChain',\n 'FROM_TOKEN' = 'fromToken',\n 'TO_CHAIN' = 'toChain',\n 'TO_TOKEN' = 'toToken',\n 'FROM_AMOUNT' = 'fromAmount',\n}\n","import { Token } from 'rango-sdk';\nimport { useEffect, useRef } from 'react';\nimport {\n createSearchParams,\n useLocation,\n useSearchParams,\n} from 'react-router-dom';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { useMetaStore } from '../store/meta';\nimport { SearchParams } from '../constants/searchParams';\nimport { navigationRoutes } from '../constants/navigationRoutes';\n\nfunction searchParamsToToken(\n tokens: Token[],\n searchParams: string | null\n): Token | null {\n return (\n tokens.find((token) => {\n const symbolAndAddress = searchParams?.split('--');\n if (symbolAndAddress?.length === 1)\n return token.symbol === symbolAndAddress[0] && token.address === null;\n return (\n token.symbol === symbolAndAddress?.[0] &&\n token.address === symbolAndAddress?.[1]\n );\n }) || null\n );\n}\n\nexport function UpdateUrl() {\n const firstRender = useRef(true);\n const [searchParams, setSearchParams] = useSearchParams();\n const location = useLocation();\n const firstRenderSearchParams = useRef(location.search);\n const searchParamsRef = useRef<Record<string, string>>({});\n\n useEffect(() => {\n const params: Record<string, string> = {};\n createSearchParams(firstRenderSearchParams.current).forEach(\n (value, key) => {\n params[key] = value;\n }\n );\n searchParamsRef.current = params;\n }, []);\n\n const fromChain = useBestRouteStore.use.fromChain();\n const toChain = useBestRouteStore.use.toChain();\n const fromToken = useBestRouteStore.use.fromToken();\n const toToken = useBestRouteStore.use.toToken();\n const setFromChain = useBestRouteStore.use.setFromChain();\n const setFromToken = useBestRouteStore.use.setFromToken();\n const setToChain = useBestRouteStore.use.setToChain();\n const setToToken = useBestRouteStore.use.setToToken();\n const inputAmount = useBestRouteStore.use.inputAmount();\n const setInputAmount = useBestRouteStore.use.setInputAmount();\n const loadingStatus = useMetaStore.use.loadingStatus();\n const { blockchains, tokens } = useMetaStore.use.meta();\n\n useEffect(() => {\n let fromChainString = '',\n fromTokenString = '',\n toChainString = '',\n toTokenString = '',\n fromAmount = '';\n if (\n loadingStatus !== 'success' &&\n ![navigationRoutes.confirmWallets, navigationRoutes.confirmSwap].includes(\n location.pathname\n )\n ) {\n fromChainString = searchParamsRef.current[SearchParams.FROM_CHAIN];\n fromTokenString = searchParamsRef.current[SearchParams.FROM_TOKEN];\n toChainString = searchParamsRef.current[SearchParams.TO_CHAIN];\n toTokenString = searchParamsRef.current[SearchParams.TO_TOKEN];\n fromAmount = searchParamsRef.current[SearchParams.FROM_AMOUNT];\n setSearchParams(\n {\n ...(fromChainString && {\n [SearchParams.FROM_CHAIN]: fromChainString,\n }),\n ...(fromTokenString && {\n [SearchParams.FROM_TOKEN]: fromTokenString,\n }),\n ...(toChainString && { [SearchParams.TO_CHAIN]: toChainString }),\n ...(toTokenString && { [SearchParams.TO_TOKEN]: toTokenString }),\n ...(fromAmount && {\n [SearchParams.FROM_AMOUNT]: fromAmount.toString(),\n }),\n },\n { replace: true }\n );\n }\n if (!firstRender.current) {\n let fromChainString = '',\n fromTokenString = '',\n toChainString = '',\n toTokenString = '',\n fromAmount = '';\n if (loadingStatus !== 'success') {\n fromChainString = searchParamsRef.current[SearchParams.FROM_CHAIN];\n fromTokenString = searchParamsRef.current[SearchParams.FROM_TOKEN];\n toChainString = searchParamsRef.current[SearchParams.TO_CHAIN];\n toTokenString = searchParamsRef.current[SearchParams.TO_TOKEN];\n fromAmount = searchParamsRef.current[SearchParams.FROM_AMOUNT];\n } else {\n if (location.state === 'redirect') return;\n fromChainString = fromChain?.name || '';\n fromTokenString =\n (fromToken?.symbol || '') +\n (fromToken?.address ? `--${fromToken?.address}` : '');\n toChainString = toChain?.name || '';\n toTokenString =\n (toToken?.symbol || '') +\n (toToken?.address ? `--${toToken?.address}` : '');\n fromAmount = inputAmount;\n\n setSearchParams(\n {\n ...(fromChainString && {\n [SearchParams.FROM_CHAIN]: fromChainString,\n }),\n ...(fromTokenString && {\n [SearchParams.FROM_TOKEN]: fromTokenString,\n }),\n ...(toChainString && { [SearchParams.TO_CHAIN]: toChainString }),\n ...(toTokenString && { [SearchParams.TO_TOKEN]: toTokenString }),\n ...(fromAmount && {\n [SearchParams.FROM_AMOUNT]: fromAmount.toString(),\n }),\n },\n { replace: true }\n );\n }\n }\n firstRender.current = false;\n }, [location.pathname, inputAmount]);\n\n useEffect(() => {\n if (loadingStatus === 'success') {\n const fronChainString = searchParams.get(SearchParams.FROM_CHAIN);\n const fromTokenString = searchParams.get(SearchParams.FROM_TOKEN);\n const toChainString = searchParams.get(SearchParams.TO_CHAIN);\n const toTokenString = searchParams.get(SearchParams.TO_TOKEN);\n const fromAmount = searchParams.get(SearchParams.FROM_AMOUNT);\n const fromChain = blockchains.find(\n (blockchain) => blockchain.name === fronChainString\n );\n const fromToken = searchParamsToToken(tokens, fromTokenString);\n const toChain = blockchains.find(\n (blockchain) => blockchain.name === toChainString\n );\n const toToken = searchParamsToToken(tokens, toTokenString);\n if (!!fromChain) {\n setFromChain(fromChain);\n if (!!fromToken) setFromToken(fromToken);\n }\n if (!!toChain) {\n setToChain(toChain);\n if (!!toToken) setToToken(toToken);\n }\n if (fromAmount) setInputAmount(fromAmount);\n }\n }, [loadingStatus]);\n\n return null;\n}\n","import React from 'react';\nimport { SettingsIcon, Tooltip, styled, Button, HistoryIcon, RetryIcon } from '@rango-dev/ui';\nimport { useNavigate } from 'react-router-dom';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { PropTypes } from './Header';\n\nconst ButtonsContainer = styled('div', {\n display: 'flex',\n});\n\nexport function HeaderButtons(props: PropTypes) {\n const { onClickRefresh } = props;\n const navigate = useNavigate();\n\n return (\n <ButtonsContainer>\n <Tooltip content=\"Retry\">\n <Button variant=\"ghost\" onClick={onClickRefresh.bind(null)}>\n <RetryIcon size={28} />\n </Button>\n </Tooltip>\n <Tooltip content=\"Transactions History\">\n <Button variant=\"ghost\" onClick={() => navigate(navigationRoutes.history)}>\n <HistoryIcon size={24} />\n </Button>\n </Tooltip>\n <Tooltip content=\"Settings\">\n <Button variant=\"ghost\" onClick={() => navigate(navigationRoutes.settings)}>\n <SettingsIcon size={24} />\n </Button>\n </Tooltip>\n </ButtonsContainer>\n );\n}\n","import React from 'react';\nimport { styled, Typography } from '@rango-dev/ui';\nimport { HeaderButtons } from './HeaderButtons';\n\nexport const HeaderContainer = styled('div', {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n padding: '$16 0',\n});\n\nexport interface PropTypes {\n onClickRefresh: () => void;\n}\n\nexport function Header(props: PropTypes) {\n const { onClickRefresh } = props;\n return (\n <HeaderContainer>\n <Typography variant=\"h4\">SWAP</Typography>\n <HeaderButtons onClickRefresh={onClickRefresh} />\n </HeaderContainer>\n );\n}\n","import { SelectableWallet } from '@rango-dev/ui';\nimport { WalletType } from '@rango-dev/wallets-shared';\nimport { create } from 'zustand';\nimport { subscribeWithSelector } from 'zustand/middleware';\nimport { httpService } from '../services/httpService';\nimport {\n getRequiredChains,\n isAccountAndBalanceMatched,\n makeBalanceFor,\n resetBalanceState,\n SelectedWallet,\n} from '../utils/wallets';\nimport { useBestRouteStore } from './bestRoute';\nimport { useMetaStore } from './meta';\nimport createSelectors from './selectors';\n\nexport interface Account {\n chain: string;\n address: string;\n walletType: WalletType;\n}\n\nexport type TokenBalance = {\n chain: string;\n symbol: string;\n ticker: string;\n address: string | null;\n rawAmount: string;\n decimal: number | null;\n amount: string;\n logo: string | null;\n usdPrice: number | null;\n};\n\nexport interface Balance {\n balances: TokenBalance[] | null;\n address: string;\n chain: string;\n loading: boolean;\n walletType: WalletType;\n error: boolean;\n explorerUrl: string | null;\n}\n\ninterface WalletsStore {\n accounts: Account[];\n balances: Balance[];\n selectedWallets: SelectedWallet[];\n connectWallet: (accounts: Account[]) => void;\n disconnectWallet: (walletType: WalletType) => void;\n initSelectedWallets: () => void;\n setSelectedWallet: (wallet: SelectableWallet) => void;\n}\n\nexport const useWalletsStore = createSelectors(\n create<WalletsStore>()(\n subscribeWithSelector((set) => ({\n accounts: [],\n balances: [],\n selectedWallets: [],\n connectWallet: (accounts) => {\n const tokens = useMetaStore.getState().meta.tokens;\n\n set((state) => ({\n accounts: state.accounts.concat(accounts),\n balances: state.balances.concat(\n accounts.map((account) => ({\n balances: [],\n address: account.address,\n chain: account.chain,\n loading: true,\n walletType: account.walletType,\n error: false,\n explorerUrl: null,\n }))\n ),\n }));\n accounts.forEach(async (account) => {\n try {\n const response = await httpService.getWalletsDetails([\n { address: account.address, blockchain: account.chain },\n ]);\n const retrivedBalance = response.wallets[0];\n if (retrivedBalance) {\n set((state) => ({\n balances: state.balances.map((balance) => {\n return isAccountAndBalanceMatched(account, balance)\n ? makeBalanceFor(account, retrivedBalance, tokens)\n : balance;\n }),\n }));\n } else throw new Error('Wallet not found');\n } catch (error) {\n set((state) => ({\n balances: state.balances.map((balance) => {\n return isAccountAndBalanceMatched(account, balance)\n ? resetBalanceState(balance)\n : balance;\n }),\n }));\n }\n });\n },\n disconnectWallet: (walletType) => {\n set((state) => ({\n accounts: state.accounts.filter(\n (account) => account.walletType !== walletType\n ),\n balances: state.balances.filter(\n (balance) => balance.walletType !== walletType\n ),\n selectedWallets: state.selectedWallets.filter(\n (wallet) => wallet.walletType != walletType\n ),\n }));\n },\n initSelectedWallets: () =>\n set((state) => {\n const requiredChains = getRequiredChains(\n useBestRouteStore.getState().bestRoute\n );\n const connectedWallets = state.accounts;\n const selectedWallets: SelectedWallet[] = [];\n requiredChains.forEach((chain) => {\n const anyWalletSelected = !!state.selectedWallets.find(\n (wallet) => wallet.chain === chain\n );\n if (!anyWalletSelected) {\n const firstWalletWithMatchedChain = connectedWallets.find(\n (wallet) => wallet.chain === chain\n );\n if (!!firstWalletWithMatchedChain)\n selectedWallets.push({\n address: firstWalletWithMatchedChain.address,\n chain: firstWalletWithMatchedChain.chain,\n walletType: firstWalletWithMatchedChain.walletType,\n });\n }\n });\n return {\n selectedWallets: state.selectedWallets.concat(selectedWallets),\n };\n }),\n setSelectedWallet: (wallet) =>\n set((state) => ({\n selectedWallets: state.selectedWallets\n .filter((selectedWallet) => selectedWallet.chain !== wallet.chain)\n .concat({\n chain: wallet.chain,\n address: wallet.address,\n walletType: wallet.walletType,\n }),\n })),\n }))\n )\n);\n","import React from 'react';\nimport { AngleDownIcon, Button, InfoCircleIcon, styled, TextField, Typography } from '@rango-dev/ui';\nimport { useMetaStore } from '../store/meta';\nimport { BlockchainMeta, Token } from 'rango-sdk';\nimport { useNavigate } from 'react-router-dom';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { numberToString } from '../utils/numbers';\nimport BigNumber from 'bignumber.js';\nimport { getBalanceFromWallet } from '../utils/wallets';\nimport { useWalletsStore } from '../store/wallets';\n\ntype PropTypes = (\n | { type: 'From'; inputAmount: string; onAmountChange: (amount: string) => void }\n | {\n type: 'To';\n outputAmount: BigNumber | null;\n outputUsdValue: BigNumber | null;\n }\n) & { chain: BlockchainMeta | null; token: Token | null };\n\nconst Box = styled('div', {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n});\n\nconst Container = styled('div', {\n boxSizing: 'border-box',\n backgroundColor: '$neutrals300',\n borderRadius: '$5',\n padding: '$8 0',\n\n '.form': {\n display: 'flex',\n width: '100%',\n padding: '$8 $16',\n },\n});\n\nconst StyledImage = styled('img', {\n width: '$24',\n maxHeight: '$24',\n});\n\nconst Options = styled('div', {\n display: 'flex',\n justifyContent: 'flex-end',\n padding: '0 $8',\n});\n\nconst ImagePlaceholder = styled('span', {\n width: '24px',\n height: '24px',\n backgroundColor: '$neutrals300',\n borderRadius: '99999px',\n});\n\nconst OutputContainer = styled('div', {\n height: '$48',\n borderRadius: '$5',\n flexGrow: 1,\n width: '70%',\n backgroundColor: '$background',\n border: '1px solid transparent',\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n paddingLeft: '$8',\n paddingRight: '$8',\n});\n\nexport function TokenInfo(props: PropTypes) {\n const { type, chain, token } = props;\n const loadingStatus = useMetaStore.use.loadingStatus();\n const fromChain = useBestRouteStore.use.fromChain();\n const toChain = useBestRouteStore.use.toChain();\n const inputUsdValue = useBestRouteStore.use.inputUsdValue();\n const fromToken = useBestRouteStore.use.fromToken();\n const setInputAmount = useBestRouteStore.use.setInputAmount();\n const bestRoute = useBestRouteStore.use.bestRoute();\n const inputAmount = useBestRouteStore.use.inputAmount();\n const balances = useWalletsStore.use.balances();\n const navigate = useNavigate();\n\n const tokenBalance =\n !!fromChain && !!fromToken\n ? numberToString(\n getBalanceFromWallet(balances, fromChain?.name, fromToken?.symbol, fromToken?.address)\n ?.amount || '0',\n 8,\n )\n : '0';\n\n const tokenBalanceReal =\n !!fromChain && !!fromToken\n ? numberToString(\n getBalanceFromWallet(balances, fromChain?.name, fromToken?.symbol, fromToken?.address)\n ?.amount || '0',\n getBalanceFromWallet(balances, fromChain?.name, fromToken?.symbol, fromToken?.address)\n ?.decimal,\n )\n : '0';\n\n const ItemSuffix = (\n <div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center' }}>\n {loadingStatus === 'failed' && <InfoCircleIcon color=\"error\" size={24} />}\n <AngleDownIcon />\n </div>\n );\n\n return (\n <Box>\n <div>\n <Typography variant=\"body2\">{type}</Typography>\n </div>\n <Container>\n {props.type === 'From' && (\n <Options>\n <div\n className=\"balance\"\n onClick={() => {\n if (tokenBalance !== '0') setInputAmount(tokenBalanceReal.split(',').join(''));\n }}>\n <Button variant=\"ghost\" size=\"small\">\n <Typography variant=\"body2\">{`Max: ${tokenBalance} ${\n fromToken?.symbol || ''\n }`}</Typography>\n </Button>\n </div>\n </Options>\n )}\n <div className=\"form\">\n <Button\n onClick={() => {\n navigate(`/${props.type.toLowerCase()}-chain`);\n }}\n variant=\"outlined\"\n disabled={loadingStatus === 'failed'}\n loading={loadingStatus === 'loading'}\n prefix={\n loadingStatus === 'success' && chain ? (\n <StyledImage src={chain.logo} />\n ) : (\n <ImagePlaceholder />\n )\n }\n suffix={ItemSuffix}\n align=\"start\"\n size=\"large\"\n style={{ marginRight: '.5rem' }}>\n {loadingStatus === 'success' && chain ? chain.displayName : 'Chain'}\n </Button>\n <Button\n onClick={() => {\n navigate(`/${props.type.toLowerCase()}-token`);\n }}\n variant=\"outlined\"\n disabled={\n loadingStatus === 'failed' ||\n (type === 'From' && !fromChain) ||\n (type === 'To' && !toChain)\n }\n loading={loadingStatus === 'loading'}\n prefix={\n loadingStatus === 'success' && token ? (\n <StyledImage src={token.image} />\n ) : (\n <ImagePlaceholder />\n )\n }\n suffix={ItemSuffix}\n size=\"large\"\n align=\"start\"\n style={{ marginRight: '.5rem' }}>\n {loadingStatus === 'success' && token ? token.symbol : 'Token'}\n </Button>\n {props.type === 'From' ? (\n <TextField\n type=\"number\"\n size=\"large\"\n autoFocus\n placeholder=\"0\"\n style={{\n width: '70%',\n position: 'relative',\n backgroundColor: '$background !important',\n }}\n suffix={\n <span style={{ position: 'absolute', right: '4px', bottom: '2px' }}>\n <Typography variant=\"caption\">{`$${numberToString(inputUsdValue)}`}</Typography>\n </span>\n }\n value={props.inputAmount || ''}\n onChange={\n props.type === 'From'\n ? (event) => {\n props.onAmountChange(event.target.value);\n }\n : undefined\n }\n />\n ) : (\n <OutputContainer>\n <Typography variant=\"body1\">\n {bestRoute ? `≈ ${numberToString(props.outputAmount)}` : inputAmount ? '?' : '0'}\n </Typography>\n <span style={{ position: 'absolute', right: '4px', bottom: '2px' }}>\n <Typography variant=\"caption\">{`$${numberToString(\n props.outputUsdValue,\n )}`}</Typography>\n </span>\n </OutputContainer>\n )}\n </div>\n </Container>\n </Box>\n );\n}\n","import React from 'react';\nimport { styled } from '@rango-dev/ui/src/theme';\nimport { Typography } from '@rango-dev/ui';\n\nconst Container = styled('div', {\n display: 'flex',\n width: '100%',\n justifyContent: 'end',\n alignItems: 'center',\n paddingTop: '$16',\n});\n\nconst Logo = styled('svg', {\n fill: '$foreground',\n width: '$24',\n margin: '0 $8 0 $16',\n});\n\nconst StyledAnchor = styled('a', {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n textDecoration: 'none',\n});\n\nexport function BottomLogo() {\n return (\n <Container>\n <Typography variant=\"caption\">Powered By</Typography>\n <StyledAnchor href=\"https://rango.exchange\" target=\"_blank\">\n <Logo xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 33.68 29\">\n <defs></defs>\n <g id=\"Layer_2\" data-name=\"Layer 2\">\n <g id=\"Layer_1-2\" data-name=\"Layer 1\">\n <path d=\"M33.68,18.05A17.93,17.93,0,0,0,28.34,5.29,18.31,18.31,0,0,0,15.45,0H13.54V7.41L6.07,0H.69L9.83,9.07H0V11A17.93,17.93,0,0,0,5.34,23.71,18.32,18.32,0,0,0,18.24,29h1.9V21.59l7.38,7.31h5.39l-9-9h9.82ZM17.37,16.16H12.49a1.93,1.93,0,0,0-1.35.55,1.89,1.89,0,0,0-.56,1.34,1.85,1.85,0,0,0,.56,1.33,1.93,1.93,0,0,0,1.35.55h3.84V25.1A14.43,14.43,0,0,1,8,21a14.21,14.21,0,0,1-4.1-8.2H21.2a1.86,1.86,0,0,0,.74-.13,1.92,1.92,0,0,0,.64-.4,2,2,0,0,0,.43-.62,1.88,1.88,0,0,0,0-1.47,2,2,0,0,0-.43-.62,1.92,1.92,0,0,0-.64-.4,1.86,1.86,0,0,0-.74-.13H17.35V3.9A14.43,14.43,0,0,1,25.64,8a14.19,14.19,0,0,1,4.11,8.2Zm2.12-5.27a1.43,1.43,0,0,1,.26-.83,1.52,1.52,0,0,1,.67-.56,1.55,1.55,0,0,1,.88-.08,1.51,1.51,0,0,1,.77.4,1.54,1.54,0,0,1,.42.77,1.41,1.41,0,0,1-.09.86,1.47,1.47,0,0,1-.55.68,1.56,1.56,0,0,1-.84.25,1.52,1.52,0,0,1-1.52-1.49Z\" />\n <path d=\"M21.7,11.57a.68.68,0,0,0-.12-.38.64.64,0,0,0-.31-.25.68.68,0,0,0-.75.15.61.61,0,0,0-.19.35.62.62,0,0,0,0,.4.67.67,0,0,0,.25.3.69.69,0,0,0,.39.12.7.7,0,0,0,.49-.2A.68.68,0,0,0,21.7,11.57Z\" />\n </g>\n </g>\n </Logo>\n <Typography variant=\"body2\">RANGO</Typography>\n </StyledAnchor>\n </Container>\n );\n}\n","import { useEffect, useRef } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { SearchParams } from '../constants/searchParams';\nimport { useBestRouteStore } from '../store/bestRoute';\n\nexport function SwithFromAndTo({ count }: { count: number }) {\n const firstRender = useRef(true);\n const [searchParams, setSearchParams] = useSearchParams();\n const outputAmount = useBestRouteStore.use.outputAmount();\n\n useEffect(() => {\n if (!firstRender.current) {\n const fromChainString = searchParams.get(SearchParams.FROM_CHAIN);\n const fromTokenString = searchParams.get(SearchParams.FROM_TOKEN);\n const toChainString = searchParams.get(SearchParams.TO_CHAIN);\n const toTokenString = searchParams.get(SearchParams.TO_TOKEN);\n setSearchParams({\n ...(toChainString && { [SearchParams.FROM_CHAIN]: toChainString }),\n ...(toTokenString && { [SearchParams.FROM_TOKEN]: toTokenString }),\n ...(fromChainString && { [SearchParams.TO_CHAIN]: fromChainString }),\n ...(fromTokenString && { [SearchParams.TO_TOKEN]: fromTokenString }),\n ...(outputAmount && { [SearchParams.FROM_AMOUNT]: outputAmount.toString() }),\n });\n } else {\n firstRender.current = false;\n }\n }, [count]);\n\n return null;\n}\n","import { styled } from '@rango-dev/ui';\n\nexport const Footer = styled('div', {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n paddingTop: '$16',\n});\n","export const errorMessages = {\n genericServerError: 'Error connecting server, please reload the app and try again',\n};\n","import {\n Alert,\n BestRoute,\n Button,\n styled,\n Typography,\n VerticalSwapIcon,\n} from '@rango-dev/ui';\nimport React, { useState } from 'react';\nimport { useInRouterContext, useNavigate } from 'react-router-dom';\nimport { Header } from '../components/Header';\nimport { TokenInfo } from '../components/TokenInfo';\nimport { fetchBestRoute, useBestRouteStore } from '../store/bestRoute';\nimport { BottomLogo } from '../components/BottomLogo';\nimport { SwithFromAndTo } from '../components/SwitchFromAndTo';\nimport { Footer } from '../components/Footer';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { useMetaStore } from '../store/meta';\nimport { useWalletsStore } from '../store/wallets';\nimport { errorMessages } from '../constants/errors';\nimport {\n getSwapButtonState,\n getOutputRatio,\n hasLimitError,\n outputRatioHasWarning,\n canComputePriceImpact,\n LimitErrorMessage,\n getTotalFeeInUsd,\n hasHighFee,\n} from '../utils/swap';\nimport {\n numberToString,\n secondsToString,\n totalArrivalTime,\n} from '../utils/numbers';\n\nconst Container = styled('div', {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n});\n\nconst SwitchButtonContainer = styled('div', {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'relative',\n top: '11px',\n});\n\nconst BestRouteContainer = styled('div', {\n width: '100%',\n paddingTop: '$16',\n});\n\nconst Alerts = styled('div', {\n width: '100%',\n paddingTop: '$16',\n});\n\nexport function Home() {\n const waningMessage = '';\n const isRouterInContext = useInRouterContext();\n const navigate = useNavigate();\n const [count, setCount] = useState(0);\n const fromChain = useBestRouteStore.use.fromChain();\n const fromToken = useBestRouteStore.use.fromToken();\n const toChain = useBestRouteStore.use.toChain();\n const toToken = useBestRouteStore.use.toToken();\n const setFromChain = useBestRouteStore.use.setFromChain();\n const setFromToken = useBestRouteStore.use.setFromToken();\n const setToChain = useBestRouteStore.use.setToChain();\n const setToToken = useBestRouteStore.use.setToToken();\n const inputUsdValue = useBestRouteStore.use.inputUsdValue();\n const inputAmount = useBestRouteStore.use.inputAmount();\n const setInputAmount = useBestRouteStore.use.setInputAmount();\n const outputAmount = useBestRouteStore.use.outputAmount();\n const outputUsdValue = useBestRouteStore.use.outputUsdValue();\n const bestRoute = useBestRouteStore.use.bestRoute();\n const tokens = useMetaStore.use.meta().tokens;\n const fetchingBestRoute = useBestRouteStore.use.loading();\n const bestRouteError = useBestRouteStore.use.error();\n\n const loadingMetaStatus = useMetaStore.use.loadingStatus();\n const accounts = useWalletsStore.use.accounts();\n\n const swithFromAndTo = () => {\n setFromChain(toChain);\n setFromToken(toToken);\n setToChain(fromChain);\n setToToken(fromToken);\n setInputAmount(outputAmount?.toString() || '');\n setCount((prev) => prev + 1);\n };\n\n const errorMessage =\n loadingMetaStatus === 'failed'\n ? errorMessages.genericServerError\n : bestRouteError;\n\n const needsToWarnEthOnPath = false;\n\n const showBestRoute =\n inputAmount && (!!bestRoute || fetchingBestRoute || bestRouteError);\n\n const outToInRatio = getOutputRatio(inputUsdValue, outputUsdValue);\n\n const highValueLoss = outputRatioHasWarning(inputUsdValue, outToInRatio);\n\n const { fromAmountRangeError, recommendation, swap } =\n LimitErrorMessage(bestRoute);\n\n const priceImpactCanNotBeComputed = !canComputePriceImpact(\n bestRoute,\n inputAmount,\n inputUsdValue,\n outputUsdValue\n );\n\n const swapButtonState = getSwapButtonState(\n loadingMetaStatus,\n accounts,\n fetchingBestRoute,\n bestRoute,\n hasLimitError(bestRoute),\n highValueLoss,\n priceImpactCanNotBeComputed,\n needsToWarnEthOnPath\n );\n\n const totalFeeInUsd = getTotalFeeInUsd(bestRoute, tokens);\n\n const highFee = hasHighFee(totalFeeInUsd);\n\n return (\n <Container>\n <Header onClickRefresh={fetchBestRoute} />\n <TokenInfo\n type=\"From\"\n chain={fromChain}\n token={fromToken}\n onAmountChange={setInputAmount}\n inputAmount={inputAmount}\n />\n <SwitchButtonContainer>\n <Button variant=\"ghost\" onClick={swithFromAndTo}>\n <VerticalSwapIcon size={36} />\n {isRouterInContext && <SwithFromAndTo count={count} />}\n </Button>\n </SwitchButtonContainer>\n <TokenInfo\n type=\"To\"\n chain={toChain}\n token={toToken}\n outputAmount={outputAmount}\n outputUsdValue={outputUsdValue}\n />\n {showBestRoute && (\n <BestRouteContainer>\n <BestRoute\n error={bestRouteError}\n loading={fetchingBestRoute}\n data={bestRoute}\n totalFee={numberToString(totalFeeInUsd, 0, 2)}\n feeWarning={highFee}\n totalTime={secondsToString(totalArrivalTime(bestRoute))}\n />\n </BestRouteContainer>\n )}\n {(errorMessage || waningMessage || hasLimitError(bestRoute)) && (\n <Alerts>\n {errorMessage && (\n <Alert type=\"error\">\n {<Typography variant=\"body2\">{errorMessage}</Typography>}\n </Alert>\n )}\n {hasLimitError(bestRoute) && (\n <Alert type=\"error\" title={`${swap?.swapperId} Limit`}>\n <>\n <Typography variant=\"body2\">{fromAmountRangeError}</Typography>\n <br />\n <Typography variant=\"body2\">\n Yours: {numberToString(swap?.fromAmount || null)}\n {swap?.from.symbol}\n </Typography>\n <br />\n <Typography variant=\"body2\">{recommendation}</Typography>\n </>\n </Alert>\n )}\n {waningMessage && (\n <Alert type=\"warning\">\n <Typography variant=\"body2\">{waningMessage}</Typography>\n </Alert>\n )}\n </Alerts>\n )}\n <Footer>\n <Button\n type=\"primary\"\n align=\"grow\"\n size=\"large\"\n disabled={swapButtonState.disabled}\n onClick={() => {\n if (swapButtonState.title === 'Connect Wallet')\n navigate(navigationRoutes.wallets);\n else {\n navigate(navigationRoutes.confirmWallets);\n }\n }}\n >\n {swapButtonState.title}\n </Button>\n <BottomLogo />\n </Footer>\n </Container>\n );\n}\n","import React, { PropsWithChildren, useEffect, useRef } from 'react';\nimport {\n MemoryRouter,\n useInRouterContext,\n useLocation,\n useNavigate,\n} from 'react-router';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { UpdateUrl } from './UpdateUrl';\nimport { Home } from '../pages/Home';\n\nconst Route: React.FC = (props: PropsWithChildren) => {\n const location = useLocation();\n const navigate = useNavigate();\n const ref = useRef(true);\n\n useEffect(() => {\n if (\n [navigationRoutes.confirmWallets, navigationRoutes.confirmSwap].includes(\n location.pathname\n ) &&\n ref.current\n )\n navigate(navigationRoutes.home + location.search, { state: 'redirect' });\n\n ref.current = false;\n }, []);\n\n if (\n [navigationRoutes.confirmWallets, navigationRoutes.confirmSwap].includes(\n location.pathname\n ) &&\n ref.current\n )\n return <Home />;\n\n return <> {props.children}</>;\n};\n\nexport function AppRouter({ children }: PropsWithChildren) {\n const isRouterInContext = useInRouterContext();\n const Router = isRouterInContext ? Route : MemoryRouter;\n\n return (\n <>\n <Router>{children}</Router>\n {isRouterInContext && <UpdateUrl />}\n </>\n );\n}\n","import { create } from 'zustand';\nimport createSelectors from './selectors';\n\ninterface UiState {\n connectWalletsButtonDisabled: boolean;\n toggleConnectWalletsButton: () => void;\n}\n\nexport const useUiStore = createSelectors(\n create<UiState>()((set) => ({\n connectWalletsButtonDisabled: false,\n toggleConnectWalletsButton: () =>\n set((state) => ({ connectWalletsButtonDisabled: !state.connectWalletsButtonDisabled })),\n })),\n);\n","import React from 'react';\nimport { Button, styled } from '@rango-dev/ui';\nimport { useNavigate } from 'react-router-dom';\nimport { navigationRoutes } from '../constants/navigationRoutes';\n\nconst StyledButton = styled(Button, {\n marginTop: '$8',\n});\n\nexport function ChangeSlippageButton() {\n const navigate = useNavigate();\n\n return (\n <StyledButton\n type=\"primary\"\n variant=\"contained\"\n size=\"small\"\n onClick={navigate.bind(null, navigationRoutes.settings)}\n >\n Change Slippage\n </StyledButton>\n );\n}\n","import { Alert, Typography } from '@rango-dev/ui';\nimport React from 'react';\nimport { ChangeSlippageButton } from '../ChangeSlippageButton';\n\ninterface PropTypes {\n selectedSlippage: number;\n}\n\nexport function HighSlippageWarning(props: PropTypes) {\n const { selectedSlippage } = props;\n\n return (\n <Alert type=\"warning\">\n <Typography variant=\"body2\">\n slippage is high=&gt; Caution, your slippage is high (=\n {selectedSlippage}). Your trade may be front run.\n <ChangeSlippageButton />\n </Typography>\n </Alert>\n );\n}\n","import React from 'react';\nimport { HIGH_SLIPPAGE } from '../../constants/swapSettings';\nimport { HighSlippageWarning } from './HighSlippageWarning';\n\ninterface PropTypes {\n selectedSlippage: number;\n}\n\nexport function ConfirmSwapExtraMessages(props: PropTypes) {\n const { selectedSlippage } = props;\n const highSlippage = selectedSlippage >= HIGH_SLIPPAGE;\n\n return <>{highSlippage && <HighSlippageWarning selectedSlippage={selectedSlippage} />}</>;\n}\n","import { useInRouterContext, useNavigate } from 'react-router-dom';\nimport { navigationRoutes } from '../constants/navigationRoutes';\n\nexport function useNavigateBack() {\n const isRouterInContext = useInRouterContext();\n const navigate = useNavigate();\n\n navigationRoutes;\n\n const navigateBackFrom = (currentRoute: string) => {\n if (\n !isRouterInContext ||\n (window.history.state && window.history.state.idx > 0)\n )\n navigate(-1);\n else {\n if (\n [\n navigationRoutes.fromChain,\n navigationRoutes.fromToken,\n navigationRoutes.toChain,\n navigationRoutes.toToken,\n navigationRoutes.settings,\n navigationRoutes.wallets,\n navigationRoutes.history,\n ].includes(currentRoute)\n )\n navigate(navigationRoutes.home, { replace: true });\n else if (currentRoute === navigationRoutes.liquiditySources) {\n navigate(navigationRoutes.settings, { replace: true });\n } else if (currentRoute === navigationRoutes.swapDetails)\n navigate(navigationRoutes.history, { replace: true });\n }\n };\n\n return { navigateBackFrom };\n}\n","import BigNumber from 'bignumber.js';\nimport { create } from 'zustand';\nimport { shallow } from 'zustand/shallow';\nimport { subscribeWithSelector } from 'zustand/middleware';\nimport { httpService } from '../services/httpService';\nimport { PendingSwapSettings } from '../types';\nimport { numberToString } from '../utils/numbers';\nimport {\n isRouteChanged,\n isNumberOfSwapsChanged,\n isRouteSwappersUpdated,\n isRouteInternalCoinsUpdated,\n} from '../utils/routing';\nimport {\n createBestRouteRequestBody,\n getOutputRatio,\n outputRatioHasWarning,\n isOutputAmountChangedALot,\n getRouteOutputAmount,\n getPercentageChange,\n getBalanceWarnings,\n getMinRequiredSlippage,\n hasProperSlippage,\n calculatePendingSwap,\n getWalletsForNewSwap,\n} from '../utils/swap';\nimport { useBestRouteStore } from './bestRoute';\nimport { useMetaStore } from './meta';\nimport createSelectors from './selectors';\nimport { useSettingsStore } from './settings';\nimport { useWalletsStore } from './wallets';\n\ninterface ConfirmSwapState {\n loading: boolean;\n errors: ConfirmSwapError[];\n warnings: ConfirmSwapWarnings[];\n proceedAnyway: boolean;\n}\n\nexport const useConfirmSwapStore = createSelectors(\n create<ConfirmSwapState>()(\n subscribeWithSelector(() => ({\n loading: false,\n errors: [],\n warnings: [],\n proceedAnyway: false,\n }))\n )\n);\n\nexport enum ConfirmSwapErrorTypes {\n NO_ROUTE,\n ROUTE_UPDATED_WITH_HIGH_VALUE_LOSS,\n REQUEST_FAILED,\n INSUFFICIENT_SLIPPAGE,\n}\n\nexport type ConfirmSwapError =\n | {\n type: ConfirmSwapErrorTypes.REQUEST_FAILED;\n status?: number;\n }\n | {\n type: ConfirmSwapErrorTypes.INSUFFICIENT_SLIPPAGE;\n minRequiredSlippage: number;\n }\n | {\n type: Exclude<\n ConfirmSwapErrorTypes,\n | ConfirmSwapErrorTypes.REQUEST_FAILED\n | ConfirmSwapErrorTypes.INSUFFICIENT_SLIPPAGE\n >;\n };\n\nexport type ConfirmSwapWarnings =\n | {\n type: ConfirmSwapWarningTypes.ROUTE_AND_OUTPUT_AMOUNT_UPDATED;\n newOutputAmount: string;\n percentageChange: string;\n }\n | { type: ConfirmSwapWarningTypes.INSUFFICIENT_BALANCE; messages: string[] }\n | {\n type: Exclude<\n ConfirmSwapWarningTypes,\n | ConfirmSwapWarningTypes.ROUTE_AND_OUTPUT_AMOUNT_UPDATED\n | ConfirmSwapWarningTypes.INSUFFICIENT_BALANCE\n >;\n };\n\nexport enum ConfirmSwapWarningTypes {\n ROUTE_UPDATED,\n ROUTE_SWAPPERS_UPDATED,\n ROUTE_COINS_UPDATED,\n ROUTE_AND_OUTPUT_AMOUNT_UPDATED,\n INSUFFICIENT_BALANCE,\n}\n\nexport const confirmSwap = () => {\n const {\n fromToken,\n toToken,\n inputAmount,\n bestRoute: initialRoute,\n inputUsdValue,\n setBestRoute,\n } = useBestRouteStore.getState();\n const { accounts, selectedWallets } = useWalletsStore.getState();\n const { proceedAnyway } = useConfirmSwapStore.getState();\n const { disabledLiquiditySources, slippage, customSlippage } =\n useSettingsStore.getState();\n const { meta } = useMetaStore.getState();\n\n const userSlippage = customSlippage || slippage;\n\n if (!fromToken || !toToken || !inputAmount || !initialRoute) return;\n\n if (proceedAnyway!) {\n const swapSettings: PendingSwapSettings = {\n slippage: userSlippage.toString(),\n disabledSwappersGroups: disabledLiquiditySources,\n };\n\n const newSwap = calculatePendingSwap(\n inputAmount.toString(),\n initialRoute,\n getWalletsForNewSwap(selectedWallets),\n swapSettings,\n false,\n meta\n );\n\n console.log('new swap:', newSwap);\n\n return useConfirmSwapStore.setState({\n errors: [],\n warnings: [],\n proceedAnyway: false,\n });\n }\n\n let abortController: AbortController | null = new AbortController();\n\n useConfirmSwapStore.setState({ loading: true });\n\n const requestBody = createBestRouteRequestBody(\n fromToken,\n toToken,\n inputAmount,\n accounts,\n selectedWallets,\n disabledLiquiditySources,\n userSlippage,\n true\n );\n const unsubscribeFromBestRouteStore = useBestRouteStore.subscribe(\n (state) => state.bestRoute,\n () => {\n abortController.abort();\n },\n { equalityFn: shallow }\n );\n const unsubscribeFromWalletsStore = useWalletsStore.subscribe(\n (state) => state.selectedWallets,\n () => {\n abortController?.abort();\n },\n {\n equalityFn: (prevState, state) => {\n const selectedWalletsChanged = !state.every(\n (wallet) =>\n !!prevState.find(\n (prevWallet) =>\n wallet.address === prevWallet.address &&\n wallet.chain === prevWallet.chain\n )\n );\n\n if (selectedWalletsChanged) return false;\n else return true;\n },\n }\n );\n\n httpService\n .getBestRoute(requestBody, { signal: abortController.signal })\n .then((confiremedRoute) => {\n useConfirmSwapStore.setState({ loading: false });\n\n if (\n !confiremedRoute.result ||\n !new BigNumber(confiremedRoute.requestAmount).isEqualTo(\n new BigNumber(inputAmount || '-1')\n )\n )\n return useConfirmSwapStore.setState((prevState) => ({\n errors: prevState.errors.concat({\n type: ConfirmSwapErrorTypes.NO_ROUTE,\n }),\n }));\n\n const confirmSwap: Partial<ConfirmSwapState> = {\n loading: false,\n errors: [],\n warnings: [],\n proceedAnyway,\n };\n\n const routeChanged = isRouteChanged(initialRoute, confiremedRoute!);\n\n if (routeChanged) {\n setBestRoute(confiremedRoute);\n const newRouteOutputUsdValue = new BigNumber(\n confiremedRoute.result?.outputAmount || '0'\n ).multipliedBy(toToken.usdPrice || 0);\n\n const outputRatio = getOutputRatio(\n inputUsdValue,\n newRouteOutputUsdValue\n );\n const highValueLoss = outputRatioHasWarning(inputUsdValue, outputRatio);\n\n if (isNumberOfSwapsChanged(initialRoute, confiremedRoute))\n confirmSwap.warnings.push({\n type: ConfirmSwapWarningTypes.ROUTE_UPDATED,\n });\n else if (isRouteSwappersUpdated(initialRoute, confiremedRoute))\n confirmSwap.warnings.push({\n type: ConfirmSwapWarningTypes.ROUTE_SWAPPERS_UPDATED,\n });\n else isRouteInternalCoinsUpdated(initialRoute, confiremedRoute);\n confirmSwap.warnings.push({\n type: ConfirmSwapWarningTypes.ROUTE_COINS_UPDATED,\n });\n if (highValueLoss)\n confirmSwap.errors.push({\n type: ConfirmSwapErrorTypes.ROUTE_UPDATED_WITH_HIGH_VALUE_LOSS,\n });\n else if (isOutputAmountChangedALot(initialRoute, confiremedRoute))\n confirmSwap.warnings.push({\n type: ConfirmSwapWarningTypes.ROUTE_AND_OUTPUT_AMOUNT_UPDATED,\n newOutputAmount: numberToString(\n getRouteOutputAmount(confiremedRoute)\n ),\n percentageChange: numberToString(\n getPercentageChange(\n getRouteOutputAmount(initialRoute),\n getRouteOutputAmount(confiremedRoute)\n ),\n null,\n 2\n ),\n });\n }\n\n const balanceWarnings = getBalanceWarnings(\n confiremedRoute,\n selectedWallets\n );\n const enoughBalance = balanceWarnings.length === 0;\n\n if (!enoughBalance)\n confirmSwap.warnings.push({\n type: ConfirmSwapWarningTypes.INSUFFICIENT_BALANCE,\n messages: balanceWarnings,\n });\n\n const minRequiredSlippage = getMinRequiredSlippage(initialRoute);\n\n if (!hasProperSlippage(userSlippage.toString(), minRequiredSlippage))\n confirmSwap.errors.push({\n type: ConfirmSwapErrorTypes.INSUFFICIENT_SLIPPAGE,\n minRequiredSlippage,\n });\n\n const noErrors = confirmSwap.errors.length === 0;\n const noWarnings = confirmSwap.warnings.length === 0;\n\n if (\n (noErrors || (!noErrors && proceedAnyway)) &&\n (noWarnings || (!noWarnings && proceedAnyway))\n ) {\n const swapSettings: PendingSwapSettings = {\n slippage: userSlippage.toString(),\n disabledSwappersGroups: disabledLiquiditySources,\n };\n\n const newSwap = calculatePendingSwap(\n inputAmount.toString(),\n initialRoute,\n getWalletsForNewSwap(selectedWallets),\n swapSettings,\n false,\n meta\n );\n\n console.log('new swap:', newSwap);\n } else if (!proceedAnyway) confirmSwap.proceedAnyway = true;\n\n abortController = null;\n useConfirmSwapStore.setState(confirmSwap);\n unsubscribeFromBestRouteStore();\n unsubscribeFromWalletsStore();\n })\n .catch((error) => {\n abortController = null;\n if (error.code === 'ERR_CANCELED') {\n useConfirmSwapStore.setState({\n errors: [],\n warnings: [],\n loading: false,\n proceedAnyway: false,\n });\n unsubscribeFromBestRouteStore();\n unsubscribeFromWalletsStore();\n }\n\n const status = error.response?.status;\n\n useConfirmSwapStore.setState((prevState) => ({\n loading: false,\n errors: prevState.errors.concat({\n type: ConfirmSwapErrorTypes.REQUEST_FAILED,\n status,\n }),\n }));\n });\n};\n","import { Typography } from '@rango-dev/ui';\nimport React from 'react';\nimport { ChangeSlippageButton } from '../ChangeSlippageButton';\n\ninterface PropTypes {\n minRequiredSlippage: number | null;\n}\n\nexport function MinRequiredSlippage({ minRequiredSlippage }: PropTypes) {\n return (\n <Typography variant=\"body2\">\n slippage is low =&gt; We recommend you to increase slippage to at least\n {minRequiredSlippage}\n for this route.\n <ChangeSlippageButton />\n </Typography>\n );\n}\n","import React from 'react';\nimport { Typography } from '@rango-dev/ui';\nimport { ConfirmSwapError, ConfirmSwapErrorTypes } from '../store/confirmSwap';\nimport { MinRequiredSlippage } from './warnings/MinRequiredSlippage';\n\nexport function ConfirmSwapErrors(errors: ConfirmSwapError[]) {\n return errors.flatMap((error) => {\n switch (error.type) {\n case ConfirmSwapErrorTypes.NO_ROUTE:\n return (\n <Typography variant=\"body2\">\n No routes found. Please try again later.\n </Typography>\n );\n case ConfirmSwapErrorTypes.REQUEST_FAILED:\n return (\n <Typography variant=\"body2\">{`Failed to confirm swap ${\n error.status ? `'status': ${error.status})` : ''\n }, please try again.`}</Typography>\n );\n\n case ConfirmSwapErrorTypes.ROUTE_UPDATED_WITH_HIGH_VALUE_LOSS:\n return (\n <Typography variant=\"body2\">\n Route updated and price impact is too high, try again later!\n </Typography>\n );\n case ConfirmSwapErrorTypes.INSUFFICIENT_SLIPPAGE:\n return (\n <MinRequiredSlippage\n minRequiredSlippage={error.minRequiredSlippage}\n />\n );\n default:\n return [];\n }\n });\n}\n","import { Typography } from '@rango-dev/ui';\nimport React from 'react';\n\ninterface PropTypes {\n messages: string[];\n}\n\nexport function BalanceWarnings({ messages }: PropTypes) {\n return (\n <div>\n {messages.map((warning) => (\n <Typography variant=\"body2\">{warning}</Typography>\n ))}\n </div>\n );\n}\n","import React from 'react';\nimport { Typography } from '@rango-dev/ui';\nimport {\n ConfirmSwapWarnings,\n ConfirmSwapWarningTypes,\n} from '../store/confirmSwap';\nimport { BalanceWarnings } from './warnings/BalanceWarnings';\n\nexport function ConfirmSwapWarnings(warnings: ConfirmSwapWarnings[]) {\n return warnings.flatMap((warning) => {\n switch (warning.type) {\n case ConfirmSwapWarningTypes.ROUTE_UPDATED:\n return <Typography variant=\"body2\">Route has been updated.</Typography>;\n case ConfirmSwapWarningTypes.ROUTE_AND_OUTPUT_AMOUNT_UPDATED:\n return (\n <Typography variant=\"body2\">{`Output amount changed to ${warning.newOutputAmount} \n (${warning.percentageChange}% change).`}</Typography>\n );\n\n case ConfirmSwapWarningTypes.ROUTE_SWAPPERS_UPDATED:\n return (\n <Typography variant=\"body2\">\n Route swappers has been updated.\n </Typography>\n );\n case ConfirmSwapWarningTypes.ROUTE_COINS_UPDATED:\n return (\n <Typography variant=\"body2\">\n Route internal coins has been updated.\n </Typography>\n );\n case ConfirmSwapWarningTypes.INSUFFICIENT_BALANCE:\n return <BalanceWarnings messages={warning.messages} />;\n default:\n return [];\n }\n });\n}\n","import React from 'react';\nimport { ConfirmSwap } from '@rango-dev/ui';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { useSettingsStore } from '../store/settings';\nimport { ConfirmSwapExtraMessages } from '../components/warnings/ConfirmSwapExtraMessages';\nimport { useNavigateBack } from '../hooks/useNavigateBack';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { confirmSwap, useConfirmSwapStore } from '../store/confirmSwap';\nimport { ConfirmSwapErrors } from '../components/ConfirmSwapErrors';\nimport { ConfirmSwapWarnings } from '../components/ConfirmSwapWarnings';\n\nexport function ConfirmSwapPage() {\n const { navigateBackFrom } = useNavigateBack();\n\n const bestRoute = useBestRouteStore.use.bestRoute();\n\n const loading = useConfirmSwapStore.use.loading();\n const warnings = useConfirmSwapStore.use.warnings();\n const errors = useConfirmSwapStore.use.errors();\n\n console.log('loading:', loading, 'warnings:', warnings, 'errors:', errors);\n\n const slippage = useSettingsStore.use.slippage();\n const customSlippage = useSettingsStore.use.customSlippage();\n const selectedSlippage = customSlippage || slippage;\n\n return (\n <ConfirmSwap\n onConfirm={confirmSwap.bind(null)}\n onBack={navigateBackFrom.bind(null, navigationRoutes.confirmSwap)}\n bestRoute={bestRoute}\n loading={loading}\n errors={ConfirmSwapErrors(errors)}\n warnings={ConfirmSwapWarnings(warnings)}\n extraMessages={\n <ConfirmSwapExtraMessages selectedSlippage={selectedSlippage} />\n }\n confirmButtonTitle={\n warnings.length > 0 || errors.length > 0\n ? 'Proceed anyway!'\n : 'Confirm swap!'\n }\n confirmButtonDisabled={errors.length > 0}\n />\n );\n}\n","import { History } from '@rango-dev/ui';\nimport { PendingSwap } from '@rango-dev/ui/dist/containers/History/types';\nimport { TransactionType } from 'rango-sdk';\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { useNavigateBack } from '../hooks/useNavigateBack';\n\nexport const pendingSwap: PendingSwap[] = [\n {\n creationTime: '1673164511955',\n finishTime: '1673164550137',\n requestId: '51e211d9-d61c-45d2-a4d4-1f9f7f90ee85',\n inputAmount: '1',\n wallets: {\n OSMOSIS: {\n walletType: 'keplr',\n address: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n },\n },\n status: 'running',\n isPaused: false,\n extraMessage: null,\n extraMessageSeverity: 'info',\n extraMessageDetail: '',\n extraMessageErrorCode: null,\n networkStatusExtraMessage: null,\n networkStatusExtraMessageDetail: null,\n lastNotificationTime: null,\n settings: {\n slippage: '1.0',\n disabledSwappersIds: [],\n disabledSwappersGroups: [],\n },\n simulationResult: {\n outputAmount: '1.540670',\n swaps: [\n {\n swapperId: 'Osmosis',\n swapperType: 'DEX',\n swapperLogo: '',\n // @ts-ignore\n result: null,\n from: {\n symbol: 'JUNO',\n logo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n address:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n blockchain: 'OSMOSIS',\n blockchainLogo: '',\n decimals: 6,\n usdPrice: 1.1091996179668873,\n },\n to: {\n symbol: 'OSMO',\n logo: 'https://api.rango.exchange/i/mJQPS2',\n address: null,\n blockchain: 'OSMOSIS',\n decimals: 6,\n blockchainLogo: '',\n usdPrice: 0.7192435454440882,\n },\n fromAmount: '1.000000',\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n toAmount: '1.540670',\n fee: [\n {\n name: '',\n asset: {\n blockchain: 'OSMOSIS',\n symbol: 'OSMO',\n address: null,\n },\n expenseType: 'FROM_SOURCE_WALLET',\n amount: '0',\n },\n ],\n estimatedTimeInSeconds: 45,\n swapChainType: 'INTRA_CHAIN',\n routes: [\n {\n nodes: [\n {\n nodes: [\n {\n marketName: 'pool#498',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'JUNO',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n fromAddress:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n fromBlockchain: 'OSMOSIS',\n to: 'ATOM',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/ATOM.png',\n toAddress:\n 'ibc/27394fb092d2eccd56123c74f36e4c1f926001ceada9ca97ea622b25f41e5eb2',\n toBlockchain: 'OSMOSIS',\n },\n {\n nodes: [\n {\n marketName: 'pool#8',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'ATOM',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/ATOM.png',\n fromAddress:\n 'ibc/27394fb092d2eccd56123c74f36e4c1f926001ceada9ca97ea622b25f41e5eb2',\n fromBlockchain: 'OSMOSIS',\n to: 'IRIS',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/IRIS.png',\n toAddress:\n 'ibc/7c4d60aa95e5a7558b0a364860979ca34b7ff8aaf255b87af9e879374470cec0',\n toBlockchain: 'OSMOSIS',\n },\n {\n nodes: [\n {\n marketName: 'pool#7',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'IRIS',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/IRIS.png',\n fromAddress:\n 'ibc/7c4d60aa95e5a7558b0a364860979ca34b7ff8aaf255b87af9e879374470cec0',\n fromBlockchain: 'OSMOSIS',\n to: 'OSMO',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/OSMO.png',\n toAddress: null,\n toBlockchain: 'OSMOSIS',\n },\n ],\n },\n ],\n recommendedSlippage: null,\n timeStat: {\n min: 6,\n avg: 40,\n max: 241,\n },\n includesDestinationTx: false,\n },\n ],\n },\n validateBalanceOrFee: true,\n steps: [\n {\n id: 1,\n fromBlockchain: 'OSMOSIS',\n fromSymbol: 'JUNO',\n fromSymbolAddress:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n fromDecimals: 6,\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n swapperLogo: '',\n swapperType: '',\n fromAmountMaxValue: null,\n toBlockchainLogo: 'https://api.rango.exchange/swappers/osmosis.png',\n fromBlockchainLogo: 'https://api.rango.exchange/swappers/osmosis.png',\n toBlockchain: 'OSMOSIS',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n toSymbol: 'OSMO',\n toSymbolAddress: null,\n toDecimals: 6,\n toLogo: 'https://api.rango.exchange/i/mJQPS2',\n startTransactionTime: 1673164519916,\n swapperId: 'Osmosis',\n expectedOutputAmountHumanReadable: '1.540670',\n outputAmount: '1.540658',\n status: 'running',\n networkStatus: null,\n executedTransactionId:\n '0f8f17eecc863c2d6be65ef52cfe3128ff3cd7baeddf133160bea8ccdfbf876b',\n explorerUrl: [\n {\n url: 'https://www.mintscan.io/osmosis/txs/0f8f17eecc863c2d6be65ef52cfe3128ff3cd7baeddf133160bea8ccdfbf876b',\n description: null,\n },\n ],\n cosmosTransaction: {\n type: TransactionType.COSMOS,\n fromWalletAddress: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n blockChain: 'OSMOSIS',\n data: {\n chainId: 'osmosis-1',\n account_number: 102721,\n sequence: '308',\n msgs: [\n {\n __type: 'OsmosisSwapMessage',\n type: 'osmosis/gamm/swap-exact-amount-in',\n value: {\n sender: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n routes: [\n {\n pool_id: '498',\n token_out_denom:\n 'ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2',\n },\n {\n pool_id: '8',\n token_out_denom:\n 'ibc/7C4D60AA95E5A7558B0A364860979CA34B7FF8AAF255B87AF9E879374470CEC0',\n },\n {\n pool_id: '7',\n token_out_denom: 'uosmo',\n },\n ],\n token_in: {\n denom:\n 'ibc/46B44899322F3CD854D2D46DEEF881958467CDD4B3B10086DA49296BBED94BED',\n amount: '1000000',\n },\n token_out_min_amount: '1525264',\n },\n },\n ],\n protoMsgs: [\n {\n type_url: '/osmosis.gamm.v1beta1.MsgSwapExactAmountIn',\n value: [\n 10, 43, 111, 115, 109, 111, 49, 117, 110, 102, 50, 114, 99,\n 121, 116, 106, 120, 102, 112, 122, 56, 120, 56, 97, 114, 54,\n 51, 104, 52, 113, 101, 102, 116, 97, 100, 112, 116, 103, 53,\n 116, 48, 110, 113, 99, 108, 18, 73, 8, -14, 3, 18, 68, 105,\n 98, 99, 47, 50, 55, 51, 57, 52, 70, 66, 48, 57, 50, 68, 50,\n 69, 67, 67, 68, 53, 54, 49, 50, 51, 67, 55, 52, 70, 51, 54,\n 69, 52, 67, 49, 70, 57, 50, 54, 48, 48, 49, 67, 69, 65, 68,\n 65, 57, 67, 65, 57, 55, 69, 65, 54, 50, 50, 66, 50, 53, 70,\n 52, 49, 69, 53, 69, 66, 50, 18, 72, 8, 8, 18, 68, 105, 98, 99,\n 47, 55, 67, 52, 68, 54, 48, 65, 65, 57, 53, 69, 53, 65, 55,\n 53, 53, 56, 66, 48, 65, 51, 54, 52, 56, 54, 48, 57, 55, 57,\n 67, 65, 51, 52, 66, 55, 70, 70, 56, 65, 65, 70, 50, 53, 53,\n 66, 56, 55, 65, 70, 57, 69, 56, 55, 57, 51, 55, 52, 52, 55,\n 48, 67, 69, 67, 48, 18, 9, 8, 7, 18, 5, 117, 111, 115, 109,\n 111, 26, 79, 10, 68, 105, 98, 99, 47, 52, 54, 66, 52, 52, 56,\n 57, 57, 51, 50, 50, 70, 51, 67, 68, 56, 53, 52, 68, 50, 68,\n 52, 54, 68, 69, 69, 70, 56, 56, 49, 57, 53, 56, 52, 54, 55,\n 67, 68, 68, 52, 66, 51, 66, 49, 48, 48, 56, 54, 68, 65, 52,\n 57, 50, 57, 54, 66, 66, 69, 68, 57, 52, 66, 69, 68, 18, 7, 49,\n 48, 48, 48, 48, 48, 48, 34, 7, 49, 53, 50, 53, 50, 54, 52,\n ],\n },\n ],\n memo: '',\n source: null,\n fee: {\n gas: '900000',\n amount: [\n {\n denom: 'uosmo',\n amount: '0',\n },\n ],\n },\n signType: 'AMINO',\n rpcUrl: '',\n },\n rawTransfer: null,\n },\n solanaTransaction: null,\n evmTransaction: null,\n evmApprovalTransaction: null,\n transferTransaction: null,\n diagnosisUrl: null,\n internalSteps: null,\n },\n ],\n },\n {\n creationTime: '1673164511955',\n finishTime: '1673164550137',\n requestId: '51e211d9-d61c-45d2-a4d4-1f9f7f90ee85',\n inputAmount: '1',\n wallets: {\n OSMOSIS: {\n walletType: 'keplr',\n address: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n },\n },\n status: 'failed',\n isPaused: false,\n extraMessage: null,\n extraMessageSeverity: 'info',\n extraMessageDetail: '',\n extraMessageErrorCode: null,\n networkStatusExtraMessage: null,\n networkStatusExtraMessageDetail: null,\n lastNotificationTime: null,\n settings: {\n slippage: '1.0',\n disabledSwappersIds: [],\n disabledSwappersGroups: [],\n },\n simulationResult: {\n outputAmount: '1.540670',\n swaps: [\n {\n swapperId: 'Osmosis',\n swapperLogo: '',\n // @ts-ignore\n result: null,\n swapperType: 'DEX',\n from: {\n symbol: 'JUNO',\n logo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n address:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n blockchain: 'OSMOSIS',\n blockchainLogo: '',\n decimals: 6,\n usdPrice: 1.1091996179668873,\n },\n to: {\n symbol: 'OSMO',\n logo: 'https://api.rango.exchange/i/mJQPS2',\n address: null,\n blockchain: 'OSMOSIS',\n decimals: 6,\n blockchainLogo: '',\n usdPrice: 0.7192435454440882,\n },\n fromAmount: '1.000000',\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n toAmount: '1.540670',\n fee: [\n {\n name: '',\n asset: {\n blockchain: 'OSMOSIS',\n symbol: 'OSMO',\n address: null,\n },\n expenseType: 'FROM_SOURCE_WALLET',\n amount: '0',\n },\n ],\n estimatedTimeInSeconds: 45,\n swapChainType: 'INTRA_CHAIN',\n routes: [\n {\n nodes: [\n {\n nodes: [\n {\n marketName: 'pool#498',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'JUNO',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n fromAddress:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n fromBlockchain: 'OSMOSIS',\n to: 'ATOM',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/ATOM.png',\n toAddress:\n 'ibc/27394fb092d2eccd56123c74f36e4c1f926001ceada9ca97ea622b25f41e5eb2',\n toBlockchain: 'OSMOSIS',\n },\n {\n nodes: [\n {\n marketName: 'pool#8',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'ATOM',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/ATOM.png',\n fromAddress:\n 'ibc/27394fb092d2eccd56123c74f36e4c1f926001ceada9ca97ea622b25f41e5eb2',\n fromBlockchain: 'OSMOSIS',\n to: 'IRIS',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/IRIS.png',\n toAddress:\n 'ibc/7c4d60aa95e5a7558b0a364860979ca34b7ff8aaf255b87af9e879374470cec0',\n toBlockchain: 'OSMOSIS',\n },\n {\n nodes: [\n {\n marketName: 'pool#7',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'IRIS',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/IRIS.png',\n fromAddress:\n 'ibc/7c4d60aa95e5a7558b0a364860979ca34b7ff8aaf255b87af9e879374470cec0',\n fromBlockchain: 'OSMOSIS',\n to: 'OSMO',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/OSMO.png',\n toAddress: null,\n toBlockchain: 'OSMOSIS',\n },\n ],\n },\n ],\n recommendedSlippage: null,\n timeStat: {\n min: 6,\n avg: 40,\n max: 241,\n },\n includesDestinationTx: false,\n },\n ],\n },\n validateBalanceOrFee: true,\n steps: [\n {\n id: 1,\n fromBlockchain: 'OSMOSIS',\n fromSymbol: 'JUNO',\n fromSymbolAddress:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n fromDecimals: 6,\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n toBlockchainLogo: 'https://api.rango.exchange/swappers/osmosis.png',\n fromBlockchainLogo: 'https://api.rango.exchange/swappers/osmosis.png',\n toBlockchain: 'OSMOSIS',\n swapperLogo: '',\n swapperType: '',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n toSymbol: 'OSMO',\n toSymbolAddress: null,\n toDecimals: 6,\n toLogo: 'https://api.rango.exchange/i/mJQPS2',\n startTransactionTime: 1673164519916,\n swapperId: 'Osmosis',\n expectedOutputAmountHumanReadable: '1.540670',\n outputAmount: '1.540658',\n status: 'failed',\n networkStatus: null,\n executedTransactionId:\n '0f8f17eecc863c2d6be65ef52cfe3128ff3cd7baeddf133160bea8ccdfbf876b',\n explorerUrl: [\n {\n url: 'https://www.mintscan.io/osmosis/txs/0f8f17eecc863c2d6be65ef52cfe3128ff3cd7baeddf133160bea8ccdfbf876b',\n description: null,\n },\n ],\n cosmosTransaction: {\n type: TransactionType.COSMOS,\n fromWalletAddress: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n blockChain: 'OSMOSIS',\n data: {\n chainId: 'osmosis-1',\n account_number: 102721,\n sequence: '308',\n msgs: [\n {\n __type: 'OsmosisSwapMessage',\n type: 'osmosis/gamm/swap-exact-amount-in',\n value: {\n sender: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n routes: [\n {\n pool_id: '498',\n token_out_denom:\n 'ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2',\n },\n {\n pool_id: '8',\n token_out_denom:\n 'ibc/7C4D60AA95E5A7558B0A364860979CA34B7FF8AAF255B87AF9E879374470CEC0',\n },\n {\n pool_id: '7',\n token_out_denom: 'uosmo',\n },\n ],\n token_in: {\n denom:\n 'ibc/46B44899322F3CD854D2D46DEEF881958467CDD4B3B10086DA49296BBED94BED',\n amount: '1000000',\n },\n token_out_min_amount: '1525264',\n },\n },\n ],\n protoMsgs: [\n {\n type_url: '/osmosis.gamm.v1beta1.MsgSwapExactAmountIn',\n value: [\n 10, 43, 111, 115, 109, 111, 49, 117, 110, 102, 50, 114, 99,\n 121, 116, 106, 120, 102, 112, 122, 56, 120, 56, 97, 114, 54,\n 51, 104, 52, 113, 101, 102, 116, 97, 100, 112, 116, 103, 53,\n 116, 48, 110, 113, 99, 108, 18, 73, 8, -14, 3, 18, 68, 105,\n 98, 99, 47, 50, 55, 51, 57, 52, 70, 66, 48, 57, 50, 68, 50,\n 69, 67, 67, 68, 53, 54, 49, 50, 51, 67, 55, 52, 70, 51, 54,\n 69, 52, 67, 49, 70, 57, 50, 54, 48, 48, 49, 67, 69, 65, 68,\n 65, 57, 67, 65, 57, 55, 69, 65, 54, 50, 50, 66, 50, 53, 70,\n 52, 49, 69, 53, 69, 66, 50, 18, 72, 8, 8, 18, 68, 105, 98, 99,\n 47, 55, 67, 52, 68, 54, 48, 65, 65, 57, 53, 69, 53, 65, 55,\n 53, 53, 56, 66, 48, 65, 51, 54, 52, 56, 54, 48, 57, 55, 57,\n 67, 65, 51, 52, 66, 55, 70, 70, 56, 65, 65, 70, 50, 53, 53,\n 66, 56, 55, 65, 70, 57, 69, 56, 55, 57, 51, 55, 52, 52, 55,\n 48, 67, 69, 67, 48, 18, 9, 8, 7, 18, 5, 117, 111, 115, 109,\n 111, 26, 79, 10, 68, 105, 98, 99, 47, 52, 54, 66, 52, 52, 56,\n 57, 57, 51, 50, 50, 70, 51, 67, 68, 56, 53, 52, 68, 50, 68,\n 52, 54, 68, 69, 69, 70, 56, 56, 49, 57, 53, 56, 52, 54, 55,\n 67, 68, 68, 52, 66, 51, 66, 49, 48, 48, 56, 54, 68, 65, 52,\n 57, 50, 57, 54, 66, 66, 69, 68, 57, 52, 66, 69, 68, 18, 7, 49,\n 48, 48, 48, 48, 48, 48, 34, 7, 49, 53, 50, 53, 50, 54, 52,\n ],\n },\n ],\n memo: '',\n source: null,\n fee: {\n gas: '900000',\n amount: [\n {\n denom: 'uosmo',\n amount: '0',\n },\n ],\n },\n signType: 'AMINO',\n rpcUrl: '',\n },\n rawTransfer: null,\n },\n solanaTransaction: null,\n evmTransaction: null,\n evmApprovalTransaction: null,\n transferTransaction: null,\n diagnosisUrl: null,\n internalSteps: null,\n },\n ],\n },\n {\n creationTime: '1673164511955',\n finishTime: '1673164550137',\n requestId: '51e211d9-d61c-45d2-a4d4-1f9f7f90ee85',\n inputAmount: '1',\n wallets: {\n OSMOSIS: {\n walletType: 'keplr',\n address: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n },\n },\n status: 'success',\n isPaused: false,\n extraMessage: null,\n extraMessageSeverity: 'info',\n extraMessageDetail: '',\n extraMessageErrorCode: null,\n networkStatusExtraMessage: null,\n networkStatusExtraMessageDetail: null,\n lastNotificationTime: null,\n settings: {\n slippage: '1.0',\n disabledSwappersIds: [],\n disabledSwappersGroups: [],\n },\n simulationResult: {\n outputAmount: '1.540670',\n swaps: [\n {\n // @ts-ignore\n result: [],\n swapperId: 'Osmosis',\n swapperType: 'DEX',\n swapperLogo: '',\n\n from: {\n symbol: 'JUNO',\n logo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n address:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n blockchain: 'OSMOSIS',\n blockchainLogo: '',\n decimals: 6,\n usdPrice: 1.1091996179668873,\n },\n to: {\n symbol: 'OSMO',\n logo: 'https://api.rango.exchange/i/mJQPS2',\n address: null,\n blockchain: 'OSMOSIS',\n decimals: 6,\n blockchainLogo: '',\n usdPrice: 0.7192435454440882,\n },\n fromAmount: '1.000000',\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n toAmount: '1.540670',\n fee: [\n {\n name: '',\n asset: {\n blockchain: 'OSMOSIS',\n symbol: 'OSMO',\n address: null,\n },\n expenseType: 'FROM_SOURCE_WALLET',\n amount: '0',\n },\n ],\n estimatedTimeInSeconds: 45,\n swapChainType: 'INTRA_CHAIN',\n routes: [\n {\n nodes: [\n {\n nodes: [\n {\n marketName: 'pool#498',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'JUNO',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n fromAddress:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n fromBlockchain: 'OSMOSIS',\n to: 'ATOM',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/ATOM.png',\n toAddress:\n 'ibc/27394fb092d2eccd56123c74f36e4c1f926001ceada9ca97ea622b25f41e5eb2',\n toBlockchain: 'OSMOSIS',\n },\n {\n nodes: [\n {\n marketName: 'pool#8',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'ATOM',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/ATOM.png',\n fromAddress:\n 'ibc/27394fb092d2eccd56123c74f36e4c1f926001ceada9ca97ea622b25f41e5eb2',\n fromBlockchain: 'OSMOSIS',\n to: 'IRIS',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/IRIS.png',\n toAddress:\n 'ibc/7c4d60aa95e5a7558b0a364860979ca34b7ff8aaf255b87af9e879374470cec0',\n toBlockchain: 'OSMOSIS',\n },\n {\n nodes: [\n {\n marketName: 'pool#7',\n marketId: null,\n percent: 1,\n },\n ],\n from: 'IRIS',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/IRIS.png',\n fromAddress:\n 'ibc/7c4d60aa95e5a7558b0a364860979ca34b7ff8aaf255b87af9e879374470cec0',\n fromBlockchain: 'OSMOSIS',\n to: 'OSMO',\n toLogo: 'https://api.rango.exchange/tokens/COSMOS/OSMO.png',\n toAddress: null,\n toBlockchain: 'OSMOSIS',\n },\n ],\n },\n ],\n recommendedSlippage: null,\n timeStat: {\n min: 6,\n avg: 40,\n max: 241,\n },\n includesDestinationTx: false,\n },\n ],\n },\n validateBalanceOrFee: true,\n steps: [\n {\n id: 1,\n fromBlockchain: 'OSMOSIS',\n fromSymbol: 'JUNO',\n fromSymbolAddress:\n 'ibc/46b44899322f3cd854d2d46deef881958467cdd4b3b10086da49296bbed94bed',\n fromDecimals: 6,\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n swapperLogo: '',\n swapperType: '',\n fromAmountMaxValue: null,\n toBlockchainLogo: 'https://api.rango.exchange/swappers/osmosis.png',\n fromBlockchainLogo: 'https://api.rango.exchange/swappers/osmosis.png',\n toBlockchain: 'OSMOSIS',\n fromLogo: 'https://api.rango.exchange/tokens/COSMOS/JUNO.png',\n toSymbol: 'OSMO',\n toSymbolAddress: null,\n toDecimals: 6,\n toLogo: 'https://api.rango.exchange/i/mJQPS2',\n startTransactionTime: 1673164519916,\n swapperId: 'Osmosis',\n expectedOutputAmountHumanReadable: '1.540670',\n outputAmount: '1.540658',\n status: 'success',\n networkStatus: null,\n executedTransactionId:\n '0f8f17eecc863c2d6be65ef52cfe3128ff3cd7baeddf133160bea8ccdfbf876b',\n explorerUrl: [\n {\n url: 'https://www.mintscan.io/osmosis/txs/0f8f17eecc863c2d6be65ef52cfe3128ff3cd7baeddf133160bea8ccdfbf876b',\n description: null,\n },\n ],\n cosmosTransaction: {\n type: TransactionType.COSMOS,\n fromWalletAddress: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n blockChain: 'OSMOSIS',\n data: {\n chainId: 'osmosis-1',\n account_number: 102721,\n sequence: '308',\n msgs: [\n {\n __type: 'OsmosisSwapMessage',\n type: 'osmosis/gamm/swap-exact-amount-in',\n value: {\n sender: 'osmo1unf2rcytjxfpz8x8ar63h4qeftadptg5t0nqcl',\n routes: [\n {\n pool_id: '498',\n token_out_denom:\n 'ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2',\n },\n {\n pool_id: '8',\n token_out_denom:\n 'ibc/7C4D60AA95E5A7558B0A364860979CA34B7FF8AAF255B87AF9E879374470CEC0',\n },\n {\n pool_id: '7',\n token_out_denom: 'uosmo',\n },\n ],\n token_in: {\n denom:\n 'ibc/46B44899322F3CD854D2D46DEEF881958467CDD4B3B10086DA49296BBED94BED',\n amount: '1000000',\n },\n token_out_min_amount: '1525264',\n },\n },\n ],\n protoMsgs: [\n {\n type_url: '/osmosis.gamm.v1beta1.MsgSwapExactAmountIn',\n value: [\n 10, 43, 111, 115, 109, 111, 49, 117, 110, 102, 50, 114, 99,\n 121, 116, 106, 120, 102, 112, 122, 56, 120, 56, 97, 114, 54,\n 51, 104, 52, 113, 101, 102, 116, 97, 100, 112, 116, 103, 53,\n 116, 48, 110, 113, 99, 108, 18, 73, 8, -14, 3, 18, 68, 105,\n 98, 99, 47, 50, 55, 51, 57, 52, 70, 66, 48, 57, 50, 68, 50,\n 69, 67, 67, 68, 53, 54, 49, 50, 51, 67, 55, 52, 70, 51, 54,\n 69, 52, 67, 49, 70, 57, 50, 54, 48, 48, 49, 67, 69, 65, 68,\n 65, 57, 67, 65, 57, 55, 69, 65, 54, 50, 50, 66, 50, 53, 70,\n 52, 49, 69, 53, 69, 66, 50, 18, 72, 8, 8, 18, 68, 105, 98, 99,\n 47, 55, 67, 52, 68, 54, 48, 65, 65, 57, 53, 69, 53, 65, 55,\n 53, 53, 56, 66, 48, 65, 51, 54, 52, 56, 54, 48, 57, 55, 57,\n 67, 65, 51, 52, 66, 55, 70, 70, 56, 65, 65, 70, 50, 53, 53,\n 66, 56, 55, 65, 70, 57, 69, 56, 55, 57, 51, 55, 52, 52, 55,\n 48, 67, 69, 67, 48, 18, 9, 8, 7, 18, 5, 117, 111, 115, 109,\n 111, 26, 79, 10, 68, 105, 98, 99, 47, 52, 54, 66, 52, 52, 56,\n 57, 57, 51, 50, 50, 70, 51, 67, 68, 56, 53, 52, 68, 50, 68,\n 52, 54, 68, 69, 69, 70, 56, 56, 49, 57, 53, 56, 52, 54, 55,\n 67, 68, 68, 52, 66, 51, 66, 49, 48, 48, 56, 54, 68, 65, 52,\n 57, 50, 57, 54, 66, 66, 69, 68, 57, 52, 66, 69, 68, 18, 7, 49,\n 48, 48, 48, 48, 48, 48, 34, 7, 49, 53, 50, 53, 50, 54, 52,\n ],\n },\n ],\n memo: '',\n source: null,\n fee: {\n gas: '900000',\n amount: [\n {\n denom: 'uosmo',\n amount: '0',\n },\n ],\n },\n signType: 'AMINO',\n rpcUrl: '',\n },\n rawTransfer: null,\n },\n solanaTransaction: null,\n evmTransaction: null,\n evmApprovalTransaction: null,\n transferTransaction: null,\n diagnosisUrl: null,\n internalSteps: null,\n },\n ],\n },\n];\n\nexport function HistoryPage() {\n const navigate = useNavigate();\n const { navigateBackFrom } = useNavigateBack();\n return (\n <History\n list={pendingSwap}\n onSwapClick={navigate.bind(null, navigationRoutes.swapDetails)}\n onBack={navigateBackFrom.bind(null, navigationRoutes.history)}\n />\n );\n}\n","import { LiquiditySourcesSelector } from '@rango-dev/ui';\nimport React from 'react';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { useNavigateBack } from '../hooks/useNavigateBack';\nimport { useMetaStore } from '../store/meta';\nimport { useSettingsStore } from '../store/settings';\nimport { removeDuplicateFrom } from '../utils/common';\n\nexport function LiquiditySourcePage() {\n const { swappers } = useMetaStore.use.meta();\n const toggleLiquiditySource = useSettingsStore.use.toggleLiquiditySource();\n const disabledLiquiditySources =\n useSettingsStore.use.disabledLiquiditySources();\n const toggleAllLiquiditySources =\n useSettingsStore.use.toggleAllLiquiditySources();\n\n const { navigateBackFrom } = useNavigateBack();\n\n const uniqueSwappersGroups: Array<{\n title: string;\n logo: string;\n type: 'BRIDGE' | 'AGGREGATOR' | 'DEX';\n selected: boolean;\n }> = [];\n removeDuplicateFrom(swappers.map((s) => s.swapperGroup))\n .map((swapperGroup) => {\n return swappers.find((s) => s.swapperGroup === swapperGroup);\n })\n .find((s) => {\n if (s) {\n for (const type of s.types) {\n uniqueSwappersGroups.push({\n title: s.swapperGroup,\n logo: s.logo,\n type,\n selected: !disabledLiquiditySources.includes(s.swapperGroup),\n });\n }\n }\n });\n\n return (\n <LiquiditySourcesSelector\n toggleAll={toggleAllLiquiditySources}\n list={uniqueSwappersGroups}\n onChange={(liquiditySource) =>\n toggleLiquiditySource(liquiditySource.title)\n }\n onBack={navigateBackFrom.bind(null, navigationRoutes.liquiditySources)}\n />\n );\n}\n","import React from 'react';\nimport { BlockchainSelector } from '@rango-dev/ui';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { useMetaStore } from '../store/meta';\nimport { useNavigateBack } from '../hooks/useNavigateBack';\nimport { navigationRoutes } from '../constants/navigationRoutes';\n\ninterface PropTypes {\n type: 'from' | 'to';\n}\n\nexport function SelectChainPage(props: PropTypes) {\n const { type } = props;\n\n const { blockchains } = useMetaStore.use.meta();\n const loadingStatus = useMetaStore.use.loadingStatus();\n const fromChain = useBestRouteStore.use.fromChain();\n const toChain = useBestRouteStore.use.toChain();\n const setFromChain = useBestRouteStore.use.setFromChain();\n const setToChain = useBestRouteStore.use.setToChain();\n const setFromToken = useBestRouteStore.use.setFromToken();\n const setToToken = useBestRouteStore.use.setToToken();\n\n const { navigateBackFrom } = useNavigateBack();\n\n return (\n <BlockchainSelector\n type={type === 'from' ? 'Source' : 'Destination'}\n list={blockchains}\n selected={type === 'from' ? fromChain : toChain}\n loadingStatus={loadingStatus}\n onChange={(chain) => {\n if (type === 'from') setFromChain(chain);\n else setToChain(chain);\n if (type === 'from' && fromChain?.name != chain.name)\n setFromToken(null);\n if (type === 'to' && toChain?.name != chain.name) setToToken(null);\n navigateBackFrom(navigationRoutes.fromChain);\n }}\n onBack={navigateBackFrom.bind(null, navigationRoutes.fromChain)}\n />\n );\n}\n","import React from 'react';\nimport { TokenSelector } from '@rango-dev/ui';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { useMetaStore } from '../store/meta';\nimport { Token } from 'rango-sdk';\nimport { numberToString } from '../utils/numbers';\nimport BigNumber from 'bignumber.js';\nimport { getBalanceFromWallet } from '../utils/wallets';\nimport { useWalletsStore } from '../store/wallets';\nimport { sortedTokens } from '../utils/wallets';\nimport { ZERO } from '../constants/numbers';\nimport { useNavigateBack } from '../hooks/useNavigateBack';\nimport { navigationRoutes } from '../constants/navigationRoutes';\n\ninterface PropTypes {\n type: 'from' | 'to';\n}\n\nexport interface TokenWithBalance extends Token {\n balance?: {\n amount: string;\n usdValue: string;\n };\n}\n\nexport function SelectTokenPage(props: PropTypes) {\n const { type } = props;\n const { navigateBackFrom } = useNavigateBack();\n\n const { tokens } = useMetaStore.use.meta();\n const fromChain = useBestRouteStore.use.fromChain();\n const toChain = useBestRouteStore.use.toChain();\n const fromToken = useBestRouteStore.use.fromToken();\n const toToken = useBestRouteStore.use.toToken();\n const setFromToken = useBestRouteStore.use.setFromToken();\n const setToToken = useBestRouteStore.use.setToToken();\n\n const balance = useWalletsStore.use.balances();\n\n const tokenWithSelectedChain = tokens.filter((token) => {\n if (type === 'from') return token.blockchain === fromChain?.name;\n return token.blockchain === toChain?.name;\n });\n\n const TokensWithBalance: TokenWithBalance[] = tokenWithSelectedChain.map(\n (token) => {\n const tokenAmount = numberToString(\n new BigNumber(\n getBalanceFromWallet(\n balance,\n token.blockchain,\n token.symbol,\n token.address\n )?.amount || ZERO\n )\n );\n\n let tokenUsdValue = '';\n if (token.usdPrice)\n tokenUsdValue = numberToString(\n new BigNumber(\n getBalanceFromWallet(\n balance,\n token.blockchain,\n token.symbol,\n token.address\n )?.amount || ZERO\n ).multipliedBy(token.usdPrice)\n );\n return {\n ...token,\n balance: {\n amount: tokenAmount !== '0' ? tokenAmount : '',\n usdValue: tokenUsdValue !== '0' ? tokenUsdValue : '',\n },\n };\n }\n );\n\n const sortedTokenList = sortedTokens(TokensWithBalance, type, balance);\n\n return (\n <TokenSelector\n type={type === 'from' ? 'Source' : 'Destination'}\n list={sortedTokenList}\n selected={type === 'from' ? fromToken : toToken}\n onChange={(token) => {\n if (type === 'from') setFromToken(token);\n else setToToken(token);\n navigateBackFrom(navigationRoutes.fromToken);\n }}\n onBack={navigateBackFrom.bind(null, navigationRoutes.fromToken)}\n />\n );\n}\n","import React from 'react';\nimport { Settings } from '@rango-dev/ui';\nimport { useSettingsStore } from '../store/settings';\nimport { useMetaStore } from '../store/meta';\nimport { useNavigate } from 'react-router-dom';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { removeDuplicateFrom } from '../utils/common';\nimport {\n MAX_SLIPPAGE,\n MIN_SLIPPGAE,\n SLIPPAGES,\n} from '../constants/swapSettings';\nimport { useNavigateBack } from '../hooks/useNavigateBack';\n\nexport function SettingsPage() {\n const slippage = useSettingsStore.use.slippage();\n const setSlippage = useSettingsStore.use.setSlippage();\n const disabledLiquiditySources =\n useSettingsStore.use.disabledLiquiditySources();\n const customSlippage = useSettingsStore.use.customSlippage();\n const setCustomSlippage = useSettingsStore.use.setCustomSlippage();\n const theme = useSettingsStore.use.theme();\n const setTheme = useSettingsStore.use.setTheme();\n const { swappers } = useMetaStore.use.meta();\n const navigate = useNavigate();\n const { navigateBackFrom } = useNavigateBack();\n\n const infiniteApprove = useSettingsStore.use.infiniteApprove();\n const toggleInfiniteApprove = useSettingsStore.use.toggleInfiniteApprove();\n const uniqueSwappersGroups: Array<{\n title: string;\n logo: string;\n type: 'BRIDGE' | 'AGGREGATOR' | 'DEX';\n selected: boolean;\n }> = [];\n removeDuplicateFrom(swappers.map(s => s.swapperGroup))\n .map(swapperGroup => {\n return swappers.find(s => s.swapperGroup === swapperGroup);\n })\n .find(s => {\n if (s) {\n for (const type of s.types) {\n uniqueSwappersGroups.push({\n title: s.swapperGroup,\n logo: s.logo,\n type,\n selected: !disabledLiquiditySources.includes(s.swapperGroup),\n });\n }\n }\n });\n\n return (\n <Settings\n slippages={SLIPPAGES}\n selectedSlippage={slippage}\n onSlippageChange={slippage => setSlippage(slippage)}\n liquiditySources={uniqueSwappersGroups}\n selectedLiquiditySources={uniqueSwappersGroups.filter((s) => s.selected)}\n onLiquiditySourcesClick={navigate.bind(\n null,\n navigationRoutes.liquiditySources\n )}\n onBack={navigateBackFrom.bind(null, navigationRoutes.settings)}\n customSlippage={customSlippage || NaN}\n onCustomSlippageChange={setCustomSlippage}\n minSlippage={MIN_SLIPPGAE}\n maxSlippage={MAX_SLIPPAGE}\n selectedTheme={theme}\n onThemeChange={setTheme}\n infiniteApprove={infiniteApprove}\n toggleInfiniteApprove={toggleInfiniteApprove}\n />\n );\n}\n","import {\n Alert,\n SecondaryPage,\n styled,\n Wallet,\n Typography,\n} from '@rango-dev/ui';\nimport React, { useEffect, useState } from 'react';\nimport { getlistWallet } from '../utils/wallets';\nimport { WalletType } from '@rango-dev/wallets-shared';\nimport { useWallets } from '@rango-dev/wallets-core';\nimport { useUiStore } from '../store/ui';\nimport { useNavigateBack } from '../hooks/useNavigateBack';\nimport { navigationRoutes } from '../constants/navigationRoutes';\n\nconst ListContainer = styled('div', {\n display: 'grid',\n gap: '.5rem',\n gridTemplateColumns: ' repeat(2, minmax(0, 1fr))',\n height: '450px',\n alignContent: 'baseline',\n padding: '0 0.5rem',\n});\n\nconst AlertContainer = styled('div', {\n paddingBottom: '$16',\n});\nexport function WalletsPage() {\n const { navigateBackFrom } = useNavigateBack();\n const { state, disconnect, getWalletInfo, connect } = useWallets();\n const wallets = getlistWallet(\n state,\n getWalletInfo,\n Object.values(WalletType)\n );\n const [walletErrorMessage, setWalletErrorMessage] = useState('');\n const toggleConnectWalletsButton =\n useUiStore.use.toggleConnectWalletsButton();\n\n const onSelectWallet = async (type: WalletType) => {\n const wallet = state(type);\n try {\n if (walletErrorMessage) setWalletErrorMessage('');\n if (wallet.connected) {\n await disconnect(type);\n } else {\n await connect(type);\n }\n } catch (e) {\n setWalletErrorMessage('Error: ' + e.message);\n }\n };\n\n useEffect(() => {\n toggleConnectWalletsButton();\n return () => toggleConnectWalletsButton();\n }, []);\n\n return (\n <SecondaryPage\n title=\"Select Wallet\"\n textField={false}\n onBack={navigateBackFrom.bind(null, navigationRoutes.wallets)}\n >\n <>\n {walletErrorMessage && (\n <AlertContainer>\n <Alert type=\"error\">\n <Typography variant=\"body2\">{walletErrorMessage}</Typography>\n </Alert>\n </AlertContainer>\n )}\n <ListContainer>\n {wallets.map((info, index) => (\n <Wallet {...info} key={index} onClick={onSelectWallet} />\n ))}\n </ListContainer>\n </>\n </SecondaryPage>\n );\n}\n","import React, { useEffect } from 'react';\nimport { ConfirmWallets } from '@rango-dev/ui';\nimport { useNavigate } from 'react-router-dom';\nimport { useBestRouteStore } from '../store/bestRoute';\nimport { useWalletsStore } from '../store/wallets';\nimport { useWallets } from '@rango-dev/wallets-core';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport {\n getKeplrCompatibleConnectedWallets,\n getRequiredChains,\n getSelectableWallets,\n isExperimentalChain,\n} from '../utils/wallets';\nimport { requiredWallets } from '../utils/swap';\nimport { decimalNumber } from '../utils/numbers';\nimport { useMetaStore } from '../store/meta';\nimport { Network, WalletType } from '@rango-dev/wallets-shared';\nimport { useNavigateBack } from '../hooks/useNavigateBack';\n\nexport function ConfirmWalletsPage() {\n const navigate = useNavigate();\n const { navigateBackFrom } = useNavigateBack();\n const bestRoute = useBestRouteStore.use.bestRoute();\n\n const { blockchains } = useMetaStore.use.meta();\n const accounts = useWalletsStore.use.accounts();\n const selectedWallets = useWalletsStore.use.selectedWallets();\n const initSelectedWallets = useWalletsStore.use.initSelectedWallets();\n const setSelectedWallet = useWalletsStore.use.setSelectedWallet();\n\n const { getWalletInfo, connect } = useWallets();\n const confirmDisabled = !requiredWallets(bestRoute).every((chain) =>\n selectedWallets.map((wallet) => wallet.chain).includes(chain)\n );\n\n const firstStep = bestRoute?.result?.swaps[0];\n const lastStep =\n bestRoute?.result?.swaps[bestRoute?.result?.swaps.length - 1];\n\n const fromAmount = decimalNumber(firstStep?.fromAmount, 3);\n const toAmount = decimalNumber(lastStep?.toAmount, 3);\n useEffect(() => {\n initSelectedWallets();\n }, []);\n\n const selectableWallets = getSelectableWallets(\n accounts,\n selectedWallets,\n getWalletInfo\n );\n\n const handleConnectChain = (wallet: string) => {\n const network = wallet as Network;\n getKeplrCompatibleConnectedWallets(selectableWallets).forEach(\n (compatibleWallet: WalletType) => connect?.(compatibleWallet, network)\n );\n };\n\n return (\n <ConfirmWallets\n requiredWallets={getRequiredChains(bestRoute)}\n selectableWallets={selectableWallets}\n onBack={navigateBackFrom.bind(null, navigationRoutes.confirmWallets)}\n swap={bestRoute!}\n fromAmount={fromAmount}\n toAmount={toAmount}\n onConfirm={navigate.bind(null, navigationRoutes.confirmSwap)}\n onChange={(wallet) => setSelectedWallet(wallet)}\n confirmDisabled={confirmDisabled}\n handleConnectChain={(wallet) => handleConnectChain(wallet)}\n isExperimentalChain={(wallet) =>\n getKeplrCompatibleConnectedWallets(selectableWallets).length > 0\n ? isExperimentalChain(blockchains, wallet)\n : false\n }\n />\n );\n}\n","//TODO: remove mock data after queue manager integration\nexport const pendingSwap: any = {\n creationTime: '1675837879344',\n finishTime: '1675842500799',\n requestId: 'c40b81cd-fdac-4dad-bfef-1c7b2cff715f',\n inputAmount: '2',\n wallets: {\n POLYGON: {\n walletType: 'metamask',\n address: '0x2702d89c1c8658b49c45dd460deebcc45faec03c',\n },\n SOLANA: {\n walletType: 'phantom',\n address: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n },\n },\n status: 'success',\n isPaused: false,\n extraMessage: null,\n extraMessageSeverity: 'info',\n extraMessageDetail: '',\n extraMessageErrorCode: null,\n networkStatusExtraMessage: '',\n networkStatusExtraMessageDetail: '',\n lastNotificationTime: null,\n settings: {\n slippage: '13.0',\n disabledSwappersIds: [\n 'PancakeSwapBsc',\n 'ThorChain',\n 'Horizon Bridge',\n 'OneInchOptimism',\n 'OneInchGnosis',\n 'OneInchBsc',\n 'OneInchArbitrum',\n 'OpenOceanFantom',\n 'SushiHarmony',\n 'SushiArbitrum',\n 'OkcSwap',\n 'CherrySwap',\n 'Osmosis',\n 'SolanaWrapper',\n 'Jupiter',\n 'stargate',\n 'AnySwap',\n 'Satellite',\n 'Diffusion',\n 'JunoSwap',\n 'PangolinSwap',\n 'MMFinance',\n 'CronaSwap',\n 'VVSFinance',\n 'MDexHeco',\n 'ParaSwap Polygon',\n 'ParaSwap Bsc',\n 'ParaSwap Avalanche',\n 'AuroraSwap',\n 'Across',\n 'Arbitrum Bridge',\n 'TrisolarisSwap',\n 'Polygon Bridge',\n 'SpookySwap',\n 'Rainbow Bridge',\n 'Lido',\n 'Symbiosis',\n 'Avalanche Bridge',\n 'VoltageSwap',\n 'Stargate Aggregator',\n 'Across Aggregator',\n 'THORChain Aggregator',\n 'CBridge Aggregator',\n 'AnySwap Aggregator',\n 'Hyphen Aggregator',\n 'Optimism Bridge',\n 'OolongSwap',\n 'QuickSwap',\n 'StellaSwap',\n 'Hyphen',\n 'ViperSwap',\n 'cBridge v2.0',\n 'FinKujira',\n 'Hop',\n 'BeamSwap',\n 'SolarbeamSwap',\n 'Sifchain',\n 'Wormhole',\n 'EthUniSwapV2',\n 'OneInchPolygon',\n ],\n disabledSwappersGroups: [],\n },\n simulationResult: {\n outputAmount: '0.084249153',\n swaps: [\n {\n swapperId: 'QuickSwap',\n swapperLogo: 'https://api.rango.exchange/swappers/quick-swap.png',\n swapperType: 'DEX',\n from: {\n symbol: 'USDC',\n logo: 'https://api.rango.exchange/i/ns0AMf',\n blockchainLogo: 'https://api.rango.exchange/blockchains/polygon.svg',\n address: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n blockchain: 'POLYGON',\n decimals: 6,\n usdPrice: 0.999792,\n },\n to: {\n symbol: 'SOL',\n logo: 'https://api.rango.exchange/i/YhJ1nK',\n blockchainLogo: 'https://api.rango.exchange/blockchains/polygon.svg',\n address: '0xd93f7e271cb87c23aaa73edc008a79646d1f9912',\n blockchain: 'POLYGON',\n decimals: 9,\n usdPrice: 23.700913462284028,\n },\n fromAmount: '2.000000',\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n fromAmountRestrictionType: null,\n toAmount: '0.084249153',\n fee: [\n {\n asset: {\n blockchain: 'POLYGON',\n symbol: 'USDC',\n address: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n },\n expenseType: 'DECREASE_FROM_OUTPUT',\n amount: '0.006000000000000000124900090270330110797658562660217285156250000000',\n name: 'Swapper Fee',\n },\n {\n asset: {\n blockchain: 'POLYGON',\n symbol: 'MATIC',\n address: null,\n },\n expenseType: 'FROM_SOURCE_WALLET',\n amount: '0.032758180196833611',\n name: 'Network Fee',\n },\n ],\n estimatedTimeInSeconds: 60,\n swapChainType: 'INTER_CHAIN',\n routes: [\n {\n nodes: [\n {\n nodes: [\n {\n marketName: 'QuickSwap',\n marketId: 'QuickSwap',\n percent: 1,\n },\n ],\n from: 'USDC',\n fromLogo: '',\n fromAddress: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n fromBlockchain: 'POLYGON',\n\n to: 'SOL',\n toLogo: '',\n toAddress: '0xd93f7e271cb87c23aaa73edc008a79646d1f9912',\n toBlockchain: 'POLYGON',\n },\n ],\n },\n ],\n recommendedSlippage: null,\n warnings: [],\n timeStat: {\n min: 7,\n avg: 59,\n max: 736,\n },\n includesDestinationTx: false,\n internalSwaps: null,\n maxRequiredSign: 1,\n fromAsset: {\n blockchain: 'POLYGON',\n symbol: 'USDC',\n address: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n },\n toAsset: {\n blockchain: 'POLYGON',\n symbol: 'SOL',\n address: '0xd93f7e271cb87c23aaa73edc008a79646d1f9912',\n },\n },\n {\n swapperId: 'Wormhole',\n swapperLogo: 'https://api.rango.exchange/swappers/wormhole.png',\n swapperType: 'BRIDGE',\n from: {\n symbol: 'SOL',\n logo: 'https://api.rango.exchange/i/YhJ1nK',\n blockchainLogo: 'https://api.rango.exchange/blockchains/polygon.svg',\n address: '0xd93f7e271cb87c23aaa73edc008a79646d1f9912',\n blockchain: 'POLYGON',\n decimals: 9,\n usdPrice: 23.700913462284028,\n },\n to: {\n symbol: 'SOL',\n logo: 'https://api.rango.exchange/i/eLHYrb',\n blockchainLogo: 'https://api.rango.exchange/blockchains/solana.svg',\n address: null,\n blockchain: 'SOLANA',\n decimals: 9,\n usdPrice: 23.97093428787272,\n },\n fromAmount: '0.084249153',\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n fromAmountRestrictionType: null,\n toAmount: '0.084249153',\n fee: [\n {\n asset: {\n blockchain: 'POLYGON',\n symbol: 'MATIC',\n address: null,\n },\n expenseType: 'FROM_SOURCE_WALLET',\n amount: '0.042205949048288939',\n name: 'Network Fee',\n },\n {\n asset: {\n blockchain: 'SOLANA',\n symbol: 'SOL',\n address: null,\n },\n expenseType: 'FROM_DESTINATION_WALLET',\n amount: '0.000070000',\n name: 'Swapper Fee',\n },\n ],\n estimatedTimeInSeconds: 150,\n swapChainType: 'INTRA_CHAIN',\n routes: null,\n recommendedSlippage: null,\n warnings: [],\n timeStat: {\n min: 42,\n avg: 146,\n max: 5582,\n },\n includesDestinationTx: true,\n internalSwaps: null,\n maxRequiredSign: 6,\n fromAsset: {\n blockchain: 'POLYGON',\n symbol: 'SOL',\n address: '0xd93f7e271cb87c23aaa73edc008a79646d1f9912',\n },\n toAsset: {\n blockchain: 'SOLANA',\n symbol: 'SOL',\n address: null,\n },\n },\n ],\n resultType: 'OK',\n },\n validateBalanceOrFee: true,\n steps: [\n {\n id: 1,\n fromBlockchain: 'POLYGON',\n fromSymbol: 'USDC',\n fromSymbolAddress: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n fromDecimals: 6,\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n toBlockchain: 'POLYGON',\n fromLogo: 'https://api.rango.exchange/i/ns0AMf',\n fromBlockchainLogo: 'https://api.rango.exchange/blockchains/polygon.svg',\n toBlockchainLogo: 'https://api.rango.exchange/blockchains/solana.svg',\n toSymbol: 'SOL',\n toSymbolAddress: '0xd93f7e271cb87c23aaa73edc008a79646d1f9912',\n toDecimals: 9,\n toLogo: 'https://api.rango.exchange/i/YhJ1nK',\n startTransactionTime: 1675837904769,\n swapperId: 'QuickSwap',\n swapperLogo: 'https://api.rango.exchange/swappers/quick-swap.png',\n expectedOutputAmountHumanReadable: '0.084249153',\n outputAmount: '0.084206923',\n status: 'success',\n networkStatus: 'networkChanged',\n executedTransactionId: '0xb2a6b1b497b660bd58d8583d05425ea1b89fa19efc18c9b3baa501abf5f8cee9',\n externalTransactionId: null,\n explorerUrl: [\n {\n url: 'https://polygonscan.com/tx/0xb2a6b1b497b660bd58d8583d05425ea1b89fa19efc18c9b3baa501abf5f8cee9',\n description: 'swap',\n },\n ],\n trackingCode: null,\n cosmosTransaction: null,\n solanaTransaction: null,\n evmTransaction: {\n type: 'EVM',\n blockChain: 'POLYGON',\n isApprovalTx: false,\n from: '0x2702d89c1c8658b49c45dd460deebcc45faec03c',\n to: '0x38F7Aa5370439E879370E24AdD063a11Bd74610D',\n spender: null,\n data: '0xa60fdfb60000000000000000000000002791bca1f2de4661ed88a30c99a7a9449aa84174000000000000000000000000d93f7e271cb87c23aaa73edc008a79646d1f991200000000000000000000000000000000000000000000000000000000001e84800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010438ed173900000000000000000000000000000000000000000000000000000000001e848000000000000000000000000000000000000000000000000000000000045e6b7b00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000038f7aa5370439e879370e24add063a11bd74610d0000000000000000000000000000000000000000000000000000000063e348d800000000000000000000000000000000000000000000000000000000000000020000000000000000000000002791bca1f2de4661ed88a30c99a7a9449aa84174000000000000000000000000d93f7e271cb87c23aaa73edc008a79646d1f991200000000000000000000000000000000000000000000000000000000',\n value: null,\n gasLimit: '0x62f20',\n gasPrice: '247516799843',\n nonce: null,\n },\n evmApprovalTransaction: null,\n transferTransaction: null,\n diagnosisUrl: null,\n internalSteps: null,\n },\n {\n id: 2,\n fromBlockchain: 'POLYGON',\n fromSymbol: 'SOL',\n fromSymbolAddress: '0xd93f7e271cb87c23aaa73edc008a79646d1f9912',\n fromDecimals: 9,\n fromAmountPrecision: null,\n fromAmountMinValue: null,\n fromAmountMaxValue: null,\n toBlockchain: 'SOLANA',\n fromLogo: 'https://api.rango.exchange/i/YhJ1nK',\n fromBlockchainLogo: 'https://api.rango.exchange/blockchains/polygon.svg',\n toBlockchainLogo: 'https://api.rango.exchange/blockchains/solana.svg',\n toSymbol: 'SOL',\n toSymbolAddress: null,\n toDecimals: 9,\n toLogo: 'https://api.rango.exchange/i/eLHYrb',\n startTransactionTime: 1675842459076,\n swapperId: 'Wormhole',\n swapperLogo: 'https://api.rango.exchange/swappers/wormhole.png',\n expectedOutputAmountHumanReadable: '0.084249153',\n outputAmount: '0.08420692',\n status: 'failed',\n networkStatus: 'networkChanged',\n executedTransactionId:\n '5MGhqrNRwRKkHGU11S37mgF7LscXWhAvwBeAWEdxcmV9AD6bNqig6iCCzC4mKBH41JBexKb6kj4axLfcH4XZQsT9',\n externalTransactionId: null,\n explorerUrl: [\n {\n url: 'https://solscan.io/tx/2wvqHEy5hCDfpwZM5sZhBpFxXZL7p6PRqpDdCZGpGF85deGQU9oiBC9Jgoszdo8x9hjkySktGPYzubcXP8pxW3H4',\n description: 'Associate Token',\n },\n {\n url: 'https://polygonscan.com/tx/0xcdd0c684fc203d41a0eaacfba2201ab0a48845bb6d0f0805fb4a70a0f971a599',\n description: 'Transfer',\n },\n {\n url: 'https://solscan.io/tx/5rc5EHfMrChB749RsJew1ze35yQMddafkQqy5JFqcdKPJ6j2NiggGT7UDmFDAXzP2AwHGyFj2XjaYr7RQjjc1KmH',\n description: 'Verify vaa 1',\n },\n {\n url: 'https://solscan.io/tx/5xNgHvdzu63fmF7uojrHuqcHC3NgErpdGiSg38X7KZ7EEjTyPWt8W1QUtuyUFcNcSjGkFGrGzfnkRUbe4Hj6oY2v',\n description: 'Verify vaa 2',\n },\n {\n url: 'https://solscan.io/tx/3FnXLYwwpc93o2TyjKNDfiBcRDZ9W1qJVdmCjTRw3kz4Jrwjr5zQzLSbsbbBzqFNMSxBFcUDaiQ7pP4DL5coUGq',\n description: 'Post vaa',\n },\n {\n url: 'https://solscan.io/tx/5MGhqrNRwRKkHGU11S37mgF7LscXWhAvwBeAWEdxcmV9AD6bNqig6iCCzC4mKBH41JBexKb6kj4axLfcH4XZQsT9',\n description: 'Redeem',\n },\n ],\n trackingCode: null,\n cosmosTransaction: null,\n solanaTransaction: {\n type: 'SOLANA',\n blockChain: 'SOLANA',\n from: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n identifier: 'redeem',\n instructions: [\n {\n keys: [\n {\n pubkey: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: 'DapiQYH3BGonhN8cngWcXQ6SrqSm3cwysoznoHr6Sbsx',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: 'Wf8aqunuZ9y1tprCihMateij299Pa57XL15a6EQz9qt',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: 'FTWSFuqyc6B5BbarBzuHdBofA2ks12eyRNmUfKmDiUN1',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: 'J6fNPeeJc1E2zDRUtvD9aaC9kBsEq7JaFr1oa97DAJhj',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: '8nUPRxuXUJPbWiCbqCPrVLkmXqR8LdifLrRW3VjCQDhZ',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: '8nUPRxuXUJPbWiCbqCPrVLkmXqR8LdifLrRW3VjCQDhZ',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: '2nQNF8F9LLWMqdjymiLK2u8HoHMvYa4orCXsp3w65fQ2',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: 'So11111111111111111111111111111111111111112',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: 'GugU1tP7doLeTw9hQP51xRJyS8Da1fWxuiy2rVrnMD2m',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: 'SysvarRent111111111111111111111111111111111',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: '11111111111111111111111111111111',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: 'worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n isSigner: false,\n isWritable: false,\n },\n ],\n programId: 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb',\n data: [2],\n },\n {\n keys: [\n {\n pubkey: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: '72pK2FqwMYPr9ajAhzLNQq8e5S2Rf33MGpVXxdXwCT6V',\n isSigner: true,\n isWritable: true,\n },\n ],\n programId: '11111111111111111111111111111111',\n data: [\n 0, 0, 0, 0, -16, 29, 31, 0, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 6, -35, -10, -31,\n -41, 101, -95, -109, -39, -53, -31, 70, -50, -21, 121, -84, 28, -76, -123, -19, 95,\n 91, 55, -111, 58, -116, -11, -123, 126, -1, 0, -87,\n ],\n },\n {\n keys: [\n {\n pubkey: '72pK2FqwMYPr9ajAhzLNQq8e5S2Rf33MGpVXxdXwCT6V',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: 'So11111111111111111111111111111111111111112',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: 'SysvarRent111111111111111111111111111111111',\n isSigner: false,\n isWritable: false,\n },\n ],\n programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n data: [1],\n },\n {\n keys: [\n {\n pubkey: '8nUPRxuXUJPbWiCbqCPrVLkmXqR8LdifLrRW3VjCQDhZ',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: '72pK2FqwMYPr9ajAhzLNQq8e5S2Rf33MGpVXxdXwCT6V',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n isSigner: true,\n isWritable: false,\n },\n ],\n programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n data: [3, 72, -27, 4, 5, 0, 0, 0, 0],\n },\n {\n keys: [\n {\n pubkey: '72pK2FqwMYPr9ajAhzLNQq8e5S2Rf33MGpVXxdXwCT6V',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: '9QoVnPEHj5HNL4cVicXUF8CVmyhBxTDqUUigVn3UPWwk',\n isSigner: true,\n isWritable: false,\n },\n ],\n programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n data: [9],\n },\n ],\n recentBlockhash: '2wBCvR3jVNj6wzL8vHSuqTRtxBYiwhtoY6Gkp6WaBxSG',\n signatures: [\n {\n publicKey: '72pK2FqwMYPr9ajAhzLNQq8e5S2Rf33MGpVXxdXwCT6V',\n signature: [\n -116, 17, -5, 86, -122, 120, -7, -53, -29, -15, -70, -100, 16, 48, 113, -42, 8, 126,\n 75, -13, 63, -31, -17, 1, 74, 85, 77, 90, 98, -15, 104, 63, 4, -74, 45, -3, -3, -117,\n -24, -56, 20, -89, -40, 33, 125, -120, -44, -75, 17, 69, 20, -48, 106, 48, 16, -19,\n 83, 123, -77, 93, -20, -27, -77, 7,\n ],\n },\n ],\n serializedMessage: null,\n },\n evmTransaction: null,\n evmApprovalTransaction: null,\n transferTransaction: null,\n diagnosisUrl: null,\n internalSteps: [\n {\n name: 'associate token address',\n state: 'SUCCESSED',\n current: false,\n },\n {\n name: 'transfer',\n state: 'SUCCESSED',\n current: false,\n },\n {\n name: 'signed vaa',\n state: 'SUCCESSED',\n current: false,\n },\n {\n name: 'verify vaa#1',\n state: 'SUCCESSED',\n current: false,\n },\n {\n name: 'verify vaa#2',\n state: 'SUCCESSED',\n current: false,\n },\n {\n name: 'post vaa',\n state: 'SUCCESSED',\n current: false,\n },\n {\n name: 'redeem',\n state: 'SUCCESSED',\n current: true,\n },\n ],\n },\n ],\n};\n","import { SwapHistory } from '@rango-dev/ui';\nimport React from 'react';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { useNavigateBack } from '../hooks/useNavigateBack';\nimport { pendingSwap } from '../mockData/pendingSwap';\n\nexport function SwapDetailsPage() {\n const { navigateBackFrom } = useNavigateBack();\n return (\n <SwapHistory\n onBack={navigateBackFrom.bind(null, navigationRoutes.swapDetails)}\n pendingSwap={pendingSwap}\n />\n );\n}\n","import React from 'react';\nimport { useRoutes } from 'react-router-dom';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { ConfirmSwapPage } from '../pages/ConfirmSwapPage';\nimport { HistoryPage } from '../pages/HistoryPage';\nimport { Home } from '../pages/Home';\nimport { LiquiditySourcePage } from '../pages/LiquiditySourcesPage';\nimport { SelectChainPage } from '../pages/SelectChainPage';\nimport { SelectTokenPage } from '../pages/SelectTokenPage';\nimport { SettingsPage } from '../pages/SettingsPage';\nimport { WalletsPage } from '../pages/WalletsPage';\nimport { ConfirmWalletsPage } from '../pages/ConfirmWalletsPage';\nimport { SwapDetailsPage } from '../pages/SwapDetailsPage';\n\nexport const AppRoutes = () =>\n useRoutes([\n { path: navigationRoutes.home, element: <Home /> },\n {\n path: navigationRoutes.fromChain,\n element: <SelectChainPage type=\"from\" />,\n },\n { path: navigationRoutes.toChain, element: <SelectChainPage type=\"to\" /> },\n {\n path: navigationRoutes.fromToken + '/*',\n element: <SelectTokenPage type=\"from\" />,\n },\n { path: navigationRoutes.toToken, element: <SelectTokenPage type=\"to\" /> },\n { path: navigationRoutes.settings, element: <SettingsPage /> },\n {\n path: navigationRoutes.liquiditySources,\n element: <LiquiditySourcePage />,\n },\n { path: navigationRoutes.history, element: <HistoryPage /> },\n { path: navigationRoutes.wallets, element: <WalletsPage /> },\n { path: navigationRoutes.confirmSwap, element: <ConfirmSwapPage /> },\n { path: navigationRoutes.confirmWallets, element: <ConfirmWalletsPage /> },\n { path: navigationRoutes.swapDetails, element: <SwapDetailsPage /> },\n ]);\n","import { Button, AddWalletIcon, Typography, styled } from '@rango-dev/ui';\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useWallets } from '@rango-dev/wallets-core';\nimport { navigationRoutes } from '../constants/navigationRoutes';\nimport { useUiStore } from '../store/ui';\nimport { AppRoutes } from './AppRoutes';\nimport { useWalletsStore } from '../store/wallets';\nimport {\n calculateWalletUsdValue,\n getSelectableWallets,\n} from '../utils/wallets';\nimport { removeDuplicateFrom } from '../utils/common';\n\nconst Header = styled('div', {\n display: 'flex',\n width: '100%',\n justifyContent: 'end',\n});\n\nconst WalletImage = styled('img', {\n width: '$24',\n height: '$24',\n marginLeft: -15,\n marginRight: '$6',\n borderRadius: '99999px',\n});\n\nexport function Layout() {\n const navigate = useNavigate();\n const { balances, accounts, selectedWallets } = useWalletsStore();\n const { getWalletInfo } = useWallets();\n const connectedWalletsImages = removeDuplicateFrom(\n getSelectableWallets(accounts, selectedWallets, getWalletInfo).map(\n (w) => w.image\n )\n );\n\n const totalBalance = calculateWalletUsdValue(balances);\n const connectWalletsButtonDisabled =\n useUiStore.use.connectWalletsButtonDisabled();\n\n return (\n <>\n <Header>\n <Button\n size=\"small\"\n suffix={<AddWalletIcon size={20} />}\n variant=\"ghost\"\n flexContent\n onClick={() => {\n if (!connectWalletsButtonDisabled)\n navigate(navigationRoutes.wallets);\n }}\n >\n {connectedWalletsImages?.length ? (\n connectedWalletsImages.map((walletImage, index) => (\n <WalletImage key={index} src={walletImage} />\n ))\n ) : (\n <></>\n )}\n <Typography variant=\"body2\">\n {!accounts?.length ? 'Connect Wallet' : `$${totalBalance || 0}`}\n </Typography>\n </Button>\n </Header>\n <AppRoutes />\n </>\n );\n}\n","import { globalCss } from '@rango-dev/ui';\n\nexport const globalStyles = globalCss({\n '*': {\n '&::-webkit-scrollbar': { width: '$8' },\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: '$neutrals400',\n },\n '&::-webkit-scrollbar-thumb:hover': {\n backgroundColor: '$neutrals500',\n },\n '&::-webkit-scrollbar-track': {\n backgroundColor: '$neutrals300',\n },\n },\n});\n","import { lightTheme, darkTheme } from '@rango-dev/ui';\nimport { useState, useEffect } from 'react';\nimport { useMetaStore } from '../store/meta';\nimport { useSettingsStore } from '../store/settings';\n\nexport function useTheme() {\n const theme = useSettingsStore.use.theme();\n const fetchMeta = useMetaStore.use.fetchMeta();\n\n const [OSTheme, setOSTheme] = useState(lightTheme);\n useEffect(() => {\n (async () => {\n await fetchMeta();\n })();\n\n const switchTheme = (event: MediaQueryListEvent) => {\n if (event.matches) setOSTheme(darkTheme);\n else setOSTheme(lightTheme);\n };\n\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n setOSTheme(darkTheme);\n }\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', switchTheme);\n return () => {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', switchTheme);\n };\n }, []);\n\n const getActiveTheme = () => {\n if (theme === 'auto') return OSTheme;\n else return theme === 'dark' ? darkTheme : lightTheme;\n };\n\n return { activeTheme: getActiveTheme() };\n}\n","import { SwapContainer } from '@rango-dev/ui';\nimport React from 'react';\nimport { AppRouter } from './components/AppRouter';\nimport { useMetaStore } from './store/meta';\nimport { Events, Provider } from '@rango-dev/wallets-core';\nimport { allProviders } from '@rango-dev/provider-all';\nimport { EventHandler } from '@rango-dev/wallets-core/dist/wallet';\nimport { isEvmBlockchain, Network } from '@rango-dev/wallets-shared';\nimport {\n prepareAccountsForWalletStore,\n walletAndSupportedChainsNames,\n} from './utils/wallets';\nimport { useWalletsStore } from './store/wallets';\nimport { Layout } from './components/Layout';\nimport { globalStyles } from './globalStyles';\nimport { useTheme } from './hooks/useTheme';\n\nconst providers = allProviders();\n\nexport const SwapBox: React.FC = () => {\n globalStyles();\n const { activeTheme } = useTheme();\n const { blockchains } = useMetaStore.use.meta();\n const disconnectWallet = useWalletsStore.use.disconnectWallet();\n const connectWallet = useWalletsStore.use.connectWallet();\n const evmBasedChainNames = blockchains\n .filter(isEvmBlockchain)\n .map((chain) => chain.name);\n\n const onUpdateState: EventHandler = (type, event, value, supportedChains) => {\n if (event === Events.ACCOUNTS) {\n if (value) {\n const supportedChainNames: Network[] | null =\n //@ts-ignore\n walletAndSupportedChainsNames(supportedChains);\n const data = prepareAccountsForWalletStore(\n type,\n value,\n evmBasedChainNames,\n supportedChainNames\n );\n connectWallet(data);\n } else {\n disconnectWallet(type);\n }\n }\n };\n\n return (\n <Provider\n allBlockChains={blockchains}\n providers={providers}\n onUpdateState={onUpdateState}\n >\n <div id=\"pageContainer\" className={activeTheme}>\n <SwapContainer>\n <AppRouter>\n <Layout />\n </AppRouter>\n </SwapContainer>\n </div>\n </Provider>\n );\n};\n"],"names":["navigationRoutes","home","fromChain","fromToken","toChain","toToken","settings","liquiditySources","history","wallets","confirmSwap","confirmWallets","swapDetails","ZERO","BigNumber","removeDuplicateFrom","array","Array","from","Set","areEqual","array1","array2","length","every","v","i","getBestRouteToTokenUsdPrice","bestRoute","result","swaps","to","usdPrice","isNumberOfSwapsChanged","route1","route2","route1Swaps","route2Swaps","isRouteSwappersUpdated","route1Swappers","map","swap","swapperId","route2Swappers","isRouteInternalCoinsUpdated","route1InternalCoins","symbol","route2InternalCoins","isRouteChanged","getRequiredBalanceOfWallet","selectedWallet","fee","relatedFeeStatus","find","item","blockchain","chain","wallet","address","toLowerCase","requiredAssets","createSelectors","_store","store","use","k","Object","keys","getState","s","httpService","RangoClient","process","env","REACT_API_KEY","SLIPPAGES","DEFAULT_SLIPPAGE","HIGH_SLIPPAGE","MAX_SLIPPAGE","MIN_SLIPPGAE","useMetaStore","create","set","meta","blockchains","popularTokens","swappers","tokens","loadingStatus","fetchMeta","response","getAllMetadata","chainThatHasTokenInMetaResponse","t","enabledChains","filter","enabled","includes","name","sort","a","b","error","useSettingsStore","persist","subscribeWithSelector","slippage","customSlippage","infiniteApprove","disabledLiquiditySources","theme","setSlippage","setCustomSlippage","toggleAllLiquiditySources","state","swappersGroup","swapper","swapperGroup","toggleInfiniteApprove","toggleLiquiditySource","liquiditySource","concat","setTheme","secondsToString","seconds","toString","padStart","minutes","parseInt","numberToString","number","minDecimals","maxDecimals","n","roundingMode","maxI","toFixed","eq","gte","toFormat","Math","min","max","pow","isEqualTo","totalArrivalTime","data","reduce","estimatedTimeInSeconds","decimalNumber","parseFloat","getStateWallet","connected","WalletStatus","CONNECTED","connecting","CONNECTING","installed","NOT_INSTALLED","DISCONNECTED","getlistWallet","getWalletInfo","list","excludedWallets","WalletType","UNKNOWN","TERRA_STATION","LEAP","type","img","image","installLink","walletAndSupportedChainsNames","supportedChains","blockchainMeta","prepareAccountsForWalletStore","accounts","evmBasedChains","supportedChainNames","addAccount","network","newAccount","walletType","push","forEach","account","readAccountAddress","hasLimitation","isSupported","isUnknown","Network","Unknown","notSupportedNetworkByWallet","isUknownAndEvmBased","isEvmAddress","isEvmBasedChain","evmChainsSupportedByWallet","getRequiredChains","route","currentStepFromBlockchain","currentStepToBlockchain","lastAddedWallet","getSelectableWallets","selectedWallets","connectedWallets","selected","getBalanceFromWallet","balances","selectedChainBalances","balance","bl","amount","isAccountAndBalanceMatched","makeBalanceFor","retrivedBalance","blockChain","explorerUrl","loading","tokenBalance","asset","ticker","rawAmount","decimal","decimals","shiftedBy","logo","getUsdPrice","resetBalanceState","calculateWalletUsdValue","uniqueAccountAddresses","uniqueBalane","acc","current","findIndex","modifiedWalletBlockchains","modifiedWalletBlockchain","has","add","accountAddress","total","flatMap","multipliedBy","plus","numberWithThousandSeperator","parts","split","replace","join","sortedTokens","position","walletSymbols","gt","sortedList","size","tokenA","tokenB","compareBalance","isSecondaryCoin","tokenAUsdValue","tokenBUsdValue","allTokens","token","toUpperCase","isExperimentalChain","cosmosExperimentalChainInfo","getCosmosExperimentalChainInfo","entries","isCosmosBlockchain","getKeplrCompatibleConnectedWallets","selectableWallets","connectedWalletTypes","KEPLR_COMPATIBLE_WALLETS","compatibleWallet","getOutputRatio","inputUsdValue","outputUsdValue","lte","div","minus","outputRatioHasWarning","outputRatio","hasLimitError","minimum","fromAmountMinValue","maximum","fromAmountMaxValue","isExclusive","fromAmountRestrictionType","fromAmount","lt","LimitErrorMessage","fromAmountRangeError","recommendation","getSwapButtonState","loadingMetaStatus","highValueLoss","priceImpactCanNotBeComputed","needsToWarnEthOnPath","title","disabled","hasWarning","canComputePriceImpact","inputAmount","calculatePendingSwap","validateBalanceOrFee","simulationResult","Error","creationTime","Date","getTime","finishTime","requestId","status","isPaused","extraMessage","extraMessageSeverity","extraMessageDetail","extraMessageErrorCode","networkStatusExtraMessage","networkStatusExtraMessageDetail","lastNotificationTime","steps","index","id","swapperType","types","fromBlockchain","toBlockchain","fromSymbol","fromSymbolAddress","fromDecimals","fromAmountPrecision","fromLogo","toSymbol","toSymbolAddress","toDecimals","toLogo","startTransactionTime","feeInUsd","getUsdFeeOfStep","expectedOutputAmountHumanReadable","toAmount","outputAmount","networkStatus","executedTransactionId","externalTransactionId","trackingCode","cosmosTransaction","solanaTransaction","starknetTransaction","starknetApprovalTransaction","tronTransaction","tronApprovalTransaction","evmTransaction","evmApprovalTransaction","transferTransaction","diagnosisUrl","internalSteps","fromBlockchainLogo","toBlockchainLogo","swapperLogo","requiredWallets","step","totalFeeInUsd","expenseType","unitPrice","getTotalFeeInUsd","totalFee","hasHighFee","getMinRequiredSlippage","slippages","recommendedSlippage","hasProperSlippage","userSlippage","minRequiredSlippage","createBestRouteRequestBody","checkPrerequisites","selectedWalletsMap","chainAndAccounts","connectedWallet","addresses","requestBody","swapperGroups","swappersGroupsExclude","getWalletsForNewSwap","getRouteOutputAmount","getPercentageChange","oldValue","newValue","isOutputAmountChangedALot","oldRoute","newRoute","oldOutputAmount","newOutputAmount","percentageChange","toNumber","getBalanceWarnings","validationStatus","walletsSortedByRequiredWallets","selectedWallet1","selectedWallet2","indexOf","ok","currentAmount","requiredAmount","reason","warningMessage","getUsdValue","useBestRouteStore","setBestRoute","setFromChain","setFromToken","setToChain","setToToken","setInputAmount","bestRouteStore","settingsStore","abortController","fetchBestRoute","abort","AbortController","setState","getBestRoute","signal","then","res","catch","code","message","subscribe","bind","equalityFn","prevState","SearchParams","searchParamsToToken","searchParams","symbolAndAddress","UpdateUrl","firstRender","useRef","setSearchParams","useSearchParams","location","useLocation","firstRenderSearchParams","search","searchParamsRef","useEffect","params","createSearchParams","value","key","fromChainString","fromTokenString","toChainString","toTokenString","pathname","FROM_CHAIN","FROM_TOKEN","TO_CHAIN","TO_TOKEN","FROM_AMOUNT","fronChainString","get","ButtonsContainer","styled","display","HeaderButtons","props","onClickRefresh","navigate","useNavigate","React","Tooltip","content","Button","variant","onClick","RetryIcon","HistoryIcon","SettingsIcon","HeaderContainer","justifyContent","alignItems","width","padding","Header","Typography","useWalletsStore","connectWallet","getWalletsDetails","disconnectWallet","initSelectedWallets","requiredChains","anyWalletSelected","firstWalletWithMatchedChain","setSelectedWallet","Box","flexDirection","Container","boxSizing","backgroundColor","borderRadius","StyledImage","maxHeight","Options","ImagePlaceholder","height","OutputContainer","flexGrow","border","paddingLeft","paddingRight","TokenInfo","tokenBalanceReal","ItemSuffix","style","InfoCircleIcon","color","AngleDownIcon","className","prefix","src","suffix","align","marginRight","displayName","TextField","autoFocus","placeholder","right","bottom","onChange","event","onAmountChange","target","undefined","paddingTop","Logo","fill","margin","StyledAnchor","textDecoration","BottomLogo","href","xmlns","viewBox","d","SwithFromAndTo","count","Footer","errorMessages","genericServerError","SwitchButtonContainer","top","BestRouteContainer","Alerts","Home","waningMessage","isRouterInContext","useInRouterContext","setCount","useState","fetchingBestRoute","bestRouteError","swithFromAndTo","prev","errorMessage","showBestRoute","outToInRatio","swapButtonState","highFee","VerticalSwapIcon","BestRoute","feeWarning","totalTime","Alert","Route","ref","children","AppRouter","Router","MemoryRouter","useUiStore","connectWalletsButtonDisabled","toggleConnectWalletsButton","StyledButton","marginTop","ChangeSlippageButton","HighSlippageWarning","selectedSlippage","ConfirmSwapExtraMessages","highSlippage","useNavigateBack","navigateBackFrom","currentRoute","window","idx","useConfirmSwapStore","errors","warnings","proceedAnyway","ConfirmSwapErrorTypes","ConfirmSwapWarningTypes","initialRoute","swapSettings","disabledSwappersGroups","newSwap","console","log","unsubscribeFromBestRouteStore","shallow","unsubscribeFromWalletsStore","selectedWalletsChanged","prevWallet","confiremedRoute","requestAmount","NO_ROUTE","routeChanged","newRouteOutputUsdValue","ROUTE_UPDATED","ROUTE_SWAPPERS_UPDATED","ROUTE_COINS_UPDATED","ROUTE_UPDATED_WITH_HIGH_VALUE_LOSS","ROUTE_AND_OUTPUT_AMOUNT_UPDATED","balanceWarnings","enoughBalance","INSUFFICIENT_BALANCE","messages","INSUFFICIENT_SLIPPAGE","noErrors","noWarnings","REQUEST_FAILED","MinRequiredSlippage","ConfirmSwapErrors","BalanceWarnings","warning","ConfirmSwapWarnings","ConfirmSwapPage","ConfirmSwap","onConfirm","onBack","extraMessages","confirmButtonTitle","confirmButtonDisabled","pendingSwap","OSMOSIS","disabledSwappersIds","blockchainLogo","swapChainType","routes","nodes","marketName","marketId","percent","fromAddress","toAddress","timeStat","avg","includesDestinationTx","url","description","TransactionType","COSMOS","fromWalletAddress","chainId","account_number","sequence","msgs","__type","sender","pool_id","token_out_denom","token_in","denom","token_out_min_amount","protoMsgs","type_url","memo","source","gas","signType","rpcUrl","rawTransfer","HistoryPage","History","onSwapClick","LiquiditySourcePage","uniqueSwappersGroups","LiquiditySourcesSelector","toggleAll","SelectChainPage","BlockchainSelector","SelectTokenPage","tokenWithSelectedChain","TokensWithBalance","tokenAmount","tokenUsdValue","usdValue","sortedTokenList","TokenSelector","SettingsPage","Settings","onSlippageChange","selectedLiquiditySources","onLiquiditySourcesClick","NaN","onCustomSlippageChange","minSlippage","maxSlippage","selectedTheme","onThemeChange","ListContainer","gap","gridTemplateColumns","alignContent","AlertContainer","paddingBottom","WalletsPage","disconnect","connect","useWallets","values","walletErrorMessage","setWalletErrorMessage","onSelectWallet","e","SecondaryPage","textField","info","Wallet","ConfirmWalletsPage","confirmDisabled","firstStep","lastStep","handleConnectChain","ConfirmWallets","POLYGON","SOLANA","internalSwaps","maxRequiredSign","fromAsset","toAsset","resultType","isApprovalTx","spender","gasLimit","gasPrice","nonce","identifier","instructions","pubkey","isSigner","isWritable","programId","recentBlockhash","signatures","publicKey","signature","serializedMessage","SwapDetailsPage","SwapHistory","AppRoutes","useRoutes","path","element","WalletImage","marginLeft","Layout","connectedWalletsImages","w","totalBalance","AddWalletIcon","flexContent","walletImage","globalStyles","globalCss","useTheme","OSTheme","setOSTheme","lightTheme","switchTheme","matches","darkTheme","matchMedia","addEventListener","removeEventListener","getActiveTheme","activeTheme","providers","allProviders","SwapBox","evmBasedChainNames","isEvmBlockchain","onUpdateState","Events","ACCOUNTS","Provider","allBlockChains","SwapContainer"],"mappings":"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AE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAC7D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1D,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC5D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAC7D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;SAE5D,CACF;QACDoO,IAAI,EAAE,EAAE;QACRC,MAAM,EAAE,IAAI;QACZpnB,GAAG,EAAE;UACHqnB,GAAG,EAAE,QAAQ;UACbrd,MAAM,EAAE,CACN;YACE+c,KAAK,EAAE,OAAO;YACd/c,MAAM,EAAE;WACT;SAEJ;QACDsd,QAAQ,EAAE,OAAO;QACjBC,MAAM,EAAE;OACT;MACDC,WAAW,EAAE;KACd;IACD/U,iBAAiB,EAAE,IAAI;IACvBK,cAAc,EAAE,IAAI;IACpBC,sBAAsB,EAAE,IAAI;IAC5BC,mBAAmB,EAAE,IAAI;IACzBC,YAAY,EAAE,IAAI;IAClBC,aAAa,EAAE;GAChB;CAEJ,EACD;EACElD,YAAY,EAAE,eAAe;EAC7BG,UAAU,EAAE,eAAe;EAC3BC,SAAS,EAAE,sCAAsC;EACjDT,WAAW,EAAE,GAAG;EAChBrS,OAAO,EAAE;IACP6nB,OAAO,EAAE;MACPhd,UAAU,EAAE,OAAO;MACnB5H,OAAO,EAAE;;GAEZ;EACD8P,MAAM,EAAE,QAAQ;EAChBC,QAAQ,EAAE,KAAK;EACfC,YAAY,EAAE,IAAI;EAClBC,oBAAoB,EAAE,MAAM;EAC5BC,kBAAkB,EAAE,EAAE;EACtBC,qBAAqB,EAAE,IAAI;EAC3BC,yBAAyB,EAAE,IAAI;EAC/BC,+BAA+B,EAAE,IAAI;EACrCC,oBAAoB,EAAE,IAAI;EAC1B1T,QAAQ,EAAE;IACRoG,QAAQ,EAAE,KAAK;IACf6hB,mBAAmB,EAAE,EAAE;IACvBzC,sBAAsB,EAAE;GACzB;EACD7S,gBAAgB,EAAE;IAChBqC,YAAY,EAAE,UAAU;IACxBxT,KAAK,EAAE,CACL;MACEY,SAAS,EAAE,SAAS;MACpB8T,WAAW,EAAE,EAAE;;MAEf3U,MAAM,EAAE,IAAI;MACZuS,WAAW,EAAE,KAAK;MAClBlT,IAAI,EAAE;QACJ4B,MAAM,EAAE,MAAM;QACdmL,IAAI,EAAE,mDAAmD;QACzDvK,OAAO,EACL,sEAAsE;QACxEH,UAAU,EAAE,SAAS;QACrBilB,cAAc,EAAE,EAAE;QAClBza,QAAQ,EAAE,CAAC;QACX/L,QAAQ,EAAE;OACX;MACDD,EAAE,EAAE;QACFe,MAAM,EAAE,MAAM;QACdmL,IAAI,EAAE,qCAAqC;QAC3CvK,OAAO,EAAE,IAAI;QACbH,UAAU,EAAE,SAAS;QACrBwK,QAAQ,EAAE,CAAC;QACXya,cAAc,EAAE,EAAE;QAClBxmB,QAAQ,EAAE;OACX;MACDgQ,UAAU,EAAE,UAAU;MACtB2C,mBAAmB,EAAE,IAAI;MACzBhD,kBAAkB,EAAE,IAAI;MACxBE,kBAAkB,EAAE,IAAI;MACxBwD,QAAQ,EAAE,UAAU;MACpBlS,GAAG,EAAE,CACH;QACE+C,IAAI,EAAE,EAAE;QACRyH,KAAK,EAAE;UACLpK,UAAU,EAAE,SAAS;UACrBT,MAAM,EAAE,MAAM;UACdY,OAAO,EAAE;SACV;QACDkT,WAAW,EAAE,oBAAoB;QACjCzJ,MAAM,EAAE;OACT,CACF;MACD/D,sBAAsB,EAAE,EAAE;MAC1Bqf,aAAa,EAAE,aAAa;MAC5BC,MAAM,EAAE,CACN;QACEC,KAAK,EAAE,CACL;UACEA,KAAK,EAAE,CACL;YACEC,UAAU,EAAE,UAAU;YACtBC,QAAQ,EAAE,IAAI;YACdC,OAAO,EAAE;WACV,CACF;UACD5nB,IAAI,EAAE,MAAM;UACZ0T,QAAQ,EAAE,mDAAmD;UAC7DmU,WAAW,EACT,sEAAsE;UACxEzU,cAAc,EAAE,SAAS;UACzBvS,EAAE,EAAE,MAAM;UACViT,MAAM,EAAE,mDAAmD;UAC3DgU,SAAS,EACP,sEAAsE;UACxEzU,YAAY,EAAE;SACf,EACD;UACEoU,KAAK,EAAE,CACL;YACEC,UAAU,EAAE,QAAQ;YACpBC,QAAQ,EAAE,IAAI;YACdC,OAAO,EAAE;WACV,CACF;UACD5nB,IAAI,EAAE,MAAM;UACZ0T,QAAQ,EAAE,mDAAmD;UAC7DmU,WAAW,EACT,sEAAsE;UACxEzU,cAAc,EAAE,SAAS;UACzBvS,EAAE,EAAE,MAAM;UACViT,MAAM,EAAE,mDAAmD;UAC3DgU,SAAS,EACP,sEAAsE;UACxEzU,YAAY,EAAE;SACf,EACD;UACEoU,KAAK,EAAE,CACL;YACEC,UAAU,EAAE,QAAQ;YACpBC,QAAQ,EAAE,IAAI;YACdC,OAAO,EAAE;WACV,CACF;UACD5nB,IAAI,EAAE,MAAM;UACZ0T,QAAQ,EAAE,mDAAmD;UAC7DmU,WAAW,EACT,sEAAsE;UACxEzU,cAAc,EAAE,SAAS;UACzBvS,EAAE,EAAE,MAAM;UACViT,MAAM,EAAE,mDAAmD;UAC3DgU,SAAS,EAAE,IAAI;UACfzU,YAAY,EAAE;SACf;OAEJ,CACF;MACD4C,mBAAmB,EAAE,IAAI;MACzB8R,QAAQ,EAAE;QACRpgB,GAAG,EAAE,CAAC;QACNqgB,GAAG,EAAE,EAAE;QACPpgB,GAAG,EAAE;OACN;MACDqgB,qBAAqB,EAAE;KACxB;GAEJ;EACDnW,oBAAoB,EAAE,IAAI;EAC1BiB,KAAK,EAAE,CACL;IACEE,EAAE,EAAE,CAAC;IACLG,cAAc,EAAE,SAAS;IACzBE,UAAU,EAAE,MAAM;IAClBC,iBAAiB,EACf,sEAAsE;IACxEC,YAAY,EAAE,CAAC;IACfC,mBAAmB,EAAE,IAAI;IACzBhD,kBAAkB,EAAE,IAAI;IACxBE,kBAAkB,EAAE,IAAI;IACxB0E,gBAAgB,EAAE,iDAAiD;IACnED,kBAAkB,EAAE,iDAAiD;IACrE/B,YAAY,EAAE,SAAS;IACvBiC,WAAW,EAAE,EAAE;IACfpC,WAAW,EAAE,EAAE;IACfQ,QAAQ,EAAE,mDAAmD;IAC7DC,QAAQ,EAAE,MAAM;IAChBC,eAAe,EAAE,IAAI;IACrBC,UAAU,EAAE,CAAC;IACbC,MAAM,EAAE,qCAAqC;IAC7CC,oBAAoB,EAAE,aAAa;IACnCvS,SAAS,EAAE,SAAS;IACpB0S,iCAAiC,EAAE,UAAU;IAC7CE,YAAY,EAAE,UAAU;IACxB9B,MAAM,EAAE,QAAQ;IAChB+B,aAAa,EAAE,IAAI;IACnBC,qBAAqB,EACnB,kEAAkE;IACpEhI,WAAW,EAAE,CACX;MACE4b,GAAG,EAAE,sGAAsG;MAC3GC,WAAW,EAAE;KACd,CACF;IACD1T,iBAAiB,EAAE;MACjBnL,IAAI,EAAE8e,wBAAe,CAACC,MAAM;MAC5BC,iBAAiB,EAAE,6CAA6C;MAChEjc,UAAU,EAAE,SAAS;MACrBrE,IAAI,EAAE;QACJugB,OAAO,EAAE,WAAW;QACpBC,cAAc,EAAE,MAAM;QACtBC,QAAQ,EAAE,KAAK;QACfC,IAAI,EAAE,CACJ;UACEC,MAAM,EAAE,oBAAoB;UAC5Brf,IAAI,EAAE,mCAAmC;UACzC0R,KAAK,EAAE;YACL4N,MAAM,EAAE,6CAA6C;YACrDpB,MAAM,EAAE,CACN;cACEqB,OAAO,EAAE,KAAK;cACdC,eAAe,EACb;aACH,EACD;cACED,OAAO,EAAE,GAAG;cACZC,eAAe,EACb;aACH,EACD;cACED,OAAO,EAAE,GAAG;cACZC,eAAe,EAAE;aAClB,CACF;YACDC,QAAQ,EAAE;cACRC,KAAK,EACH,sEAAsE;cACxE/c,MAAM,EAAE;aACT;YACDgd,oBAAoB,EAAE;;SAEzB,CACF;QACDC,SAAS,EAAE,CACT;UACEC,QAAQ,EAAE,4CAA4C;UACtDnO,KAAK,EAAE,CACL,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAC1D,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAC3D,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAC3D,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAC7D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG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EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAC7D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1D,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAA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"}