import { BaseViewerType } from '../../viewers/_Base';
import { PolyScene } from '../../scene/PolyScene';
import { Camera } from 'three';
import { CoreGraphNode } from '../../../core/graph/CoreGraphNode';
interface GetViewerOptions {
    camera: Camera;
    canvas?: HTMLCanvasElement;
}
export declare class ViewersRegister {
    protected _scene: PolyScene;
    private _viewersById;
    private _firstViewer;
    private _lastRenderedViewer;
    constructor(_scene: PolyScene);
    registerViewer(viewer: BaseViewerType): void;
    unregisterViewer(viewer: BaseViewerType): void;
    traverseViewers(callback: (viewer: BaseViewerType) => void): void;
    viewer(options: GetViewerOptions): import("../../viewers/_Base").TypedViewer<Camera> | undefined;
    firstViewer(): BaseViewerType | undefined;
    markViewerAsRendered(viewer: BaseViewerType): void;
    lastRenderedViewer(): BaseViewerType | undefined;
    private _updateCache;
    /**
     * resize graphNode
     */
    private _graphNode;
    graphNode(): CoreGraphNode;
    private _createGraphNode;
    markViewerAsSizeUpdated(viewer: BaseViewerType): void;
}
export {};
