import TokenSelect from './TokenSelect' import Loading from '@components/shared/Loading' import NumberFormat, { NumberFormatValues, SourceInfo, } from 'react-number-format' import { formatCurrencyValue } from 'utils/numbers' import { useTranslation } from 'react-i18next' import { Dispatch, SetStateAction, useMemo } from 'react' import mangoStore from '@store/mangoStore' import useMangoGroup from 'hooks/useMangoGroup' import { OUTPUT_TOKEN_DEFAULT } from 'utils/constants' import { NUMBER_FORMAT_CLASSNAMES } from './MarketSwapForm' import InlineNotification from '@components/shared/InlineNotification' import useMangoAccount from 'hooks/useMangoAccount' import { SwapFormTokenListType } from './SwapFormTokenList' import { getInputTokenBalance } from './TriggerSwapForm' const ReduceOutputTokenInput = ({ error, handleAmountOutChange, loading, setShowTokenSelect, }: { error?: string handleAmountOutChange: (e: NumberFormatValues, info: SourceInfo) => void loading?: boolean setShowTokenSelect: Dispatch> }) => { const { t } = useTranslation('common') const { mangoAccountAddress } = useMangoAccount() const { group } = useMangoGroup() const { inputBank, outputBank, amountOut: amountOutFormValue, } = mangoStore((s) => s.swap) const reducingLong = useMemo(() => { if (!inputBank || !mangoAccountAddress) return false const inputBalance = getInputTokenBalance(inputBank) return inputBalance > 0 }, [inputBank, mangoAccountAddress]) return (

{reducingLong ? t('buy') : t('sell')}

{loading ? (
) : ( <> {!isNaN(Number(amountOutFormValue)) ? ( {outputBank ? formatCurrencyValue( outputBank.uiPrice * Number(amountOutFormValue), ) : '–'} ) : null} )}
{error ? (
) : null}
) } export default ReduceOutputTokenInput