import type { CapabilityDescription } from "@skenora/contracts"; /** Instance-owned input. Hosts own UI and advance one snapshot per input phase. */ export type InputActionValue = boolean | number | { x: number; y: number; }; export interface InputActionDefinition { name: string; kind: "boolean" | "axis1" | "axis2"; /** Each axis component is clamped to this interval; it must include zero. */ range?: readonly [number, number]; merge?: "sum" | "latest"; deadzone?: number; unit?: string; } export interface InputActionState { name: string; value: InputActionValue; pressed: boolean; held: boolean; released: boolean; frame: number; } export declare class InputActionError extends Error { readonly code: "input-invalid" | "input-budget" | "input-action-unknown" | "input-consumed"; constructor(code: "input-invalid" | "input-budget" | "input-action-unknown" | "input-consumed", message: string); } export declare class InputActionMap { #private; readonly maxSources: number; constructor(definitions: readonly InputActionDefinition[], maxSources?: number); get focused(): boolean; setFocused(focused: boolean): void; describe(): Readonly[]; setSource(sourceId: string, action: string, value: InputActionValue): void; releaseSource(sourceId: string): void; releaseAll(): void; capture(ownerId: string, actions: readonly string[], priority?: number): () => void; consume(action: string, ownerId: string): boolean; getAction(action: string, ownerId?: string): InputActionState | null; getSnapshot(): readonly InputActionState[]; subscribe(listener: (states: readonly InputActionState[]) => void): () => void; update(): readonly InputActionState[]; dispose(): void; } export declare function isInputActionValue(kind: InputActionDefinition["kind"], value: unknown): value is InputActionValue; declare module "../core/runtime-capability-registry" { interface RuntimeCapabilityMap { "runtime.input": InputActionMap; } } export declare function describeInputCapability(actions?: readonly InputActionDefinition[]): CapabilityDescription; //# sourceMappingURL=input-action-map.d.ts.map