/**
 * @module viw-webgl-viewer/inputs
 */
import * as THREE from 'three';
import { Viewer } from '../viewer';
import { KeyboardHandler } from './keyboardHandler';
import { TouchHandler } from './touchHandler';
import { MouseHandler } from './mouseHandler';
import { InputAction } from '../raycaster';
export { KEYS } from './keyboardHandler';
/** Pointers mode supported by the viewer */
export type PointerMode = 'orbit' | 'look' | 'pan' | 'zoom' | 'rect';
/**
 * Defines an input scheme for the viewer.
 */
export interface InputScheme {
    /**
     * Called when mouse clicked or mobile tap.
     */
    onMainAction(hit: InputAction): void;
    /**
     * Called once when mouse and camera have been idle for some time with the position where it stopped.
     * Called once when the mouse moves again with undefined
     */
    onIdleAction(hit: InputAction | undefined): void;
    /**
     * Called when a key is pressed and released.
     */
    onKeyAction(key: number): boolean;
}
/**
 * Vim viewer default input scheme
 */
export declare class DefaultInputScheme implements InputScheme {
    private _viewer;
    constructor(viewer: Viewer);
    onMainAction(action: InputAction): void;
    onIdleAction(hit: InputAction): void;
    onKeyAction(key: number): boolean;
}
/**
 * Manages and registers all viewer user inputs for mouse, keyboard and touch
 */
export declare class Input {
    private _viewer;
    /**
     * Touch input handler
     */
    touch: TouchHandler;
    /**
     * Mouse input handler
     */
    mouse: MouseHandler;
    /**
     * Keyboard input handler
     */
    keyboard: KeyboardHandler;
    private _pointerActive;
    private _pointerFallback;
    private _pointerOverride;
    constructor(viewer: Viewer);
    /**
     * Returns the last main mode (orbit, look) that was active.
     */
    get pointerFallback(): PointerMode;
    /**
     * Returns current pointer mode.
     */
    get pointerActive(): PointerMode;
    /**
     * A temporary pointer mode used for temporary icons.
     */
    get pointerOverride(): PointerMode | undefined;
    set pointerOverride(value: PointerMode | undefined);
    /**
     * Changes pointer interaction mode. Look mode will set camera orbitMode to false.
     */
    set pointerActive(value: PointerMode);
    private _onPointerModeChanged;
    /**
     * Event called when pointer interaction mode changes.
     */
    get onPointerModeChanged(): import("ste-signals").ISignal;
    private _onPointerOverrideChanged;
    /**
     * Event called when the pointer is temporarily overriden.
     */
    get onPointerOverrideChanged(): import("ste-signals").ISignal;
    private _onContextMenu;
    /**
     * Event called when when context menu could be displayed
     */
    get onContextMenu(): import("ste-simple-events").ISimpleEvent<THREE.Vector2>;
    private _scheme;
    /**
     * Get or set the current viewer input scheme, set undefined to revert to default.
     */
    get scheme(): InputScheme | undefined;
    set scheme(value: InputScheme | undefined);
    /**
     * Calls main action on the current input scheme
     */
    MainAction(action: InputAction): void;
    /**
     * Calls idle action on the current input scheme
     */
    IdleAction(action: InputAction | undefined): void;
    /**
     * Calls key action on the current input scheme
     */
    KeyAction(key: number): boolean;
    /**
     * Calls context menu action
     */
    ContextMenu(position: THREE.Vector2 | undefined): void;
    /**
     * Register inputs handlers for default viewer behavior
     */
    registerAll(): void;
    /**
     * Unregisters all input handlers
     */
    unregisterAll: () => void;
    /**
     * Resets all input state
     */
    resetAll(): void;
}
