import { MinecraftLocation } from '@xmcl/core';
import { FetchOptions, InstallOptions } from './utils';
export interface FabricArtifactVersion {
    gameVersion?: string;
    separator?: string;
    build?: number;
    maven: string;
    version: string;
    stable: boolean;
}
export interface FabricArtifacts {
    mappings: FabricArtifactVersion[];
    loader: FabricArtifactVersion[];
}
export interface FabricLoaderArtifact {
    loader: FabricArtifactVersion;
    intermediary: FabricArtifactVersion;
    launcherMeta: {
        version: number;
        libraries: {
            client: {
                name: string;
                url: string;
            }[];
            common: {
                name: string;
                url: string;
            }[];
            server: {
                name: string;
                url: string;
            }[];
        };
        mainClass: {
            client: string;
            server: string;
        };
    };
}
/**
 * Get supported fabric game versions
 */
export declare function getFabricGames(options?: FetchOptions): Promise<string[]>;
/**
 * Get fabric-loader artifact list
 */
export declare function getFabricLoaders(options?: FetchOptions): Promise<FabricArtifactVersion[]>;
/**
 * Get fabric-loader artifact list by Minecraft version
 * @param minecraft The minecraft version
 */
export declare function getLoaderArtifactListFor(minecraft: string, options?: FetchOptions): Promise<FabricLoaderArtifact[]>;
/**
 * Get fabric-loader artifact list by Minecraft version
 * @param minecraft The minecraft version
 * @param loader The yarn-loader version
 */
export declare function getFabricLoaderArtifact(minecraft: string, loader: string, options?: FetchOptions): Promise<FabricLoaderArtifact>;
export interface FabricInstallOptions extends InstallOptions {
    side?: 'client' | 'server';
}
/**
 * Generate fabric version json from loader artifact.
 * @param loader The fabric loader artifact
 * @param side The side of the fabric
 * @param options
 * @returns The generated version json
 */
export declare function getVersionJsonFromLoaderArtifact(loader: FabricLoaderArtifact, side: 'client' | 'server', options?: FabricInstallOptions): {
    id: string;
    inheritsFrom: string;
    mainClass: string;
    libraries: {
        name: string;
        url: string;
    }[];
    arguments: {
        game: never[];
        jvm: never[];
    };
    releaseTime: string;
    time: string;
};
/**
 * Install fabric version json.
 *
 * If side is `server`, it requires the Minecraft version json to be installed.
 *
 * @returns The installed version id
 */
export declare function installFabricByLoaderArtifact(loader: FabricLoaderArtifact, minecraft: MinecraftLocation, options?: FabricInstallOptions): Promise<string>;
export interface InstallFabricVersionOptions extends FetchOptions {
    minecraftVersion: string;
    version: string;
    minecraft: MinecraftLocation;
    side?: 'client' | 'server';
}
export declare const DEFAULT_META_URL_FABRIC = "https://meta.fabricmc.net";
export declare function installFabric(options: InstallFabricVersionOptions): Promise<string>;
//# sourceMappingURL=fabric.d.ts.map