import { PolyScene } from '../scene/PolyScene';
import { BaseCameraObjNodeType } from '../nodes/obj/_BaseCamera';
import { ViewerCamerasController } from './utils/CamerasController';
import { ViewerControlsController } from './utils/ControlsController';
import { ViewerEventsController } from './utils/EventsController';
import { WebGLController } from './utils/WebglController';
import { ThreejsCameraControlsController } from '../nodes/obj/utils/cameras/ControlsController';
export declare abstract class TypedViewer<C extends BaseCameraObjNodeType> {
    protected _container: HTMLElement;
    protected _scene: PolyScene;
    protected _camera_node: C;
    protected _canvas: HTMLCanvasElement | undefined;
    protected _active: boolean;
    private static _next_viewer_id;
    private _id;
    active(): boolean;
    activate(): void;
    deactivate(): void;
    protected _cameras_controller: ViewerCamerasController | undefined;
    get camerasController(): ViewerCamerasController;
    protected _controls_controller: ViewerControlsController | undefined;
    get controlsController(): ViewerControlsController | undefined;
    protected _events_controller: ViewerEventsController | undefined;
    get eventsController(): ViewerEventsController;
    protected _webgl_controller: WebGLController | undefined;
    get webglController(): WebGLController;
    constructor(_container: HTMLElement, _scene: PolyScene, _camera_node: C);
    container(): HTMLElement;
    scene(): PolyScene;
    canvas(): HTMLCanvasElement | undefined;
    cameraNode(): C;
    get cameraControlsController(): ThreejsCameraControlsController | undefined;
    id(): number;
    dispose(): void;
    resetContainerClass(): void;
    setContainerClassHovered(): void;
}
export declare type BaseViewerType = TypedViewer<BaseCameraObjNodeType>;
