import { Bounds } from '../../types'; export interface NativeSeriesRenderData { id: string; buffer: WebGLBuffer; count: number; style: any; visible: boolean; type: "line" | "scatter" | "line+scatter" | "step" | "step+scatter" | "band" | "bar" | "heatmap" | "candlestick" | "boxplot" | "waterfall"; /** For step types: pre-computed step buffer */ stepBuffer?: WebGLBuffer; stepCount?: number; /** Optional specific Y-bounds for this series (overrides global bounds) */ yBounds?: { min: number; max: number; }; /** Heatmap specific */ zBounds?: { min: number; max: number; }; colormap?: string; colormapTexture?: WebGLTexture; /** Error bars */ errorBuffer?: WebGLBuffer; errorCount?: number; /** Box plot specific */ boxBuffer?: WebGLBuffer; boxCount?: number; boxLinesBuffer?: WebGLBuffer; boxLinesCount?: number; /** Waterfall specific */ wfPositiveBuffer?: WebGLBuffer; wfPositiveCount?: number; wfNegativeBuffer?: WebGLBuffer; wfNegativeCount?: number; wfSubtotalBuffer?: WebGLBuffer; wfSubtotalCount?: number; wfConnectorBuffer?: WebGLBuffer; wfConnectorCount?: number; } export interface NativeRenderOptions { bounds: Bounds; invertX?: boolean; backgroundColor?: [number, number, number, number]; plotArea?: { x: number; y: number; width: number; height: number; }; plotAreaBackground?: [number, number, number, number]; } export interface ShaderProgram { program: WebGLProgram; attributes: { position: number; value?: number; }; uniforms: { uScale: WebGLUniformLocation; uTranslate: WebGLUniformLocation; uColor: WebGLUniformLocation | null; uPointSize: WebGLUniformLocation | null; uSymbol: WebGLUniformLocation | null; uMinValue: WebGLUniformLocation | null; uMaxValue: WebGLUniformLocation | null; uColormap: WebGLUniformLocation | null; }; } export type ProgramMode = "line" | "point" | "heatmap"; export interface ProgramBundle { lineProgram: ShaderProgram; pointProgram: ShaderProgram; heatmapProgram: ShaderProgram; }