import type { MissionControlBridgeStatusResponse } from '@/services/api/missionControl' import type { ExplorerStats } from '@/services/api/stats' import type { ChainActivityContext } from '@/utils/activityContext' import { resolveFreshnessSourceLabel, summarizeFreshnessConfidence, } from '@/utils/explorerFreshness' import { formatRelativeAge } from '@/utils/format' import { useUiMode } from './UiModeContext' function buildSummary(context: ChainActivityContext) { if (context.transaction_visibility_unavailable) { return 'Chain-head visibility is current, while transaction freshness is currently unavailable.' } if (context.state === 'active') { return 'Chain head and latest indexed transactions are closely aligned.' } if (context.head_is_idle) { return 'Chain head is current, while latest visible transactions trail the tip.' } if (context.state === 'low' || context.state === 'inactive') { return 'Chain head is current, and recent visible transaction activity is sparse.' } return 'Freshness context is based on the latest visible public explorer evidence.' } function buildDetail(context: ChainActivityContext, diagnosticExplanation?: string | null) { if (diagnosticExplanation) { return diagnosticExplanation } if (context.transaction_visibility_unavailable) { return 'Use chain-head visibility and the last non-empty block as the current trust anchors.' } const latestTxAge = formatRelativeAge(context.latest_transaction_timestamp) const latestNonEmptyBlock = context.last_non_empty_block_number != null ? `#${context.last_non_empty_block_number.toLocaleString()}` : 'unknown' if (context.head_is_idle) { return `Latest visible transaction: ${latestTxAge}. Last non-empty block: ${latestNonEmptyBlock}.` } if (context.state === 'active') { return `Latest visible transaction: ${latestTxAge}. Recent indexed activity remains close to the tip.` } return `Latest visible transaction: ${latestTxAge}. Recent head blocks may be quiet even while the chain remains current.` } export default function FreshnessTrustNote({ context, stats, bridgeStatus, scopeLabel, className = '', }: { context: ChainActivityContext stats?: ExplorerStats | null bridgeStatus?: MissionControlBridgeStatusResponse | null scopeLabel?: string className?: string }) { const { mode } = useUiMode() const sourceLabel = resolveFreshnessSourceLabel(stats, bridgeStatus) const confidenceBadges = summarizeFreshnessConfidence(stats, bridgeStatus) const diagnosticExplanation = stats?.diagnostics?.explanation || bridgeStatus?.data?.diagnostics?.explanation || null const normalizedClassName = className ? ` ${className}` : '' if (mode === 'expert') { return (