import { EventEmitter } from "eventemitter3";
import { type Godot } from "@gdquest/gd-types";
import { CodeController } from "./code.mts";
import { GdPlayerController } from "./gdplayer.mts";
import { type GdExerciseFile, type GdExerciseLog } from "../utils.mts";
import { ConsoleController } from "./console.mts";
import { TestController } from "./test.mts";
export interface ControllerConstructorParams extends CreateMainControllerOptions {
    projectUrl: string;
    mainScene: string;
    projectFiles: Map<string, GdExerciseFile>;
}
export interface MainControllerEvents {
    ready: () => void;
}
export declare class MainController extends EventEmitter<MainControllerEvents> {
    projectId: string;
    _projectUrl: string;
    _project: string;
    _mainScene: string;
    _files: CreateMainControllerFile[];
    _Engine: Godot.EngineClass;
    _projectFiles: Map<string, GdExerciseFile>;
    _size: Record<string, number>;
    get canRestart(): boolean;
    _codeController: CodeController;
    get codeController(): CodeController;
    set codeController(_: CodeController);
    _gdPlayerController: GdPlayerController;
    get gdPlayerController(): GdPlayerController;
    set gdPlayerController(_: GdPlayerController);
    _testController: TestController;
    get testController(): TestController;
    set testController(_: TestController);
    _consoleController: ConsoleController;
    get consoleController(): ConsoleController;
    set consoleController(_: ConsoleController);
    _snippet: string;
    get isSnippet(): boolean;
    set isSnippet(_: boolean);
    constructor(options: ControllerConstructorParams);
    _loadProjectFiles(): Promise<void>;
    _launchGdPlayer(): Promise<void>;
    _onGdPlayerLog(message: string): Promise<void>;
    _onGdPlayerLogError(message: string): Promise<void>;
    _onLogTest(entry: GdExerciseLog): void;
    loadFile(file: GdExerciseFile): Promise<void>;
    save(): void;
    revert(): void;
    dispose(): void;
    restart(): void;
    setDarkMode(enabled: boolean): void;
    logTest(entry: GdExerciseLog): void;
}
export interface CreateMainControllerFile {
    path: string;
    focus: boolean;
    override: string | null;
}
export interface CreateMainControllerOptions {
    projectUrl: string;
    project: string;
    mainScene: string;
    files: CreateMainControllerFile[];
    Engine: Godot.EngineClass;
    isDarkMode?: boolean;
    size: Record<string, number>;
    snippet?: string;
}
export declare function createMainController(options: CreateMainControllerOptions): Promise<MainController>;
//# sourceMappingURL=main.d.mts.map