export type ActionBattleControlEntity = { canMove?: boolean; directionFixed?: boolean; animationFixed?: boolean; }; export interface ActionBattleControlLeaseOptions { owner: string; movement?: boolean; direction?: boolean; animation?: boolean; durationMs?: number; } export interface ActionBattleControlLease { readonly owner: string; readonly active: boolean; release(): void; } /** * Acquire an idempotent control lease for an action. * * Overlapping leases share one baseline snapshot, so releasing an older action * can never restore stale movement or animation flags over a newer action. */ export declare const acquireActionBattleControl: (entity: ActionBattleControlEntity, options: ActionBattleControlLeaseOptions) => ActionBattleControlLease; export declare const releaseActionBattleControls: (entity: ActionBattleControlEntity, owner?: string) => void; export declare const hasActionBattleControl: (entity: ActionBattleControlEntity, owner?: string) => boolean;