import { Camera, Object3D } from 'three';
import { PolyScene } from '../../../scene/PolyScene';
import { PolyEngine } from '../../../Poly';
import { TypedViewer } from '../../../viewers/_Base';
import { AbstractRenderer } from '../../../viewers/Common';
export interface ViewerCallbackOptions<C extends Camera> {
    camera: C;
    scene: PolyScene;
    canvas?: HTMLCanvasElement;
    renderer?: AbstractRenderer;
}
export type ViewerCreateCallback<C extends Camera> = (options: ViewerCallbackOptions<C>) => TypedViewer<C>;
export declare class PolyCamerasRegister {
    private _cameraNodeTypes;
    private _registeredViewerCreateCallbackByCamera;
    constructor(poly: PolyEngine);
    registerNodeType(nodeType: string): void;
    registeredNodeTypes(): string[];
    register<C extends Camera>(cameraClass: any, viewerCreateCallback: ViewerCreateCallback<C>): void;
    createViewer<C extends Camera>(options: ViewerCallbackOptions<C>): TypedViewer<Camera> | undefined;
    objectRegistered(object: Object3D): boolean;
}
