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-walk-mode-tool>` allows for additional interactions
 * intended for walking through a model instead of orbiting a model.
 */
export declare class ViewerWalkModeTool {
    /**
     * 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 `WalkModeController` responsible for controlling `KeyBinding`s and excluded
     * elements, as well as updating the `WalkModeModel` with various configuration
     * settings.
     */
    controller?: WalkModeController;
    /**
     * The `WalkModeModel` responsible for tracking configuration and emitting
     * events for interaction handlers to respond to.
     */
    model: WalkModeModel;
    /**
     * The type of teleportation to perform when clicking. This value is passed through
     * to a `<vertex-viewer-teleport-tool>`'s mode attribute.
     *
     * `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`.
     */
    teleportMode?: ViewerTeleportMode;
    /**
     * Determines whether the interaction handlers for this tool should respond to events.
     * When set to `true`, the default viewer interaction mode will be overridden to use the
     * `pivot` camera interaction type, keyboard controls for movement will be added, and
     * setting the `teleportMode` will enable the tool.
     *
     * Defaults to `true`.
     */
    enabled: boolean;
    /**
     * Event emitted when the `WalkModeController` associated with this tool changes.
     */
    controllerChanged: EventEmitter<WalkModeController>;
    private hostEl?;
    private interactionHandlerDisposable?;
    private interactionHandler?;
    private stateMap;
    /**
     * @ignore
     */
    protected componentWillLoad(): void;
    /**
     * @ignore
     */
    protected componentDidLoad(): Promise<void>;
    /**
     * @ignore
     */
    protected connectedCallback(): void;
    /**
     * @ignore
     */
    protected disconnectedCallback(): void;
    /**
     * @ignore
     */
    protected handleEnabledChanged(): void;
    /**
     * @ignore
     */
    protected handleViewerChanged(): void;
    /**
     * @ignore
     */
    protected handleTeleportModeChanged(): void;
    /**
     * @ignore
     */
    protected handleControllerChanged(): void;
    /**
     * @ignore
     */
    protected handleModelChanged(): void;
    protected render(): JSX.Element;
    private setupController;
    private clearInteractionHandler;
    private setupInteractionHandler;
    private ensureTeleportToolConfigured;
    private updateTeleportTool;
    private toggleInteractionMode;
    private setPivotInteractionMode;
    private resetInteractionMode;
}
