/**
 @module viw-webgl-viewer
*/
import * as THREE from 'three';
import { CSS2DRenderer } from 'three/examples/jsm/renderers/CSS2DRenderer';
import { ViewerSettings } from './settings/viewerSettings';
export declare class Viewport {
    /**
     *  HTML Canvas on which the model is rendered
     */
    readonly canvas: HTMLCanvasElement;
    /** HTML Element in which text is rendered */
    readonly textRenderer: CSS2DRenderer;
    get text(): HTMLElement;
    private _unregisterResize;
    private _ownedCanvas;
    private _onResize;
    private _onReparent;
    /**
     * Signal dispatched when the canvas reparented.
     */
    get onReparent(): import("ste-signals").ISignal;
    /**
     * Signal dispatched when the canvas is resized.
     */
    get onResize(): import("ste-signals").ISignal;
    /**
     * Constructs a new instance of the class with the provided settings.
     * @param {ViewerSettings} settings The settings object defining viewer configurations.
     */
    constructor(settings: ViewerSettings);
    /**
     * Either returns html canvas at provided Id or creates a canvas at root level
     */
    private static getOrCreateCanvas;
    private static createCanvas;
    /** Returns a text renderer that will render html in an html element sibbling to canvas */
    private createTextRenderer;
    get parent(): HTMLElement;
    reparent(parent: HTMLElement): void;
    /**
     * Removes the canvas if it's owned by the viewer.
     */
    dispose(): void;
    /**
     * Returns the pixel size of the parent element.
     * @returns {THREE.Vector2} The pixel size of the parent element.
     */
    getParentSize(): THREE.Vector2;
    private getParentWidth;
    private getParentHeight;
    /**
     * Returns the pixel size of the canvas.
     * @returns {THREE.Vector2} The pixel size of the canvas.
     */
    getSize(): THREE.Vector2;
    /**
     * Calculates and returns the aspect ratio of the parent element.
     * @returns {number} The aspect ratio (width divided by height) of the parent element.
     */
    getAspectRatio(): number;
    /**
     * Resizes the canvas and updates the camera to match new parent dimensions.
     */
    ResizeToParent(): void;
    /**
     * Set a callback for canvas resize with debouncing
     * https://stackoverflow.com/questions/5825447/javascript-event-for-canvas-resize/30688151
     * @param callback code to be called
     * @param timeout time after the last resize before code will be called
     */
    private watchResize;
}
