import type { GameState, GameSettings } from '../core/types';
import { GameClock } from '../core/GameClock';
import { GameConfig } from '../core/GameConfig';
import { EventBus } from '../core/EventBus';
import { ServiceLocator } from '../core/ServiceLocator';
import { World } from '../ecs/World';
import { InputManager } from '../input/InputManager';
import { AudioManager } from '../audio/AudioManager';
import { Camera2D } from '../rendering/Camera2D';
import { Renderer2D } from '../rendering/Renderer2D';
import { PhysicsEngine2D } from '../physics/PhysicsEngine2D';
import { SceneManager } from '../scene/SceneManager';
import { GameUI } from '../ui/GameUI';
import { PlayerManager, SplitScreenManager } from '../multiplayer/LocalMultiplayer';
export interface EngineOptions {
    canvas: HTMLCanvasElement;
    settings?: Partial<GameSettings>;
    debug?: boolean;
}
export declare class NiceGameEngine {
    readonly events: EventBus;
    readonly config: GameConfig;
    readonly clock: GameClock;
    readonly services: ServiceLocator;
    readonly world: World;
    readonly input: InputManager;
    readonly audio: AudioManager;
    readonly renderer: Renderer2D;
    readonly physics: PhysicsEngine2D;
    readonly scenes: SceneManager;
    readonly ui: GameUI;
    readonly players: PlayerManager;
    readonly splitScreen: SplitScreenManager;
    private loop;
    private canvas;
    private _state;
    private _debug;
    constructor(options: EngineOptions);
    get state(): GameState;
    get camera(): Camera2D;
    get debug(): boolean;
    set debug(v: boolean);
    start(): Promise<void>;
    stop(): void;
    pause(): void;
    resume(): void;
    destroy(): void;
    /** Alias for destroy() — unified cleanup pattern. */
    dispose(): void;
    private update;
    private fixedUpdate;
    private render;
}
