import { Dir, File } from "gfsl";
import { Artifact, MCJarTypeVal, VersionJson, VersionManifest } from "../../types";
/**
 * Version data is unique. Each version of the game will generate an unique version object.
 * Take note however. GMLL,unlike the default launcher, will store version data in the same folder as the version it is based upon.
 * If forge still works, but you cannot find the file connected to it...this is why.
 */
export default class Version {
    json: VersionJson;
    manifest: VersionManifest;
    name: string;
    folder: Dir;
    file: File;
    synced: boolean;
    override?: Artifact;
    private pre1d9;
    private _mergeFailure;
    /**Gets a set version based on a given manifest or version string. Either do not have to be contained within the manifest database. */
    static get(manifest: string | VersionManifest): Promise<Version>;
    /**
     *  DO NOT USE CONSTRUCTOR DIRECTLY. FOR INTERNAL USE ONLY!
     * @see {@link get} : This is the method that should instead be used
     */
    private constructor();
    mergeFailure(): boolean;
    /**
     * @returns Gets the version json file.
     * @see {@link json} for synchronous way to access this. The {@link get} method already calls this function and saves it accordingly.
     */
    getJSON(): Promise<VersionJson>;
    /**
     * Installs the asset files for a set version
     */
    getAssets(): Promise<void>;
    getRuntime(): Promise<import("../../types").MCRuntimeVal>;
    getLibs(): Promise<void>;
    getJar(type: MCJarTypeVal, jarFile: File): Promise<File>;
    getJarPath(): File;
    install(): Promise<void>;
    getJavaPath(): File;
    getClassPath(mode?: "client" | "server", jarpath?: File): string[];
}
