import { h } from '../../stencil-public-runtime';
import { DepthBuffer } from '../../lib/types';
import { FrameCameraBase } from '../../lib/types/frame';
export type ViewerDomRendererDrawMode = '2d' | '3d';
/**
 * The `ViewerDomRenderer` is responsible for managing a
 * `<vertex-viewer-dom-renderer>` element. This element supports drawing DOM
 * objects in a local 3D scene that is synced with a remote rendered scene.
 */
export declare class ViewerDomRenderer {
    /**
     * Specifies the drawing mode for the renderer.
     *
     * When in `3d` mode, elements are positioned using CSS 3D transforms and will
     * scale and rotate with the camera. In `2d` mode, a simpler 2D transform is
     * used, and elements will not scale or rotate with camera changes.
     */
    drawMode: ViewerDomRendererDrawMode;
    /**
     * Specifies whether to propagate events to the viewer's interaction handlers
     *
     * When `true` this <vertex-viewer-dom-renderer> will be registered as a valid event target
     * for the viewer. This enables camera interactions to be initiated from elements within this renderer.
     *
     * When `false` this <vertex-viewer-dom-renderer> will *not* be registered as a target
     * for the viewer.
     */
    propagateEventsToViewer: boolean;
    /**
     * The viewer synced to this renderer. This property will automatically be
     * assigned if the renderer is a child of `<vertex-viewer>`.
     */
    viewer?: HTMLVertexViewerElement;
    /**
     * The current camera of the frame.
     *
     * This property will automatically be set when supplying a viewer to the
     * component, or when added as a child to `<vertex-viewer>`.
     */
    camera?: FrameCameraBase;
    /**
     * The current depth buffer of the frame.
     *
     * This property will automatically be set when supplying a viewer to the
     * component, or when added as a child to `<vertex-viewer>`.
     */
    depthBuffer?: DepthBuffer;
    private viewport;
    private invalidateFrameCounter;
    private interactionDisposables;
    private hostEl;
    /**
     * @ignore
     */
    protected componentWillLoad(): void;
    /**
     * @ignore
     */
    render(): h.JSX.IntrinsicElements;
    /**
     * @ignore
     */
    protected componentWillRender(): void;
    /**
     * @ignore
     */
    protected handleViewerChange(newViewer: HTMLVertexViewerElement | undefined, oldViewer: HTMLVertexViewerElement | undefined): void;
    /**
     * @ignore
     */
    protected handlePropertyChange(): void;
    private invalidateFrame;
    /**
     * disposes any existing disposables, and registers new handlers on the newly provided viewer.
     * @param newViewer
     */
    private handleEventPropagationToViewer;
    private updateElements;
    private handleViewerFrameDrawn;
    private handleResize;
    private handleChildrenChange;
    private updatePropsFromViewer;
}
