import classNames from 'classnames' import { HTMLAttributes, useMemo } from 'react' import Accordion from 'components/Accordion' import AccountBalancesTable from 'components/Account/AccountBalancesTable' import AccountComposition from 'components/Account/AccountComposition' import HealthBar from 'components/Account/HealthBar' import Card from 'components/Card' import DisplayCurrency from 'components/DisplayCurrency' import { FormattedNumber } from 'components/FormattedNumber' import Text from 'components/Text' import { BN_ZERO } from 'constants/math' import { ORACLE_DENOM } from 'constants/oracle' import useBorrowMarketAssetsTableData from 'hooks/useBorrowMarketAssetsTableData' import useHealthComputer from 'hooks/useHealthComputer' import useIsOpenArray from 'hooks/useIsOpenArray' import useLendingMarketAssetsTableData from 'hooks/useLendingMarketAssetsTableData' import usePrices from 'hooks/usePrices' import useStore from 'store' import { BNCoin } from 'types/classes/BNCoin' import { calculateAccountBalanceValue, calculateAccountLeverage } from 'utils/accounts' interface Props { account: Account } export default function AccountSummary(props: Props) { const [isOpen, toggleOpen] = useIsOpenArray(2, true) const { data: prices } = usePrices() const updatedAccount = useStore((s) => s.updatedAccount) const accountBalance = useMemo( () => props.account ? calculateAccountBalanceValue(updatedAccount ?? props.account, prices) : BN_ZERO, [props.account, updatedAccount, prices], ) const { availableAssets: borrowAvailableAssets, accountBorrowedAssets } = useBorrowMarketAssetsTableData() const { availableAssets: lendingAvailableAssets, accountLentAssets } = useLendingMarketAssetsTableData() const borrowAssetsData = useMemo( () => [...borrowAvailableAssets, ...accountBorrowedAssets], [borrowAvailableAssets, accountBorrowedAssets], ) const lendingAssetsData = useMemo( () => [...lendingAvailableAssets, ...accountLentAssets], [lendingAvailableAssets, accountLentAssets], ) const { health } = useHealthComputer(props.account) const { health: updatedHealth } = useHealthComputer(updatedAccount) const leverage = useMemo( () => props.account ? calculateAccountLeverage(updatedAccount ?? props.account, prices) : BN_ZERO, [props.account, updatedAccount, prices], ) if (!props.account) return null return (