import { default as VoxelScene } from '../Data/Models/VoxelScene';
import { VoxelRenderer } from '../Renderer/VoxelRenderer';
export interface VoxelTracerOptions {
    /** Element the tracer creates its canvas in. Also receives orbit controls. */
    container: HTMLElement;
    /** .vox file URL or File to load immediately. */
    src?: string | File;
    devicePixelRatio?: number;
    /** Stop accumulating after this many ticks (default 1000). */
    maxSteps?: number;
    /** Frame the camera to the scene bounds on load (default true). */
    autoFrame?: boolean;
    /** Throttle trace ticks; Infinity (default) = every frame, 0 = paused. */
    ticksPerSecond?: number;
    onTick?: (tick: number, msElapsed: number) => void;
    onSceneLoaded?: (scene: VoxelScene) => void;
    onRendered?: () => void;
    onError?: (error: unknown) => void;
}
export interface VoxelTracer {
    readonly canvas: HTMLCanvasElement;
    readonly renderer: VoxelRenderer;
    /** Loads a .vox file (URL or File) and swaps the scene. */
    load(src: string | File): Promise<VoxelScene>;
    captureAsBlob(type?: string, quality?: number): Promise<Blob | null>;
    /** Throttle trace ticks; Infinity = every frame, 0 = paused. */
    setTicksPerSecond(tps: number): void;
    dispose(): void;
}
/**
 * Framework-agnostic entry point: creates a canvas inside `container`,
 * wires camera controls, resizing, and the render loop. Works from plain
 * <script> tags, React, Vue, or anything else that can hand over a DOM
 * element.
 */
export declare function createVoxelTracer(options: VoxelTracerOptions): VoxelTracer;
