import { ratioOceanToAsi, ratioAgixToAsi, ratioFetToAsi } from '@/constants' import { getTokenBySymbol } from '@/lib' import { type TokenSymbol } from '@/types' import { usePrices, type Prices } from '@/features/prices' import { type Market, useQuote } from '@/features/strategies' import { Result } from '../Result' export function SwapResults({ tokenSymbol, amount, market }: { tokenSymbol: TokenSymbol amount: number market: Market }) { const isUniswap = market === 'uniswap-v3' const { prices, isValidating: isValidatingPrices, isLoading: isLoadingPrices } = usePrices() const { amountToOcean: amountToOceanUniswap, amountToAgix: amountToAgixUniswap, amountToFet: amountToFetUniswap, isValidatingToAgix, isLoadingToAgix, isValidatingToFet, isLoadingToFet, isValidatingToOcean, isLoadingToOcean } = useQuote(tokenSymbol, amount, isUniswap) const amountInUsd = amount * prices[tokenSymbol.toLowerCase() as keyof Prices].usd const amountToOcean = amountInUsd / prices.ocean.usd const amountToAgix = amountInUsd / prices.agix.usd const amountToFet = amountInUsd / prices.fet.usd return ( <> <Result token={getTokenBySymbol('OCEAN')} amount={amountToOceanUniswap || amountToOcean} amountAsi={(amountToOceanUniswap || amountToOcean) * ratioOceanToAsi} amountFiat={ (amountToOceanUniswap || amountToOcean) * ratioOceanToAsi * prices.asi.usd } amountOriginalFiat={ (amountToOceanUniswap || amountToOcean) * prices.ocean.usd } isValidating={isValidatingToOcean || isValidatingPrices} isLoading={isLoadingToOcean || isLoadingPrices} /> <Result token={getTokenBySymbol('AGIX')} amount={amountToAgixUniswap || amountToAgix} amountAsi={(amountToAgixUniswap || amountToAgix) * ratioAgixToAsi} amountFiat={ (amountToAgixUniswap || amountToAgix) * ratioAgixToAsi * prices.asi.usd } amountOriginalFiat={ (amountToAgixUniswap || amountToAgix) * prices.agix.usd } isValidating={isValidatingToAgix || isValidatingPrices} isLoading={isLoadingToAgix || isLoadingPrices} /> <Result token={getTokenBySymbol('FET')} amount={amountToFetUniswap || amountToFet} amountAsi={(amountToFetUniswap || amountToFet) * ratioFetToAsi} amountFiat={(amountToFetUniswap || amountToFet) * prices.asi.usd} amountOriginalFiat={ (amountToFetUniswap || amountToFet) * prices.asi.usd } isValidating={isValidatingToFet || isValidatingPrices} isLoading={isLoadingToFet || isLoadingPrices} /> </> ) }