/**
 * @module viw-webgl-viewer/rendering
 */
import * as THREE from 'three';
import { IRenderer, WebglScene } from '../../loader/scene';
import { Viewport } from '../viewport';
import { RenderScene } from './renderScene';
import { ModelMaterial, Materials } from '../../loader/materials/materials';
import { CSS2DRenderer } from 'three/examples/jsm/renderers/CSS2DRenderer';
import { Camera } from '../camera/camera';
import { RenderingSection } from './renderingSection';
import { ViewerSettings } from '../settings/viewerSettings';
/**
 * Manages how vim objects are added and removed from the THREE.Scene to be rendered
 */
export declare class Renderer implements IRenderer {
    /**
     * The THREE WebGL renderer.
     */
    readonly renderer: THREE.WebGLRenderer;
    /**
     * The THREE sample ui renderer
     */
    readonly textRenderer: CSS2DRenderer;
    /**
     * Interface to interact with section box directly without using the gizmo.
     */
    readonly section: RenderingSection;
    /**
     * Determines whether antialias will be applied to rendering or not.
     */
    antialias: boolean;
    private _scene;
    private _viewport;
    private _camera;
    private _composer;
    private _materials;
    private _renderText;
    private _needsUpdate;
    private _onSceneUpdate;
    private _onBoxUpdated;
    private _sceneUpdated;
    private maxMemory;
    private _outlineCount;
    /**
     * Indicates whether the scene should be re-rendered on change only.
     */
    onDemand: boolean;
    /**
     * Indicates whether the scene needs to be re-rendered.
     * Can only be set to true. Cleared on each render.
     */
    get needsUpdate(): boolean;
    set needsUpdate(value: boolean);
    constructor(scene: RenderScene, viewport: Viewport, materials: Materials, camera: Camera, settings: ViewerSettings);
    /**
     * Removes all objects from rendering and disposes the WebGL context.
     */
    dispose(): void;
    /**
     * Gets or sets the background color or texture of the scene.
     */
    get background(): THREE.Color | THREE.Texture;
    set background(color: THREE.Color | THREE.Texture);
    get modelMaterial(): ModelMaterial;
    set modelMaterial(material: ModelMaterial);
    /**
     * Signal dispatched at the end of each frame if the scene was updated, such as visibility changes.
     */
    get onSceneUpdated(): import("ste-signals").ISignal;
    /**
     * Signal dispatched when bounding box is updated.
     */
    get onBoxUpdated(): import("ste-signals").ISignal;
    /**
     * Determines whether text rendering is enabled or not.
     */
    get textEnabled(): boolean;
    set textEnabled(value: boolean);
    get smallGhostThreshold(): number;
    set smallGhostThreshold(value: number);
    /**
     * Returns the bounding box encompassing all rendered objects.
     * @param target - Box in which to copy the result. A new instance is created if undefined.
     * @returns The bounding box encompassing all rendered objects.
     */
    getBoundingBox(target?: THREE.Box3): THREE.Box3 | undefined;
    /**
     * Updates the global rendering bounding box.
     * @param box - The new bounding box.
     */
    updateBox(box: THREE.Box3): void;
    /**
     * Notifies that a scene was updated this frame.
     */
    notifySceneUpdate(): void;
    addOutline(): void;
    removeOutline(): void;
    /**
     * Renders what is in the camera's view.
     */
    render(): void;
    /**
     * Adds an object to be rendered.
     * @param target The object or scene to add for rendering.
     */
    add(target: WebglScene | THREE.Object3D): boolean;
    /**
     * Removes an object from rendering.
     * @param target The object or scene to remove from rendering.
     */
    remove(target: WebglScene | THREE.Object3D): void;
    /**
     * Clears all objects from rendering.
     */
    clear(): void;
    /**
     * Returns an estimate of the memory used by the renderer.
     */
    get estimatedMemory(): number;
    /**
     * Determines the target sample count on the rendering target.
     * Higher number increases quality.
     */
    get samples(): number;
    set samples(value: number);
    private fitViewport;
}
