import { EventEmitter, JSX } from '../../stencil-public-runtime';
import { WalkModeController } from '../../lib/walk-mode/controller';
import { ViewerTeleportMode, WalkModeModel } from '../../lib/walk-mode/model';
/**
 * The `<vertex-viewer-teleport-tool>` allows for click-based "teleportation"
 * around a model, which is particularly useful for walking through a model.
 * This tool is automatically included as part of the <vertex-viewer-walk-mode-tool>.
 */
export declare class ViewerTeleportTool {
    /**
     * The viewer that this component is bound to. This is automatically assigned
     * if added to the light-dom of a parent viewer element.
     */
    viewer?: HTMLVertexViewerElement;
    /**
     * The type of teleportation to perform when clicking.
     *
     * `teleport` - the camera's `position` is moved to the location of the hit result
     * constrained by the plane represented by the camera's current `position` and `up`
     * vectors.
     *
     * `teleport-and-align` - the camera's `position`, `lookAt`, and `up` vectors are updated
     * to align to the plane represented by the hit result's position and normal.
     *
     * `teleport-toward` - the camera's `position` is moved a fixed distance toward the location of the
     * hit result constrained by the plane represented by the camera's current `position` and `up`
     * vectors.
     *
     * `undefined` - no teleportation will occur when clicking.
     *
     * Defaults to `undefined`.
     */
    mode?: ViewerTeleportMode;
    /**
     * Indicates whether animations will be used when performing camera
     * operations. Defaults to `false`.
     */
    animationsDisabled: boolean;
    /**
     * The duration of animations, in milliseconds. Defaults to `500`.
     */
    animationMs?: number;
    controller?: WalkModeController;
    model: WalkModeModel;
    /**
     * Event emitted when the `WalkModeController` associated with this tool changes.
     */
    controllerChanged: EventEmitter<WalkModeController>;
    private interactionHandlerDisposable?;
    private interactionHandler?;
    private stateMap;
    /**
     * @ignore
     */
    protected componentWillLoad(): void;
    /**
     * @ignore
     */
    protected connectedCallback(): void;
    /**
     * @ignore
     */
    protected disconnectedCallback(): void;
    /**
     * @ignore
     */
    protected handleModeChange(): void;
    /**
     * @ignore
     */
    protected handleViewerChanged(): void;
    /**
     * @ignore
     */
    protected handleAnimationMsChanged(): void;
    /**
     * @ignore
     */
    protected handleAnimationsDisabledChanged(): void;
    /**
     * @ignore
     */
    protected handleControllerChanged(): void;
    protected handleModelChanged(): void;
    protected render(): JSX.Element;
    private setupController;
    private setDepthBuffers;
    private resetDepthBuffers;
    private clearInteractionHandler;
    private setupInteractionHandler;
}
