export interface FreezeSubject { id: string; groundSpeed: number; } export interface FreezeViolation { id: string; speed: number; movedSeconds: number; } /** Plain JSON state of a {@link FreezeMonitor}: seconds each frozen subject has kept moving. */ export interface FreezeMonitorState { moved: Record; } export interface FreezeMonitor { tick(subjects: readonly FreezeSubject[], frozenIds: ReadonlySet, dt: number): FreezeViolation[]; reset(id?: string): void; snapshot(): FreezeMonitorState; restore(next: FreezeMonitorState): void; } /** @internal */ export declare function createFreezeMonitor(config?: { toleranceSpeed?: number; graceSeconds?: number; }): FreezeMonitor;