import { type TimeSnapshot } from "./Time.js";
export type LoopMode = "manual" | "raf";
export interface FrameContext {
    readonly time: TimeSnapshot;
    readonly fixedSteps: number;
    readonly interpolationAlpha: number;
}
export type FrameCallback = (context: FrameContext) => void | Promise<void>;
export interface EngineLoopOptions {
    readonly mode: LoopMode;
    readonly fixedDelta: number;
    readonly maxDelta: number;
    readonly maxFixedSteps: number;
    readonly timeScale?: number;
}
export declare class EngineLoop {
    private readonly options;
    private readonly onFrame;
    private readonly time;
    private readonly accumulator;
    private running;
    private rafHandle;
    private lastTimestamp;
    constructor(options: EngineLoopOptions, onFrame: FrameCallback);
    start(): void;
    stop(): void;
    pause(): void;
    resume(): void;
    step(delta: number): Promise<FrameContext>;
    snapshot(): TimeSnapshot;
    private tickRaf;
}
//# sourceMappingURL=EngineLoop.d.ts.map