import { Trade, TradeType } from 'moonbeamswap' import React, { useContext } from 'react' import { ThemeContext } from 'styled-components' import { Field } from '../../state/swap/actions' import { useUserSlippageTolerance } from '../../state/user/hooks' import { TYPE } from '../../theme' import { computeSlippageAdjustedAmounts, computeTradePriceBreakdown } from '../../utils/prices' import { AutoColumn } from '../Column' import QuestionHelper from '../QuestionHelper' import { RowBetween, RowFixed } from '../Row' import FormattedPriceImpact from './FormattedPriceImpact' import { SectionBreak } from './styleds' import SwapRoute from './SwapRoute' function TradeSummary({ trade, allowedSlippage }: { trade: Trade; allowedSlippage: number }) { const theme = useContext(ThemeContext) const { priceImpactWithoutFee, realizedLPFee } = computeTradePriceBreakdown(trade) const isExactIn = trade.tradeType === TradeType.EXACT_INPUT const slippageAdjustedAmounts = computeSlippageAdjustedAmounts(trade, allowedSlippage) return ( <> {isExactIn ? 'Minimum received' : 'Maximum sold'} {isExactIn ? `${slippageAdjustedAmounts[Field.OUTPUT]?.toSignificant(4)} ${trade.outputAmount.currency.symbol}` ?? '-' : `${slippageAdjustedAmounts[Field.INPUT]?.toSignificant(4)} ${trade.inputAmount.currency.symbol}` ?? '-'} Price Impact Liquidity Provider Fee {realizedLPFee ? `${realizedLPFee.toSignificant(4)} ${trade.inputAmount.currency.symbol}` : '-'} ) } export interface AdvancedSwapDetailsProps { trade?: Trade } export function AdvancedSwapDetails({ trade }: AdvancedSwapDetailsProps) { const theme = useContext(ThemeContext) const [allowedSlippage] = useUserSlippageTolerance() const showRoute = Boolean(trade && trade.route.path.length > 2) return ( {trade && ( <> {showRoute && ( <> Route )} )} ) }