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

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 (55) hide show
  1. package/dist/App.d.ts +1 -0
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/components/BottomLogo.d.ts +1 -0
  4. package/dist/components/BottomLogo.d.ts.map +1 -1
  5. package/dist/components/ChangeSlippageButton.d.ts +1 -0
  6. package/dist/components/ChangeSlippageButton.d.ts.map +1 -1
  7. package/dist/components/Header.d.ts +1 -0
  8. package/dist/components/Header.d.ts.map +1 -1
  9. package/dist/components/HeaderButtons.d.ts +1 -0
  10. package/dist/components/HeaderButtons.d.ts.map +1 -1
  11. package/dist/components/Layout.d.ts +1 -0
  12. package/dist/components/Layout.d.ts.map +1 -1
  13. package/dist/components/TokenInfo.d.ts +1 -0
  14. package/dist/components/TokenInfo.d.ts.map +1 -1
  15. package/dist/components/warnings/BalanceWarnings.d.ts +1 -0
  16. package/dist/components/warnings/BalanceWarnings.d.ts.map +1 -1
  17. package/dist/components/warnings/ConfirmSwapExtraMessages.d.ts +1 -0
  18. package/dist/components/warnings/ConfirmSwapExtraMessages.d.ts.map +1 -1
  19. package/dist/components/warnings/HighSlippageWarning.d.ts +1 -0
  20. package/dist/components/warnings/HighSlippageWarning.d.ts.map +1 -1
  21. package/dist/components/warnings/MinRequiredSlippage.d.ts +1 -0
  22. package/dist/components/warnings/MinRequiredSlippage.d.ts.map +1 -1
  23. package/dist/lib.d.ts.map +1 -1
  24. package/dist/pages/ConfirmSwapPage.d.ts +1 -0
  25. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  26. package/dist/pages/ConfirmWalletsPage.d.ts +1 -0
  27. package/dist/pages/ConfirmWalletsPage.d.ts.map +1 -1
  28. package/dist/pages/HistoryPage.d.ts +1 -0
  29. package/dist/pages/HistoryPage.d.ts.map +1 -1
  30. package/dist/pages/Home.d.ts +1 -0
  31. package/dist/pages/Home.d.ts.map +1 -1
  32. package/dist/pages/LiquiditySourcesPage.d.ts +1 -0
  33. package/dist/pages/LiquiditySourcesPage.d.ts.map +1 -1
  34. package/dist/pages/SelectChainPage.d.ts +1 -0
  35. package/dist/pages/SelectChainPage.d.ts.map +1 -1
  36. package/dist/pages/SelectTokenPage.d.ts +1 -0
  37. package/dist/pages/SelectTokenPage.d.ts.map +1 -1
  38. package/dist/pages/SettingsPage.d.ts +1 -0
  39. package/dist/pages/SettingsPage.d.ts.map +1 -1
  40. package/dist/pages/SwapDetailsPage.d.ts +1 -0
  41. package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
  42. package/dist/pages/WalletsPage.d.ts +1 -0
  43. package/dist/pages/WalletsPage.d.ts.map +1 -1
  44. package/dist/swapBox.d.ts.map +1 -1
  45. package/dist/widget-embedded.cjs.development.js +1 -1
  46. package/dist/widget-embedded.cjs.development.js.map +1 -1
  47. package/dist/widget-embedded.cjs.production.min.js +1 -1
  48. package/dist/widget-embedded.cjs.production.min.js.map +1 -1
  49. package/dist/widget-embedded.esm.js +2 -2
  50. package/dist/widget-embedded.esm.js.map +1 -1
  51. package/package.json +4 -4
  52. package/src/App.tsx +2 -2
  53. package/src/lib.tsx +2 -1
  54. package/src/store/bestRoute.ts +1 -1
  55. package/src/swapBox.tsx +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"widget-embedded.cjs.development.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,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AAE,EAAE,EAAE,EAAE,EAAE,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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"}
1
+ {"version":3,"file":"widget-embedded.cjs.development.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';\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 { 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';\nimport { isEvmBlockchain } from 'rango-sdk';\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","_ref","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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AAE,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,EAAE,EAAE,EAAE,EAAE,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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,EA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,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,E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"}