import { InputDevice } from "../interfaces/input.d.ts"; import { Disposable } from "../interfaces/lifecycle.d.ts"; import { GameEventBus } from "../classes/eventBus.d.ts"; import { LoggingUtility } from "../utils/logger.d.ts"; /** * Manager for handling user input from various devices (keyboard, mouse, gamepad) */ export declare class UserInputManager implements Disposable { private _eventBus; private _keyboardRA; private _mouseRA; private _gamepadRA; /** Logger instance */ private _log; /** * Create a new UserInputManager. * * @param eventBus * @param canvas - The DOM element to attach input listeners to (used by mouse input) * @param logger */ constructor(eventBus: GameEventBus, canvas: HTMLElement, logger?: LoggingUtility); /** * Publish device connected event to the event bus */ private _publishDeviceConnected; /** * Publish device disconnected event to the event bus */ private _publishDeviceDisconnected; /** * Publish input changed event to the event bus, used by all device types */ private _publishInputChanged; /** * Tears down the input manager and clean up event listeners */ $teardown(): Promise; /** * Get all connected input devices (keyboard, mouse, and any gamepads). */ listDevices(): InputDevice[]; /** * Get a specific input device by ID. * Uses device ID prefix (keyboard-, mouse-, gamepad-) for fast lookup. * * @param deviceId */ getDevice(deviceId: string): InputDevice | null; /** * Poll for gamepad state updates - call this in your game loop */ pollGamepads(): void; }