import StreamZip from "node-stream-zip";
import { Launcher } from "../../launcher.js";
import { ModDisplayInfo, ModInfo } from "../../mods/mod.js";
import { MCVersion } from "../../schemas.js";
import { MinecraftVersion } from "../../version.js";
import { FabricModJson } from "../fabric_schemas.js";
import { Loader, ModLoadingIssue } from "../loader.js";
import { FabricLikeVersionInfo } from "./fabriclike_version_info.js";
export declare abstract class FabricLikeLoader<T extends FabricLikeVersionInfo, M> implements Loader<M | FabricModJson> {
    abstract loaderMaven: string;
    abstract metaURL: string;
    abstract name: string;
    intermediaryMaven: string;
    protected readonly launcher: Launcher;
    constructor(launcher: Launcher);
    abstract checkMods(mods: ModInfo<M>[], mc: string, loader: string): ModLoadingIssue[];
    abstract findInVersion(MCVersion: MCVersion): string | undefined;
    abstract getModInfo(mod: M | FabricModJson): ModDisplayInfo;
    findModInfos(path: string): Promise<ModInfo<FabricModJson | M>[]>;
    findModInfosInZip(zip: StreamZip.StreamZipAsync): Promise<ModInfo<FabricModJson | M>[]>;
    private readonly cachedLoaderVersions;
    /**
     *
     * @throws {@link FormattedError}
     * @param MCVersion - Minecraft version.
     * @returns Loader versions.
     */
    getSuitableLoaderVersions(MCVersion: MinecraftVersion): Promise<string[]>;
    install(MCVersion: MinecraftVersion, version: string): Promise<boolean>;
}
/**
 * See net.fabricmc.loader.impl.game.minecraft.McVersionLookup#normalizeVersion
 * @param mc - Original Minecraft version.
 */
export declare function normalizeVersion(mc: string): string;
export declare function checkMatch(current: string, required: string | string[]): boolean;
export declare function formatDepVersion(version: string | string[], launcher: Launcher): string;
