'use client' import { useState, useEffect } from 'react' import { LineChart } from '@/components/charts/LineChart' import { BarChart } from '@/components/charts/BarChart' import { PieChart } from '@/components/charts/PieChart' import axios from 'axios' const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:4000' export function PoolAnalytics() { const [poolId, setPoolId] = useState('') const [analytics, setAnalytics] = useState([]) const [loading, setLoading] = useState(false) const [systemMetrics, setSystemMetrics] = useState(null) useEffect(() => { fetchSystemMetrics() }, []) const fetchSystemMetrics = async () => { try { const response = await axios.get(`${API_URL}/api/analytics/metrics`) setSystemMetrics(response.data) } catch (error) { console.error('Error fetching system metrics:', error) } } const fetchPoolAnalytics = async () => { if (!poolId) return setLoading(true) try { const response = await axios.get(`${API_URL}/api/analytics/pools`, { params: { poolId }, }) setAnalytics(response.data) } catch (error) { console.error('Error fetching pool analytics:', error) } finally { setLoading(false) } } const chartData = analytics.map((a) => ({ date: new Date(a.timestamp).toLocaleDateString(), tvl: parseFloat(a.tvl || '0'), volume24h: parseFloat(a.volume24h || '0'), fees24h: parseFloat(a.fees24h || '0'), })) return (
{/* System Metrics */} {systemMetrics && (

Total TVL

{parseFloat(systemMetrics.totalTVL || '0').toLocaleString()}

24h Volume

{parseFloat(systemMetrics.totalVolume24h || '0').toLocaleString()}

Active Pools

{systemMetrics.activePools || 0}

)} {/* Pool Selector */}
setPoolId(e.target.value)} placeholder="Enter Pool ID" className="flex-1 px-4 py-2 border border-gray-300 rounded-md" />
{/* Charts */} {analytics.length > 0 && (
{analytics[0] && (

Pool Metrics

Utilization Rate: {(analytics[0].utilizationRate * 100).toFixed(2)}%
7d Volume: {parseFloat(analytics[0].volume7d || '0').toLocaleString()}
30d Volume: {parseFloat(analytics[0].volume30d || '0').toLocaleString()}
)}
)}
) }