/// <reference types="node" resolution-mode="require"/>
import { ChildProcess } from "child_process";
import { Account } from "./auth/account.js";
import { ContentVersion } from "./index.js";
import { Launcher } from "./launcher.js";
import { ModManager } from "./mods/manage/ModManager.js";
import { Library, MCVersion } from "./schemas.js";
/**
 * @internal
 */
export interface DMCLCExtraVersionInfo {
    version: string;
    loaders: LoaderInfo[];
    enableIndependentGameDir: boolean;
    beforeCommand?: string;
    usingJava?: string;
    moreGameArguments?: string[];
    moreJavaArguments?: string[];
}
/**
 * @internal
 */
export interface LoaderInfo {
    name: string;
    version: string;
}
/**
 * Version.
 * @public
 */
export declare class MinecraftVersion {
    private launcher;
    versionObject: MCVersion;
    extras: DMCLCExtraVersionInfo;
    name: string;
    versionRoot: string;
    versionLaunchWorkDir: string;
    versionJarPath: string;
    modManager: ModManager;
    /**
     * Creates a new version from name.
     * @param launcher - The launcher instance
     * @param name - The name of this version. The directory name, not always Minecraft version.
     * @returns The new created version object.
     */
    static fromVersionName(launcher: Launcher, name: string, enableIndependentGameDir?: boolean): MinecraftVersion;
    /**
     * Creates a new version from JSON object.
     * @param launcher - The launcher instance.
     * @param object - The Version JSON object.
     */
    private constructor();
    private detectExtras;
    private getVersionFromJar;
    /**
     * Run this version!
     * @throws RequestError
     * @param account - The using account.
     * @returns The Minecraft process. Both stdout and stderr uses UTF-8.
     */
    run(account: Account<never>): Promise<ChildProcess>;
    /**
     * Complete this version installation. Fix wrong libraries, asset files and version.jar. Won't fix version.json.
     */
    completeVersionInstall(alwaysDownloadNoDownloadsItems?: boolean): Promise<boolean>;
    private completeAssets;
    /**
     * INTERNAL API. MAY BE CHANGE WITHOUT NOTIFY.
     * Fix wrong and missing libraries. Used by Forge installing.
     * @param liblist - All the libraries.
     * @internal
     */
    completeLibraries(liblist: Library[], alwaysDownloadNoDownloadsItems?: boolean): Promise<boolean>;
    private getClassPath;
    private parseArgument;
    private getArguments;
    private extractNative;
    /**
     * Get all the installable loader versions on this Minecraft version. Doesn't consider loader conflicts.
     * @throws {@link FormattedError}
     * @throws RequestError
     * @param name - The name of loader.
     * @returns The versions of loader.
     */
    getSuitableLoaderVersions(name: string): Promise<string[]>;
    /**
     * Install a mod loader.
     * @throws {@link FormattedError}
     * @throws RequestError
     * @param name - Loader name.
     * @param loaderVersion - Loader version.
     */
    installLoader(name: string, loaderVersion: string): Promise<void>;
    saveExtras(): void;
    /**
     * @throws RequestError
     * @param contentVersion content version
     */
    installContentVersion(contentVersion: ContentVersion): Promise<void>;
}
