'use client' import { useEffect, useMemo, useState } from 'react' import Link from 'next/link' import { Card } from '@/libs/frontend-ui-primitives' import { configApi, type TokenListResponse } from '@/services/api/config' import { aggregateLiquidityPools, getRouteBackedPoolAddresses, selectFeaturedLiquidityTokens, } from '@/services/api/liquidity' import { routesApi, type MissionControlLiquidityPool, type RouteMatrixResponse } from '@/services/api/routes' import { formatCurrency, formatNumber, truncateMiddle } from './OperationsPageShell' interface TokenPoolRecord { symbol: string pools: MissionControlLiquidityPool[] } export default function PoolsOperationsPage() { const [tokenList, setTokenList] = useState(null) const [routeMatrix, setRouteMatrix] = useState(null) const [tokenPoolRecords, setTokenPoolRecords] = useState([]) const [loadingError, setLoadingError] = useState(null) useEffect(() => { let cancelled = false const load = async () => { const [tokenListResult, routeMatrixResult] = await Promise.allSettled([ configApi.getTokenList(), routesApi.getRouteMatrix(), ]) if (cancelled) return if (tokenListResult.status === 'fulfilled') setTokenList(tokenListResult.value) if (routeMatrixResult.status === 'fulfilled') setRouteMatrix(routeMatrixResult.value) if (tokenListResult.status === 'fulfilled') { const featuredTokens = selectFeaturedLiquidityTokens(tokenListResult.value.tokens || []) const poolResults = await Promise.allSettled( featuredTokens.map(async (token) => ({ symbol: token.symbol, pools: (await routesApi.getTokenPools(token.address)).pools || [], })) ) if (!cancelled) { setTokenPoolRecords( poolResults .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') .map((result) => result.value) ) } } if (tokenListResult.status === 'rejected' && routeMatrixResult.status === 'rejected') { setLoadingError('Live pool inventory is temporarily unavailable from the public explorer APIs.') } } load().catch((error) => { if (!cancelled) { setLoadingError( error instanceof Error ? error.message : 'Live pool inventory is temporarily unavailable from the public explorer APIs.' ) } }) return () => { cancelled = true } }, []) const featuredTokens = useMemo( () => selectFeaturedLiquidityTokens(tokenList?.tokens || []), [tokenList?.tokens] ) const aggregatedPools = useMemo( () => aggregateLiquidityPools(tokenPoolRecords), [tokenPoolRecords] ) const routeBackedPoolAddresses = useMemo( () => getRouteBackedPoolAddresses(routeMatrix), [routeMatrix] ) const topPools = aggregatedPools.slice(0, 9) return (
Live Pool Inventory

Pools

This page now summarizes the live pool inventory discovered through mission-control token pool endpoints and cross-checks it against the current route matrix.

{loadingError ? (

{loadingError}

) : null}
Unique pools
{formatNumber(aggregatedPools.length)}
Discovered across {formatNumber(featuredTokens.length)} featured Chain 138 tokens.
Route-backed pools
{formatNumber(routeBackedPoolAddresses.length)}
Unique pool addresses referenced by the live route matrix.
Featured coverage
{formatNumber(tokenPoolRecords.filter((record) => record.pools.length > 0).length)}
Featured tokens currently returning at least one live pool.
{topPools.map((pool) => (
{(pool.token0?.symbol || '?') + ' / ' + (pool.token1?.symbol || '?')}
{pool.dex || 'Unknown DEX'} ยท TVL {formatCurrency(pool.tvl)}
{truncateMiddle(pool.address, 10, 8)}
Seen from {pool.sourceSymbols.join(', ')}
))} {topPools.length === 0 ? (

No live pools available right now.

) : null}
{featuredTokens.map((token) => { const record = tokenPoolRecords.find((entry) => entry.symbol === token.symbol) return (
{token.symbol}
{token.name || 'Unnamed token'}
{formatNumber(record?.pools.length || 0)} pools
) })}

The broader liquidity page now shows live route, planner, and pool access together.

The current route matrix publishes {formatNumber(routeMatrix?.counts?.liveSwapRoutes)} live swap routes and {formatNumber(routeMatrix?.counts?.liveBridgeRoutes)} bridge routes.

Open liquidity access Open routes page Open wallet tools
) }