/** Number of consecutive unexpected full redraws that constitute a "storm". */ export declare const REPAINT_STORM_THRESHOLD = 3; /** Hard cap on retained metric label keys; overflow is aggregated under `other`. */ export declare const MAX_LABEL_MAP_ENTRIES = 128; export interface DurationStats { count: number; meanMs: number; p50Ms: number; p95Ms: number; p99Ms: number; maxMs: number; } export interface RssStats { samples: number; baselineBytes: number | null; lastBytes: number | null; peakBytes: number; growthBytes: number; /** RSS sampled after the run + a forced GC (informational). */ returnBytes: number | null; /** Heap used at baseline and after the run + forced GC (reclaimable signal). */ heapBaselineBytes: number | null; heapReturnBytes: number | null; /** (heapReturn - heapBaseline) / heapBaseline; <= tolerance means heap returned. */ returnWithinBaselineFraction: number | null; } export interface HelperStat { count: number; totalMs: number; meanMs: number; } export interface LineCountGauge { last: number; max: number; } export interface RenderMetricsSnapshot { enabled: boolean; renderCount: number; renderDurations: DurationStats; durationsTruncated: boolean; requestSources: Record; fullRedrawCount: number; fullRedrawCauses: Record; repaintStorms: number; maxConsecutiveFullRedraws: number; rss: RssStats; ownerGauges: Record; timerGauges: Record; helperStats: Record; lineCounts: Record; structuralCounters: Record; } export declare class RenderMetrics { #private; constructor(enabled?: boolean); get enabled(): boolean; enable(): void; disable(): void; /** Reset all collected data (keeps the enabled state). */ reset(): void; /** High-resolution clock for timing render passes. Returns 0 when disabled. */ now(): number; /** Record that a render was requested, attributed to a caller source. */ recordRequest(source?: string): void; /** Record one completed `#doRender` pass duration (ms). */ recordRender(durationMs: number): void; /** Record a full-redraw event and classify its cause for storm detection. */ recordFullRedraw(cause: string): void; /** Sample current RSS. Records baseline on first sample, tracks peak/last. */ sampleRss(): number; setOwnerGauge(name: string, value: number): void; setTimerGauge(name: string, value: number): void; /** Accumulate timing/count for a named render helper (e.g. "renderTree"). */ recordHelper(name: string, durationMs: number): void; /** Record a per-render line-count gauge (e.g. "rendered", "normalized", "diffed"). */ recordLineCount(name: string, value: number): void; /** Accumulate deterministic structural render work without retaining frame data. */ recordStructuralCounter(name: string, value?: number): void; /** * Force a GC when the runtime exposes one and sample RSS as the post-run * "return" value used by the memory-leak gate. Callers should drop large * references before calling so reclaimable memory is actually freed. */ sampleReturn(): number; snapshot(): RenderMetricsSnapshot; } /** Shared metrics instance used by the TUI render loop. */ export declare const renderMetrics: RenderMetrics;