import { Pathy } from '@bscotch/pathy';
import type { TracedClass } from '@bscotch/utility/browser';
import { GameMakerSearch } from './GameMakerLauncher.types.js';
import { GameMakerRuntime } from './GameMakerRuntime.js';
import { GameMakerRunOptions } from './GameMakerRuntime.types.js';
import { type Logger } from './utility.js';
export * from './GameMakerLauncher.types.js';
export interface GameMakerLauncher extends TracedClass {
}
export declare class GameMakerLauncher {
    /**
     * Open a project with a specified IDE and
     * Runtime version. If only the IDE version is
     * specified, its matching Runtime version will
     * be automatically selected.
     *
     * This method will guarantee that it will
     * *either* successfully open the project with
     * the target versions, or it will throw an error
     * and not open anything. In particular, if a
     * mismatched IDE and Runtime are specified,
     * and the Runtime is not installed, this method
     * will throw an error.
     */
    static openProject(projectYypPath: string | Pathy, openProjectOptions: {
        ideVersion: string;
        runtimeVersion?: string;
        programFiles?: string;
        disableUpdatePrompt?: boolean;
    }): Promise<import("./GameMakerIde.js").GameMakerRunningIde>;
    static runProject(target: GameMakerRunOptions, runtimeVersion: string, options?: {
        /**
         * Runtimes are installed with other runtimes,
         * but many runtimes have a bug or licensing
         * issue preventing them from working. You can
         * specify a specific runtime that *already exists*
         * to use.
         */
        runtimeInstallerVersion?: string;
    }): Promise<import("./GameMakerRuntime.types.js").GameMakerExecutionResults>;
    /**
     * List the installed Runtime versions
     * (many Runtime versions can be installed
     * at the same time, from both beta and stable
     * channels). Each Runtime comes with its own
     * GameMaker CLI artifact ("Igor").
     */
    static listInstalledRuntimes(options?: {
        logger?: Logger;
    }): Promise<GameMakerRuntime[]>;
    static findInstalledRuntime(searchParams?: GameMakerSearch, logger?: Logger): Promise<GameMakerRuntime | undefined>;
    /**
     * Install the specified Runtime version. Many
     * Runtime versions can be installed at the same
     * time. Installing a runtime makes it available
     * to be used, but does not make it the *active*
     * Runtime.
     *
     * @param usingVersion - Runtimes are installed using other runtimes. This parameter specifies which runtime to use to install the new one. If not provided, will try to use an existing installed runtime.
     */
    static installRuntime(version: string, usingVersion?: string): Promise<GameMakerRuntime>;
}
//# sourceMappingURL=GameMakerLauncher.d.ts.map