import { OrbitCamera, OrbitCameraOptions } from './camera/OrbitCamera'; import { OrbitControllerOptions } from './controls/OrbitController'; import { Axes3DOptions } from './Axes3D'; import { Tooltip3DOptions } from './Tooltip3D'; import { Renderer3DOptions, RenderStats3D, Renderer3DEventCallback } from './types'; import { CustomThemeOptions } from './colorThemes'; export interface AreaSeriesData { /** X coordinates */ x: Float32Array; /** Y coordinates (top of area) */ y: Float32Array; /** Z coordinates */ z: Float32Array; /** Base Y value (bottom of area, default: 0) */ baseY?: number; /** Color per vertex (optional, RGB) */ colors?: Float32Array; /** Single area color [r, g, b] */ color?: [number, number, number]; } export interface Area3DRendererOptions extends Renderer3DOptions { camera?: OrbitCameraOptions; controls?: OrbitControllerOptions; axes?: Axes3DOptions; showAxes?: boolean; /** Opacity of areas (default: 0.8) */ opacity?: number; /** Enable tooltips (default: true) */ enableTooltip?: boolean; tooltip?: Tooltip3DOptions; /** Color theme options */ theme?: CustomThemeOptions; } export declare class Area3DRenderer { 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 showAxes; private opacity; private areas; private bounds; private animationFrameId; private needsRender; private eventListeners; private hoveredSeriesIndex; private colorTheme; private tooltip; private enableTooltip; private lastHitIndex; private boundHandleMouseMove?; private boundHandleMouseLeave?; private lastFrameTime; private frameCount; private fps; private lastFpsUpdate; constructor(options: Area3DRendererOptions); private handleMouseMove; private handleMouseLeave; pickAtScreen(screenX: number, screenY: number): { seriesIndex: number; pointIndex: number; distance: number; point: [number, number, number]; } | null; private initBuffers; private handleResize; resize(): void; /** * Set area data (single area or array of areas) */ setData(areas: AreaSeriesData | AreaSeriesData[]): void; /** * Add a single area */ addArea(area: AreaSeriesData): void; /** * Clear all areas */ clearAreas(): void; private buildAreaGeometry; private calculateBounds; /** * Fit camera to show all data */ fitToData(): void; getCanvasSize(): { width: number; height: number; }; /** * Render a single frame */ render(): void; startRenderLoop(): void; stopRenderLoop(): void; getStats(): RenderStats3D; getCamera(): OrbitCamera; getAxisLabels(): import('./Axes3D').AxisLabel3D[]; getViewProjectionMatrix(): Float32Array; projectToScreen(worldPos: [number, number, number]): { x: number; y: number; visible: boolean; }; exportImage(format?: 'png' | 'jpeg' | 'webp', quality?: number, transparent?: boolean): string; on(event: string, callback: Renderer3DEventCallback): void; off(event: string, callback: Renderer3DEventCallback): void; private emitEvent; destroy(): void; }