import { Disclosure, Transition } from '@headlessui/react' import { ArrowTopRightOnSquareIcon, ChevronDownIcon, ChevronRightIcon, QuestionMarkCircleIcon, } from '@heroicons/react/20/solid' import { useTranslation } from 'next-i18next' import Image from 'next/legacy/image' import { useViewport } from '../../hooks/useViewport' import { breakpoints } from '../../utils/theme' import ContentBox from '../shared/ContentBox' import Tooltip from '@components/shared/Tooltip' import { Bank } from '@blockworks-foundation/mango-v4' import useJupiterMints from 'hooks/useJupiterMints' import { Table, Td, Th, TrBody, TrHead } from '@components/shared/TableElements' import useMangoGroup from 'hooks/useMangoGroup' import useBanksWithBalances from 'hooks/useBanksWithBalances' import { getOracleProvider } from 'hooks/useOracleProvider' import { useRouter } from 'next/router' import { goToTokenPage } from './TokenOverviewTable' import { LinkButton } from '@components/shared/Button' const TokenDetailsTable = () => { const { t } = useTranslation(['common', 'activity', 'token', 'trade']) const { group } = useMangoGroup() const { mangoTokens } = useJupiterMints() const { width } = useViewport() const showTableView = width ? width > breakpoints.md : false const banks = useBanksWithBalances() const router = useRouter() return group ? ( {showTableView ? (
{banks.map((b) => { const bank: Bank = b.bank let logoURI if (mangoTokens?.length) { logoURI = mangoTokens.find( (t) => t.address === bank.mint.toString() )?.logoURI } const [oracleProvider, oracleLinkPath] = getOracleProvider(bank) const mintInfo = group.mintInfosMapByMint.get( bank.mint.toString() ) return ( goToTokenPage( bank.name.split(' ')[0].toUpperCase(), router ) } > ) })}
{t('token')}
{t('asset-liability-weight')}
{t('borrow-fee')}
{t('activity:liquidation-fee')}
{t('trade:tooltip-insured', { tokenOrMarket: '' })} Learn more } > {t('trade:insured', { token: '' })} {t('trade:oracle')}
{logoURI ? ( ) : ( )}

{bank.name}

{bank.initAssetWeight.toFixed(2)}

|

{bank.initLiabWeight.toFixed(2)}

{(100 * bank.loanOriginationFeeRate.toNumber()).toFixed( 2 )} %

{(bank.liquidationFee.toNumber() * 100).toFixed(2)}%

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

{oracleLinkPath ? ( {oracleProvider} ) : (

{oracleProvider}

)}
) : (
{banks.map((b, i) => { const bank = b.bank let logoURI: string | undefined if (mangoTokens?.length) { logoURI = mangoTokens.find( (t) => t.address === bank.mint.toString() )?.logoURI } const [oracleProvider, oracleLinkPath] = getOracleProvider(bank) const mintInfo = group.mintInfosMapByMint.get(bank.mint.toString()) return ( {({ open }) => ( <>
{logoURI ? ( ) : ( )}

{bank.name}

{t('asset-liability-weight')}

{bank.initAssetWeight.toFixed(2)}

|

{bank.initLiabWeight.toFixed(2)}

{t('borrow-fee')}

{( 100 * bank.loanOriginationFeeRate.toNumber() ).toFixed(2)} %

{t('activity:liquidation-fee')}

{(bank.liquidationFee.toNumber() * 100).toFixed( 2 )} %

{t('trade:oracle')}

{oracleLinkPath ? ( {oracleProvider} ) : (

{oracleProvider}

)}
{t('trade:tooltip-insured', { tokenOrMarket: '', })} Learn more
} placement="top-start" > {t('trade:insured', { token: '' })}

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

goToTokenPage( bank.name.split(' ')[0].toUpperCase(), router ) } > {t('token:token-stats', { token: bank.name })}
)} ) })} )}
) : null } export default TokenDetailsTable