import { type Scheduler } from '../scheduler/scheduler'; /** * A Scheduler that wraps a parent and scales the time its members see. This is * the pause / timeScale mechanism: the integrator behind every member still * only ever steps by SIMULATION_TIMESTEP_S, so timeScale changes how many * steps a wall-frame consumes, never the step size. The 60/120/144 Hz * convergence the physics asserts is therefore structurally untouched. * * The scope subscribes the parent once per phase and fans a single shared * FrameInfo to its members (no per-member parent subscription). On pause() it * drops the parent subscription so the rAF loop sleeps. */ export interface TimeScope extends Scheduler { /** Freeze: drop the parent subscription so the loop can sleep. Resumable. */ pause(): void; /** Resume real time, re-subscribing the parent. No-op if not paused. */ resume(): void; isPaused(): boolean; /** Time dilation. 0 stops integration but stays subscribed (unlike pause). */ setTimeScale(rate: number): void; getTimeScale(): number; /** Drop the parent subscription and forget all members. */ dispose(): void; } export interface TimeScopeOptions { /** Parent scheduler; defaults to the shared rAF loop. */ scheduler?: Scheduler; /** Initial time scale. Default 1. */ timeScale?: number; /** Start paused (no parent subscription). Default false. */ paused?: boolean; } export declare function timeScope(options?: TimeScopeOptions): TimeScope; //# sourceMappingURL=time-scope.d.ts.map