/**
 * @module viw-webgl-viewer/inputs
 */
import * as THREE from 'three';
import { BaseInputHandler } from './baseInputHandler';
type CallbackMode = 'replace' | 'append' | 'prepend';
/**
 * KeyboardHandler
 *
 * A modern keyboard handler that manages keyboard events using a stateful pattern.
 * It supports separate handlers for key down, key up, and continuous key pressed events.
 * The handler calculates a movement vector based on currently pressed keys.
 */
export declare class KeyboardHandler extends BaseInputHandler {
    /**
     * Callback invoked whenever the calculated movement vector is updated.
     */
    onMove: (value: THREE.Vector3) => void;
    onKeyUp: (code: string) => boolean;
    onKeyDown: (code: string) => boolean;
    /**
     * Speed multiplier applied when the Shift key is held.
     * @private
     */
    private readonly SHIFT_MULTIPLIER;
    /**
     * Set of currently pressed key codes.
     * @private
     */
    private pressedKeys;
    /**
     * Map of key down event handlers (invoked once on key down).
     * @private
     */
    private keyDownHandlers;
    /**
     * Map of key up event handlers (invoked once on key up).
     * @private
     */
    private keyUpHandlers;
    /**
     * Creates an instance of KeyboardHandler.
     * @param canvas The HTMLCanvasElement to attach keyboard events to.
     */
    constructor(canvas: HTMLCanvasElement);
    /**
     * Registers the necessary keyboard event listeners.
     * @protected
     */
    protected addListeners(): void;
    private registerMovementHandlers;
    /**
     * Checks if a key is currently pressed.
     * @param key The event.code of the key.
     * @returns {boolean} True if the key is pressed, false otherwise.
     * @private
     */
    isKeyPressed(key: string): boolean;
    /**
     * Resets the handler state by clearing all pressed keys and recalculating movement.
     * @override
     */
    reset(): void;
    /**
     * Registers a handler for a key down event.
     * @param code The event.code of the key.
     * @param handler Callback invoked on key down.
     */
    registerKeyDown(code: string, mode: CallbackMode, handler: () => void): void;
    /**
     * Registers a handler for a key up event.
     * @param code The event.code of the key.
     * @param handler Callback invoked on key up.
     */
    registerKeyUp(code: string, mode: CallbackMode, handler: () => void): void;
    private registerKey;
    /**
     * Internal key down event handler.
     * @param event The KeyboardEvent object.
     * @private
     */
    private _onKeyDown;
    /**
     * Internal key up event handler.
     * @param event The KeyboardEvent object.
     * @private
     */
    private _onKeyUp;
    /**
     * Calculates and applies the movement vector based on currently pressed keys.
     * Also calls any continuous key pressed handlers for keys that are held down.
     * @private
     */
    private applyMove;
}
export {};
