import { OrbitCameraOptions } from './camera/OrbitCamera'; import { OrbitControllerOptions } from './controls/OrbitController'; import { Axes3DOptions } from './Axes3D'; import { Renderer3DOptions, Renderer3DEventCallback } from './types'; import { CustomThemeOptions } from './colorThemes'; export interface WaterfallSeriesData { /** Y values for this slice */ yValues: Float32Array; /** Fixed Z coordinate for this slice */ z: number; /** Color for this slice */ color?: [number, number, number]; } export interface Waterfall3DRendererOptions extends Renderer3DOptions { camera?: OrbitCameraOptions; controls?: OrbitControllerOptions; axes?: Axes3DOptions; showAxes?: boolean; /** X values shared by all slices */ xValues: Float32Array; /** Visual style: 'line' or 'area' (curtain) */ sliceStyle?: 'line' | 'area'; /** Base Y value (if sliceStyle is 'area') */ baseY?: number; /** Global opacity */ opacity?: number; /** Enable tooltips */ enableTooltip?: boolean; /** Color theme options */ theme?: CustomThemeOptions; } export declare class Waterfall3DRenderer { private canvas; private gl; private dpr; private programs; private camera; private controller; private axes; private vao; private positionBuffer; private normalBuffer; private colorBuffer; private indexBuffer; private indexCount; private backgroundColor; private sliceStyle; private baseY; private opacity; private xValues; private slices; private bounds; private animationFrameId; private needsRender; private eventListeners; private hoveredSeriesIndex; private colorTheme; private tooltip; private lastHitIndex; private boundHandleMouseMove?; private boundHandleMouseLeave?; constructor(options: Waterfall3DRendererOptions); setData(slices: WaterfallSeriesData[]): void; private updateBounds; private updateGeometry; render(): void; private startRenderLoop; fitToData(): void; private handleMouseMove; private handleMouseLeave; pickAtScreen(screenX: number, screenY: number): { seriesIndex: number; pointIndex: number; distance: number; point: [number, number, number]; } | null; private handleResize; private resize; getCanvasSize(): { width: number; height: number; }; getAxisLabels(): import('./Axes3D').AxisLabel3D[]; getViewProjectionMatrix(): import('./math').Mat4Type; projectToScreen(worldPos: [number, number, number]): { x: number; y: number; visible: boolean; }; on(event: string, callback: Renderer3DEventCallback): void; private emitEvent; destroy(): void; }