import type { CoreObjectEvents } from '../object'; import { CoreObject } from '../object'; export interface MainLoopEvents extends CoreObjectEvents { process: [delta: number]; } export interface MainLoop { on: (event: K, listener: (...args: MainLoopEvents[K]) => void) => this; once: (event: K, listener: (...args: MainLoopEvents[K]) => void) => this; off: (event: K, listener: (...args: MainLoopEvents[K]) => void) => this; emit: (event: K, ...args: MainLoopEvents[K]) => this; } export interface MainLoopProperties { fps: number; speed: number; } export declare class MainLoop extends CoreObject { fps: number; speed: number; protected _starting: boolean; protected _nextDeltaTime: number; protected _startedProcess?: (delta: number) => void; get starting(): boolean; get spf(): number; constructor(properties?: Partial); start(process: (delta: number) => void): void; stop(): void; protected _onTicker(): void; protected _destroy(): void; }