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 VoxelData { /** Dimensions of the 3D grid [nx, ny, nz] */ dimensions: [number, number, number]; /** Voxel values [v000, v100, ..., v(nx-1)(ny-1)(nz-1)] */ values: Float32Array; /** Voxel positions [x0, y0, z0, ...] if not a regular grid (optional) */ positions?: Float32Array; /** Origin point of the grid [x, y, z] (default [0,0,0]) */ origin?: [number, number, number]; /** Spacing between voxels [dx, dy, dz] (default [1,1,1]) */ spacing?: [number, number, number]; } export interface Voxel3DRendererOptions extends Renderer3DOptions { camera?: OrbitCameraOptions; controls?: OrbitControllerOptions; axes?: Axes3DOptions; showAxes?: boolean; /** Size scale for each voxel cube (0.0 to 1.0, default 1.0) */ voxelScale?: number; /** Threshold value: voxels below this won't be rendered (default 0.1) */ threshold?: number; /** Global opacity (default: 1.0) */ opacity?: number; /** Enable tooltips */ enableTooltip?: boolean; /** Color theme options */ theme?: CustomThemeOptions; } export declare class Voxel3DRenderer { private canvas; private gl; private dpr; private programs; private camera; private controller; private axes; private vao; private positionBuffer; private indexBuffer; private indexCount; private instancePosBuffer; private instanceValueBuffer; private voxelCount; private backgroundColor; private voxelSize; private voxelScale; private threshold; private opacity; private data; private bounds; private animationFrameId; private needsRender; private eventListeners; private tooltip; private lastHitIndex; private boundHandleMouseMove?; private boundHandleMouseLeave?; constructor(options: Voxel3DRendererOptions); private initCubeGeometry; setData(data: VoxelData): 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; }