/** * Sliding-window analytics rollups. * * Maintains O(1) counters for the dashboard: * - throughput by level over 60 one-second buckets (last minute) * - errors-by-source over the last 5 minutes * - latency histogram from HTTP-level logs over the last 5 minutes * * All buckets evict by wall-clock time. No background timers — eviction * happens lazily on every update/read, so the module is self-cleaning * without leaking intervals. */ import { LogLevelName } from '../constants'; export interface RollupSnapshot { generatedAt: number; throughput: { windowSeconds: number; series: Array<{ t: number; counts: Partial>; }>; totalLastMinute: number; totalLastMinuteByLevel: Partial>; }; latency: { windowSeconds: number; samples: number; p50: number | null; p95: number | null; p99: number | null; }; errors: { windowSeconds: number; total: number; topSources: Array<{ source: string; count: number; }>; }; } export interface IngestInput { level: LogLevelName; timestamp?: number; metadata?: Record | null; message?: string; /** Logger-wide default for source attribution (e.g. consolePrefix). */ defaultSource?: string; } export declare class Rollups { private throughput; private latency; private errors; ingest(input: IngestInput): void; snapshot(): RollupSnapshot; private evict; private recordThroughput; private recordError; private recordLatencyFromHttp; }