/** * @fileoverview Types for data virtualization plugin * @module plugins/virtualization/types */ export type VirtualizationMode = "lod" | "bins" | "hybrid"; export type VirtualizationStrategy = "lttb" | "minmax"; export interface PluginVirtualizationConfig { /** Enable virtualization (default: true) */ enabled?: boolean; /** * Data fidelity mode (default: `'lod'`). * - `'lod'`: downsample to canvas budget (recommended for large datasets). * - `'full'`: skip downsampling and send all points to the GPU (opt-out for fidelity-critical views). */ precision?: "lod" | "full"; /** Virtualization mode (default: 'lod') */ mode?: VirtualizationMode; /** Target points or 'auto' (default: 'auto') */ targetPoints?: number | "auto"; /** Points per pixel when targetPoints is 'auto' (default: 2) */ pointsPerPixel?: number; /** LOD levels (factors) used for heuristic switching (default: [1, 4, 8, 16]) */ lodLevels?: number[]; /** Downsample strategy (default: 'lttb') */ strategy?: VirtualizationStrategy; /** Keep original data cached in plugin (default: true) */ reuseOriginalData?: boolean; /** Sync updates with lazy-load (default: true) */ syncWithLazyLoad?: boolean; /** Include series IDs (default: all) */ includeSeries?: string[]; /** Exclude series IDs (default: none) */ excludeSeries?: string[]; /** Debug logging (default: false) */ debug?: boolean; /** Viewport buffer as fraction of visible x-range when slicing before downsample (default: 0.5) */ viewportBuffer?: number; /** Downsample off main thread when Workers are available (default: true) */ useWorker?: boolean; /** Point count threshold before using worker path (default: 250000) */ workerThreshold?: number; } export interface VirtualizationStats { seriesId: string; originalPoints: number; renderedPoints: number; targetPoints: number; lastUpdated: number; mode: VirtualizationMode; strategy: VirtualizationStrategy; } export interface VirtualizationAPI { enable(): void; disable(): void; isEnabled(): boolean; updateConfig(config: Partial): void; invalidate(seriesId?: string): void; getStats(seriesId: string): VirtualizationStats | null; getAllStats(): VirtualizationStats[]; }