/**
 @module viw-webgl-viewer
*/
import { Settings, PartialSettings } from './viewerSettings';
import { ICamera } from './camera/camera';
import { Input } from './inputs/input';
import { Selection } from './selection';
import { IEnvironment } from './environment';
import { Raycaster } from './raycaster';
import { Viewport } from './viewport';
import { Gizmos } from './gizmos/gizmos';
import { Renderer } from './rendering/renderer';
import { ISignal } from 'ste-signals';
import { ViewerMaterials } from '../vim-loader/materials/viewerMaterials';
import { Vim } from '../vim-loader/vim';
/**
 * Viewer and loader for vim files.
 */
export declare class Viewer {
    /**
     * The settings configuration used by the viewer.
     */
    readonly settings: Settings;
    /**
     * The renderer used by the viewer for rendering scenes.
     */
    readonly renderer: Renderer;
    /**
     * The interface for managing the HTML canvas viewport.
     */
    readonly viewport: Viewport;
    /**
     * The interface for managing viewer selection.
     */
    readonly selection: Selection;
    /**
     * The interface for manipulating default viewer inputs.
     */
    readonly inputs: Input;
    /**
     * The interface for performing raycasting into the scene to find objects.
     */
    readonly raycaster: Raycaster;
    /**
     * The materials used by the viewer to render the vims.
     */
    readonly materials: ViewerMaterials;
    /**
     * The interface for manipulating the viewer's camera.
     */
    get camera(): ICamera;
    /**
     * The interface for manipulating THREE elements that are not directly related to Vim objects.
     */
    get environment(): IEnvironment;
    /**
     * The collection of gizmos available for visualization and interaction within the viewer.
     */
    gizmos: Gizmos;
    /**
     * A signal that is dispatched when a new Vim object is loaded or unloaded.
     */
    get onVimLoaded(): ISignal;
    private _camera;
    private _environment;
    private _clock;
    private _vims;
    private _onVimLoaded;
    private _updateId;
    constructor(options?: PartialSettings);
    private animate;
    /**
     * Retrieves an array containing all currently loaded Vim objects.
     * @returns {Vim[]} An array of all Vim objects currently loaded in the viewer.
     */
    get vims(): Vim[];
    /**
     * The number of Vim objects currently loaded in the viewer.
     */
    get vimCount(): number;
    /**
     * Adds a Vim object to the renderer, triggering the appropriate actions and dispatching events upon successful addition.
     * @param {Vim} vim - The Vim object to add to the renderer.
     * @throws {Error} If the Vim object is already added or if loading the Vim would exceed maximum geometry memory.
     */
    add(vim: Vim): void;
    /**
     * Unloads the given Vim object from the viewer, updating the scene and triggering necessary actions.
     * @param {Vim} vim - The Vim object to remove from the viewer.
     * @throws {Error} If attempting to remove a Vim object that is not present in the viewer.
     */
    remove(vim: Vim): void;
    /**
     * Removes all Vim objects from the viewer, clearing the scene.
     */
    clear(): void;
    /**
     * Cleans up and releases resources associated with the viewer.
     */
    dispose(): void;
}
