"use client"; import { useTokenBalances } from "@/lib/hooks/useTokenBalances"; import { formatUsd, tokenUsdValue, useUsdPrices, } from "@/lib/prices"; import { formatTokenAmount } from "@/lib/tokens"; import { formatAddress } from "@/lib/utils"; import { CHAIN138_ID } from "@/lib/constants/chain138"; interface WalletBalancePanelProps { address: `0x${string}`; onDisconnect?: () => void; } function BalanceRow({ label, amount, usd, loading, }: { label: string; amount: string; usd: number | null; loading?: boolean; }) { return (

{label}

{loading ? "Loading…" : amount}

{loading ? "…" : formatUsd(usd)}

); } export function WalletBalancePanel({ address, onDisconnect }: WalletBalancePanelProps) { const { ethUsd, isLoading: pricesLoading } = useUsdPrices(); const { nativeBalance, cusdtRaw, cusdcRaw, erc20Tokens, isLoading: balancesLoading, refetch, } = useTokenBalances(address); const loading = balancesLoading || pricesLoading; const ethRaw = nativeBalance?.value; const ethUsdVal = tokenUsdValue(ethRaw, 18, "ETH", ethUsd); const cusdtUsd = tokenUsdValue(cusdtRaw, erc20Tokens[0].decimals, "cUSDT", ethUsd); const cusdcUsd = tokenUsdValue(cusdcRaw, erc20Tokens[1].decimals, "cUSDC", ethUsd); const totalUsd = [ethUsdVal, cusdtUsd, cusdcUsd].reduce((sum, v) => { if (v == null) return sum; return (sum ?? 0) + v; }, null); return (

Connected wallet

{formatAddress(address)}

Chain {CHAIN138_ID} balances

Estimated total {loading ? "…" : formatUsd(totalUsd)}
{onDisconnect && ( )}
); }