import type { GameContext } from "../runtime/gameContext.js"; import { type ActionContextStack } from "../input/actionContexts.js"; import type { ActionCodesMap } from "../input/actionBindings.js"; export declare const PLAY_CONTROLS_STORE_KEY = "jg.playControls"; /** Returns the context stack associated with a game context. */ export declare function actionContextStack(ctx: GameContext): ActionContextStack; /** Applies active contexts to a base action map for shell input tracking. */ export declare function activeActionCodes(ctx: GameContext, base: ActionCodesMap): ActionCodesMap; export declare function setPlayControlsActive(ctx: GameContext, active: boolean): void; /** * Suspends this context's player controls until the returned release function is called. * Independent owners compose; repeated release is safe and preserves the existing play gate. * Dispose the lease when its menu closes or its owning context unmounts. * Leases survive this context's binding restore and are excluded from saved binding state. * @capability control-suspension Suspend player input across overlapping menus without stopping shared simulation. */ export declare function suspendPlayControls(ctx: GameContext): () => void; export declare function playControlsActive(ctx: GameContext): boolean;