import { Disposable, Listener } from '@vertexvis/utils'; import { KeyBinding } from '../keyBinding'; export interface ViewerWalkModeConfiguration { teleportHeightPercentage: number; teleportDistancePercentage: number; teleportCollisionDistance: number; keyboardWalkSpeed: number; keyboardPivotDegrees: number; keyboardRepeatIntervalMs: number; } export type ViewerTeleportMode = 'teleport' | 'teleport-and-align' | 'teleport-toward'; export declare enum ViewerWalkModeOperation { 'MOVE_DOWN' = "MOVE_DOWN", 'MOVE_UP' = "MOVE_UP", 'PIVOT_DOWN' = "PIVOT_DOWN", 'PIVOT_LEFT' = "PIVOT_LEFT", 'PIVOT_RIGHT' = "PIVOT_RIGHT", 'PIVOT_UP' = "PIVOT_UP", 'WALK_BACKWARD' = "WALK_BACKWARD", 'WALK_FORWARD' = "WALK_FORWARD", 'WALK_LEFT' = "WALK_LEFT", 'WALK_RIGHT' = "WALK_RIGHT" } export type ViewerWalkModeKeyBindings = Record; export declare class WalkModeModel { private keyBindings; private configuration; private excludedPredicate?; private enabled; private teleportMode?; private enabledChanged; private teleportModeChanged; private configurationChanged; private keyBindingsChanged; setEnabled(enabled: boolean): void; setTeleportMode(mode?: ViewerTeleportMode): void; setConfiguration(configuration: ViewerWalkModeConfiguration): void; addKeyBinding(operation: ViewerWalkModeOperation, keyBinding: KeyBinding): void; replaceKeyBinding(operation: ViewerWalkModeOperation, keyBinding: KeyBinding): void; setExcludedPredicate(predicate: (el: Element) => boolean): void; getEnabled(): boolean; getTeleportMode(): ViewerTeleportMode | undefined; getTeleportHeightPercentage(): number; getKeyboardWalkSpeed(): number; getKeyboardPivotDegrees(): number; getKeyboardRepeatInterval(): number; getConfiguration(): ViewerWalkModeConfiguration; getKeyBindings(): ViewerWalkModeKeyBindings; operationMatches(operation: ViewerWalkModeOperation, state: Record): boolean; isElementExcluded(el: Element): boolean; onEnabledChange(listener: Listener): Disposable; onTeleportModeChange(listener: Listener): Disposable; onConfigurationChange(listener: Listener): Disposable; onKeyBindingsChange(listener: Listener): Disposable; }