import { ModalProps } from '../../types/modal' import Modal from '../shared/Modal' import { useTranslation } from 'next-i18next' import useSelectedMarket from 'hooks/useSelectedMarket' import { Serum3Market } from '@blockworks-foundation/mango-v4' import Button from '@components/shared/Button' import { ExclamationTriangleIcon } from '@heroicons/react/20/solid' import useMangoGroup from 'hooks/useMangoGroup' import { useMemo } from 'react' import Tooltip from '@components/shared/Tooltip' import OracleProvider from '@components/shared/OracleProvider' interface SpotMarketDetailsModalProps { market: Serum3Market | undefined } type ModalCombinedProps = SpotMarketDetailsModalProps & ModalProps const SpotMarketDetailsModal = ({ isOpen, onClose, market, }: ModalCombinedProps) => { const { t } = useTranslation(['common', 'trade']) const { serumOrPerpMarket } = useSelectedMarket() const { group } = useMangoGroup() const [baseBank, quoteBank] = useMemo(() => { if (!group || !market) return [undefined, undefined] const base = group.getFirstBankByTokenIndex(market.baseTokenIndex) const quote = group.getFirstBankByTokenIndex(market.quoteTokenIndex) return [base, quote] }, [group, market]) const [baseMintInfo, quoteMintInfo] = useMemo(() => { if (!baseBank || !quoteBank) return [undefined, undefined] const base = group!.mintInfosMapByMint.get(baseBank.mint.toString()) const quote = group!.mintInfosMapByMint.get(quoteBank.mint.toString()) return [base, quote] }, [baseBank, quoteBank]) return market && serumOrPerpMarket ? (

{t('trade:market-details', { market: market.name })}

{market?.reduceOnly ? (

{t('trade:reduce-only')}

) : null}

{t('trade:min-order-size')}

{serumOrPerpMarket.minOrderSize}

{t('trade:tick-size')}

{serumOrPerpMarket.tickSize}

{t('trade:max-leverage')}

5x

{t('trade:oracle')}

{baseMintInfo ? (
{t('trade:tooltip-insured', { tokenOrMarket: baseBank!.name, })} Learn more
} >

{t('trade:insured', { token: baseBank!.name })}

{baseMintInfo.groupInsuranceFund ? t('yes') : t('no')}

) : null} {quoteMintInfo ? (
{t('trade:tooltip-insured', { tokenOrMarket: quoteBank!.name, })} Learn more
} >

{t('trade:insured', { token: quoteBank!.name })}

{quoteMintInfo.groupInsuranceFund ? t('yes') : t('no')}

) : null}
) : null } export default SpotMarketDetailsModal