import { type FixedStepContext, type LoopOptions, type RenderContext } from './loop.js'; export interface GameFrameResult { readonly frame: number; readonly timeMs: number; readonly state?: FrameState; } export interface GameSimulation { init(startTimeMs: number): GameFrameResult | void; frame(step: FixedStepContext, command?: any): GameFrameResult; shutdown(): void; } export interface GameRenderSample extends RenderContext { readonly previous?: GameFrameResult; readonly latest?: GameFrameResult; } import { Camera } from './render/camera.js'; import { CommandRegistry } from './commands.js'; import { CvarRegistry } from './cvars.js'; export interface ClientRenderer { init(initial?: GameFrameResult): void; render(sample: GameRenderSample): any; shutdown(): void; camera?: Camera; } export interface EngineHostOptions { readonly loop?: Partial; readonly startTimeMs?: number; } export declare class EngineHost { private readonly game; private readonly client?; private readonly loop; private readonly startTimeMs; private previousFrame?; private latestFrame?; private started; private paused_; private latestCommand?; readonly commands: CommandRegistry; readonly cvars: CvarRegistry; constructor(game: GameSimulation, client?: ClientRenderer | undefined, options?: EngineHostOptions); start(): void; stop(): void; setPaused(paused: boolean): void; get paused(): boolean; pump(elapsedMs: number): void; getLatestFrame(): GameFrameResult | undefined; isRunning(): boolean; private stepSimulation; private renderClient; } //# sourceMappingURL=host.d.ts.map