/**
 * @author NovaStepStudios
 * @alias StepnickaSantiago
 * @license Apache-2.0
 * @link https://www.apache.org/licenses/LICENSE-2.0
 */
import { EventEmitter } from "events";
import { BundleItem } from "./Minecraft/Bundle";
type VersionInput = string | {
    id: string;
    [key: string]: any;
};
type JavaOption = boolean | string | "auto";
interface DownloaderOptions {
    root: string;
    version: VersionInput;
    concurrency?: number | false | undefined;
    installJava?: JavaOption | undefined;
    variantJava?: "release" | "snapshot" | "alpha" | "beta" | undefined;
    bundle?: BundleItem[] | undefined;
}
interface InstancieOptions extends DownloaderOptions {
    instancieId?: string;
    manifest?: {
        name: string;
        description?: string | string[];
        icon?: string;
        created?: string;
    };
    userConfig?: any;
    gameConfig?: {
        resolution?: {
            width: string;
            height: string;
            fullscreen: boolean;
        };
        memory?: {
            min: string;
            max: string;
        };
        javaArgs?: string[];
        gameArgs?: string[];
    };
}
export declare class MinecraftDownloader extends EventEmitter {
    private tasks;
    private completedSteps;
    private totalSteps;
    private controller;
    constructor();
    start(options: DownloaderOptions): Promise<void>;
    createInstancie(options: InstancieOptions): Promise<void>;
    private getRecommendedJavaVersion;
    stop(): void;
    private guardTask;
    private downloadLoggingXml;
    private runDownloader;
    private emitStepDone;
    private handleError;
    private saveErrorLog;
    private ensureLauncherProfiles;
    private emitProgress;
}
export {};
