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 VectorFieldData { /** Origin positions [x0, y0, z0, x1, y1, z1, ...] */ positions: Float32Array; /** Direction vectors [dx0, dy0, dz0, dx1, dy1, dz1, ...] */ directions: Float32Array; /** Colors per vector [r0, g0, b0, ...] (optional) */ colors?: Float32Array; /** Single color for all vectors (default: [0.3, 0.8, 1.0]) */ color?: [number, number, number]; } export interface VectorField3DRendererOptions extends Renderer3DOptions { camera?: OrbitCameraOptions; controls?: OrbitControllerOptions; axes?: Axes3DOptions; showAxes?: boolean; /** Arrow scale multiplier (default: 1.0) */ scaleMultiplier?: number; /** Opacity for arrows (default: 0.9) */ opacity?: number; /** Color theme options */ theme?: CustomThemeOptions; /** Enable tooltips */ enableTooltip?: boolean; } export declare class VectorField3DRenderer { private canvas; private gl; private dpr; private programs; private camera; private controller; private axes; private vao; private positionBuffer; private normalBuffer; private indexBuffer; private indexCount; private instancePosBuffer; private instanceDirBuffer; private instanceColorBuffer; private vectorCount; private backgroundColor; private scaleMultiplier; private opacity; private vectorData; private bounds; private animationFrameId; private needsRender; private eventListeners; private tooltip; private lastHitIndex; private boundHandleMouseMove?; private boundHandleMouseLeave?; private colorTheme; constructor(options: VectorField3DRendererOptions); private initArrowGeometry; setData(data: VectorFieldData): void; private updateBounds; render(): void; private startRenderLoop; fitToData(): void; private handleMouseMove; private handleMouseLeave; 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; }