import { Bounds } from '../types'; import { Scale } from '../scales'; export interface OverlayTheme { /** Background color (usually transparent) */ background: string; /** Axis line color */ axisColor: string; /** Tick mark color */ tickColor: string; /** Label text color */ labelColor: string; /** Grid line color */ gridColor: string; /** Cursor line color */ cursorColor: string; /** Font family */ fontFamily: string; /** Base font size */ fontSize: number; } export declare const DEFAULT_THEME: OverlayTheme; export interface AxisConfig { /** Axis label (e.g., 'E / V') */ label?: string; /** Tick values to draw */ ticks?: number[]; /** Format function for tick labels */ tickFormat?: (value: number) => string; /** Show grid lines */ showGrid?: boolean; } export interface CursorState { /** Cursor enabled */ enabled: boolean; /** Cursor X position in pixels */ x: number; /** Cursor Y position in pixels */ y: number; /** Show crosshair */ crosshair: boolean; /** Tooltip text */ tooltip?: string; } /** * Canvas Overlay manages the 2D rendering layer */ export declare class CanvasOverlay { private canvas; private ctx; private dpr; private theme; private readonly MARGIN; constructor(parentElement: HTMLElement, theme?: Partial); /** * Resize the overlay canvas */ resize(): void; /** * Get the plot area (excluding margins) */ getPlotArea(): { x: number; y: number; width: number; height: number; }; /** * Clear the overlay */ clear(): void; /** * Render axes */ renderAxes(bounds: Bounds, xAxis?: AxisConfig, yAxis?: AxisConfig, xScale?: Scale, yScale?: Scale): void; private renderGrid; private renderXAxis; private renderYAxis; private renderXAxisLabel; private renderYAxisLabel; /** * Render cursor/crosshair */ renderCursor(cursor: CursorState): void; /** * Render tooltip */ renderTooltip(x: number, y: number, text: string): void; /** * Render FPS counter (debug) */ renderFPS(fps: number, frameTime: number): void; private dataToPixelX; private dataToPixelY; private generateTicks; private formatNumber; private formatScientific; /** * Destroy the overlay */ destroy(): void; }