/**
 @module viw-webgl-viewer
*/
import { Camera } from './camera/camera';
import { Environment } from './environment/environment';
import { Gizmos } from './gizmos/gizmos';
import { IRaycaster } from './raycaster';
import { ISelection } from './selection';
import { PartialViewerSettings, ViewerSettings } from './settings/viewerSettings';
import { Viewport } from './viewport';
import { ISignal } from 'ste-signals';
import type { InputHandler } from '../../shared';
import { Materials } from '../loader/materials/materials';
import { Vim } from '../loader/vim';
import { Renderer } from './rendering/renderer';
/**
 * Viewer and loader for vim files.
 */
export declare class Viewer {
    /**
     * The settings configuration used by the viewer.
     */
    readonly settings: ViewerSettings;
    /**
     * 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: ISelection;
    /**
     * The interface for manipulating default viewer inputs.
     */
    readonly inputs: InputHandler;
    /**
     * The interface for performing raycasting into the scene to find objects.
     */
    readonly raycaster: IRaycaster;
    /**
     * The materials used by the viewer to render the vims.
     */
    readonly materials: Materials;
    /**
     * The environment of the viewer, including the ground plane and lights.
     */
    readonly environment: Environment;
    /**
     * The interface for manipulating the viewer's camera.
     */
    get camera(): Camera;
    /**
     * 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 _clock;
    private _vims;
    private _onVimLoaded;
    private _updateId;
    constructor(settings?: PartialViewerSettings);
    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;
}
