/** * Velo Plot - Debug Overlay Module * * Provides a visual debug overlay showing performance metrics, * rendering info, and chart state for development and debugging. * * @module debug */ export interface DebugStats { /** Current frames per second */ fps: number; /** Average frame time in ms */ frameTime: number; /** Total number of points being rendered */ pointCount: number; /** Number of visible series */ seriesCount: number; /** Current view bounds */ viewBounds: { xMin: number; xMax: number; yMin: number; yMax: number; }; /** WebGL/WebGPU renderer info */ rendererInfo: { type: 'webgl' | 'webgpu' | 'unknown'; vendor?: string; renderer?: string; }; /** Memory usage estimate (bytes) */ memoryEstimate: number; /** Number of draw calls per frame */ drawCalls: number; /** Whether GPU downsampling is active */ downsamplingActive: boolean; /** Device pixel ratio */ devicePixelRatio: number; /** Canvas dimensions */ canvasSize: { width: number; height: number; }; /** Plot area dimensions */ plotArea: { x: number; y: number; width: number; height: number; }; } export interface DebugOverlayOptions { /** Show FPS counter (default: true) */ showFps?: boolean; /** Show point count (default: true) */ showPointCount?: boolean; /** Show view bounds (default: true) */ showBounds?: boolean; /** Show renderer info (default: true) */ showRendererInfo?: boolean; /** Show memory estimate (default: true) */ showMemory?: boolean; /** Show draw calls (default: true) */ showDrawCalls?: boolean; /** Position: 'top-left', 'top-right', 'bottom-left', 'bottom-right' */ position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; /** Background opacity (0-1, default: 0.8) */ opacity?: number; /** Font size in pixels (default: 11) */ fontSize?: number; /** Update interval in ms (default: 250) */ updateInterval?: number; /** Custom CSS class name */ className?: string; } export declare class DebugOverlay { private container; private element; private options; private visible; private updateIntervalId; private statsProvider; private lastStats; private frameCount; private lastFpsUpdate; private currentFps; private frameTimes; constructor(container: HTMLElement, options?: DebugOverlayOptions); /** * Set the stats provider function */ setStatsProvider(provider: () => Partial): void; /** * Record a frame for FPS calculation */ recordFrame(frameTime?: number): void; /** * Show the debug overlay */ show(): void; /** * Hide the debug overlay */ hide(): void; /** * Toggle visibility */ toggle(): void; /** * Check if visible */ isVisible(): boolean; /** * Update the display with new stats */ update(stats?: Partial): void; /** * Get current stats */ getStats(): Partial; /** * Destroy the overlay */ destroy(): void; private createElement; private destroyElement; private getPositionStyles; private startUpdates; private stopUpdates; private getAverageFrameTime; private renderStats; private formatNumber; private formatBytes; private formatValue; } /** * Create a debug overlay for a chart container */ export declare function createDebugOverlay(container: HTMLElement, options?: DebugOverlayOptions): DebugOverlay; /** * Quick enable debug mode (attaches to first chart container found) */ export declare function enableDebugMode(options?: DebugOverlayOptions): DebugOverlay | null;