export interface Library {
    name: string;
    downloads?: {
        artifact?: {
            path: string;
            url: string;
            sha1: string;
            size: number;
        };
    };
}
export interface VersionArguments {
    game: (string | {
        rules: any[];
        value: string | string[];
    })[];
    jvm: (string | {
        rules: any[];
        value: string | string[];
    })[];
}
export interface Version extends VersionJSON {
    inheritsFrom?: string;
    libraries: any[];
}
export interface VersionJSON {
    id: string;
    inheritsFrom?: string | undefined;
    time?: string | undefined;
    releaseTime?: string | undefined;
    type?: string | undefined;
    mainClass?: string | undefined;
    arguments?: VersionArguments | undefined;
    minecraftArguments?: string | undefined;
    libraries?: Library[] | undefined;
    assetIndex?: {
        id: string;
        url: string;
    } | undefined;
    assets?: string | undefined;
    javaVersion?: {
        majorVersion: number;
        component?: string;
    } | undefined;
    logging?: any;
}
export declare class VersionHandler {
    private root;
    private versionsRoot;
    constructor(minecraftRoot: string);
    loadVersion(versionId: string): VersionJSON;
    getLaunchData(versionId: string, gameDir?: string, assetsDir?: string): {
        mainClass: string;
        javaVersion: {
            majorVersion: number;
            component?: string;
        } | undefined;
        libraries: Library[];
        arguments: VersionArguments;
        assetIndex: {
            id: string;
            url: string;
        } | undefined;
        gameDir: string;
        assetsDir: string;
        rootDir: string;
    };
    private mergeVersions;
    private mergeArguments;
    private normalizeArguments;
}
