/**
 * @module viw-webgl-viewer/rendering
 */
import * as THREE from 'three';
import { Scene } from '../../loader/scene';
import { ModelMaterial } from '../../loader/materials/materials';
import { InstancedMesh } from '../../loader/progressive/instancedMesh';
/**
 * Wrapper around the THREE scene that tracks bounding box and other information.
 */
export declare class RenderScene {
    threeScene: THREE.Scene;
    boxUpdated: boolean;
    smallGhostThreshold: number | undefined;
    private _vimScenes;
    private _boundingBox;
    private _memory;
    private _2dCount;
    private _outlineCount;
    private _modelMaterial;
    get meshes(): (import("../..").InsertableMesh | import("../..").Mesh | InstancedMesh)[];
    constructor();
    get estimatedMemory(): number;
    has2dObjects(): boolean;
    /** Clears the scene updated flags */
    clearUpdateFlags(): void;
    /**
     * Returns the bounding box encompasing all rendererd objects.
     * @param target box in which to copy result, a new instance is created if undefined.
     */
    getBoundingBox(target?: THREE.Box3): THREE.Box3 | undefined;
    /**
     * Returns the bounding box of the average center of all meshes.
     * Less precise but is more stable against outliers.
     */
    getAverageBoundingBox(): THREE.Box3;
    /**
     * Add object to be rendered
     */
    add(target: Scene | THREE.Object3D): void;
    private count2dObjects;
    private unparent2dObjects;
    /**
     * Remove object from rendering
     */
    remove(target: Scene | THREE.Object3D): void;
    /**
     * Removes all rendered objects
     */
    clear(): void;
    get modelMaterial(): ModelMaterial;
    set modelMaterial(material: ModelMaterial);
    private updateInstanceMeshVisibility;
    private addScene;
    updateBox(box: THREE.Box3 | undefined): void;
    private removeScene;
}
