import { PolyScene } from '../scene/PolyScene';
import { ViewerControlsController } from './utils/ControlsController';
import { TypedViewer } from './_Base';
import { BaseThreejsCameraObjNodeType } from '../nodes/obj/_BaseCamera';
declare global {
    interface HTMLCanvasElement {
        onwebglcontextlost: () => void;
        onwebglcontextrestored: () => void;
    }
}
export interface ThreejsViewerProperties {
    autoRender: boolean;
}
export declare class ThreejsViewer extends TypedViewer<BaseThreejsCameraObjNodeType> {
    protected _scene: PolyScene;
    protected _camera_node: BaseThreejsCameraObjNodeType;
    private _properties?;
    private _request_animation_frame_id;
    private _do_render;
    private _animate_method;
    constructor(_container: HTMLElement, _scene: PolyScene, _camera_node: BaseThreejsCameraObjNodeType, _properties?: ThreejsViewerProperties | undefined);
    get controlsController(): ViewerControlsController;
    _build(): void;
    dispose(): void;
    get cameraControlsController(): import("../nodes/obj/utils/cameras/ControlsController").ThreejsCameraControlsController;
    private _set_events;
    onResize(): void;
    private _init_display;
    setAutoRender(state?: boolean): void;
    animate(): void;
    private _cancel_animate;
    render(): void;
    renderer(): import("three").WebGLRenderer | undefined;
}
