"use client" import React, { useEffect, useState } from 'react' export default function StatusOverview() { const [status, setStatus] = useState({ driftBalance: 0, activeTrades: 0, dailyPnL: 0, systemStatus: 'offline', bitqueryStatus: 'unknown', marketPrices: [], walletBalance: null, // Real wallet balance availableCoins: [] // Available coins in wallet }) const [loading, setLoading] = useState(true) useEffect(() => { async function fetchStatus() { try { setLoading(true) // Get real wallet balance let walletBalance = null let availableCoins = [] try { const walletRes = await fetch('/api/wallet/balance') if (walletRes.ok) { const walletData = await walletRes.json() if (walletData.success) { walletBalance = walletData.balance availableCoins = walletData.balance.positions || [] } } } catch (e) { console.warn('Could not fetch wallet balance:', e) } // Get market data from Bitquery let balance = walletBalance?.totalValue || 0 // Use real wallet balance let bitqueryStatus = 'error' let marketPrices = [] try { const marketRes = await fetch('/api/market') if (marketRes.ok) { const marketData = await marketRes.json() if (marketData.success) { marketPrices = marketData.data.prices || [] bitqueryStatus = marketData.data.status?.connected ? 'online' : 'error' } } } catch (e) { console.warn('Could not fetch market data:', e) } // Get system status let systemStatus = 'online' try { const statusRes = await fetch('/api/status') if (!statusRes.ok) { systemStatus = 'error' } } catch (e) { systemStatus = 'error' } setStatus({ driftBalance: balance, activeTrades: 0, // No fake trades - will show real ones when we have them dailyPnL: 0, // No fake P&L systemStatus: systemStatus, bitqueryStatus: bitqueryStatus, marketPrices: marketPrices, walletBalance: walletBalance, availableCoins: availableCoins }) } catch (error) { console.error('Error fetching status:', error) setStatus(prev => ({ ...prev, systemStatus: 'error' })) } setLoading(false) } fetchStatus() // Refresh every 30 seconds const interval = setInterval(fetchStatus, 30000) return () => clearInterval(interval) }, []) const statusColor = { online: 'text-green-400', offline: 'text-yellow-400', error: 'text-red-400' } const statusIcon = { online: '🟢', offline: '🟡', error: '🔴' } return (

System Status

{statusIcon[status.systemStatus]} {status.systemStatus.toUpperCase()}
{loading ? (
Loading status...
) : (
{/* Main Status Grid */}
💎

${status.driftBalance.toFixed(2)}

Portfolio Value

{/* Wallet Balance */} {status.walletBalance && (
🪙

{status.walletBalance.positions?.[0]?.amount?.toFixed(4) || '0.0000'} SOL

Wallet Balance

)}
🔄

{status.activeTrades}

Active Trades

📈

= 0 ? 'text-green-400' : 'text-red-400'}`}> {status.dailyPnL >= 0 ? '+' : ''}${status.dailyPnL.toFixed(2)}

Daily P&L

{/* Service Status */}

Service Status

Trading Bot
{statusIcon[status.systemStatus]} {status.systemStatus.toUpperCase()}
Bitquery API
{statusIcon[status.bitqueryStatus]} {status.bitqueryStatus.toUpperCase()}
{/* Market Prices */} {status.marketPrices.length > 0 && (

Live Market Prices

Via Bitquery
{status.marketPrices.map((price, index) => (
{price.symbol} ${price.price?.toFixed(4)}
24h Change = 0 ? 'text-green-400' : 'text-red-400' }`}> {price.change24h >= 0 ? '+' : ''}{price.change24h?.toFixed(2)}%
))}
)} {/* Available Coins in Wallet */} {status.availableCoins.length > 0 && (

Available Wallet Coins

Ready for Trading
{status.availableCoins.map((coin, index) => (
🪙
{coin.symbol}
${coin.price?.toFixed(2)}
{coin.amount?.toFixed(4)}
${coin.usdValue?.toFixed(2)}
))}
)}
)}
) }