import { Bounds } from '../types'; export interface SeriesRenderData { id: string; buffer: WebGLBuffer; count: number; style: any; visible: boolean; type: string; zBounds?: { min: number; max: number; }; colormapTexture?: WebGLTexture; } export interface RenderOptions { bounds: Bounds; backgroundColor?: [number, number, number, number]; } /** * Common interface for all WebGL renderer implementations */ export interface IWebGLRenderer { /** Check if WebGL is available and initialized */ readonly available: boolean; /** * Create or update a GPU buffer with interleaved X,Y data * @param id - Unique buffer identifier * @param data - Interleaved Float32Array [x0, y0, x1, y1, ...] */ createBuffer(id: string, data: Float32Array): void; /** * Get a buffer by ID */ getBuffer(id: string): WebGLBuffer | undefined; /** * Delete a buffer and free GPU memory */ deleteBuffer(id: string): void; /** * Create a 1D texture for heatmaps */ createColormapTexture(id: string, data: Uint8Array): WebGLTexture; /** * Render a frame with all visible series */ render(series: SeriesRenderData[], options: RenderOptions): void; /** * Handle canvas resize */ resize(): void; /** * Get WebGL capabilities/limits */ getLimits(): Record; /** * Cleanup and destroy all GPU resources */ destroy(): void; } /** * Create a WebGL renderer (Native WebGL) * * @param canvas - Target canvas element */ export declare function createRenderer(canvas: HTMLCanvasElement): IWebGLRenderer; /** * Create a renderer synchronously (native only) */ export { NativeWebGLRenderer as createNativeRenderer } from './NativeWebGLRenderer';