/**
 * @author Luuxis
 * Luuxis License v1.0 (voir fichier LICENSE pour les détails en FR/EN)
 */
import type { MinecraftLibrary, MinecraftVersionJSON, ForgeLoaderData, NeoForgeLoaderData, FabricLoaderData, ArchiveEntry } from '../types.js';
/**
 * Parses a Gradle/Maven identifier string (like "net.minecraftforge:forge:1.19-41.0.63")
 * into a local file path (group/artifact/version) and final filename (artifact-version.jar).
 * Optionally allows specifying a native string suffix or forcing an extension.
 *
 * @param main         A Gradle-style coordinate (group:artifact:version[:classifier])
 * @param nativeString A suffix for native libraries (e.g., "-natives-linux")
 * @param forceExt     A forced file extension (default is ".jar")
 * @returns An object with `path` and `name`, where `path` is the directory path and `name` is the filename
 */
declare function getPathLibraries(main: string, nativeString?: string, forceExt?: string): {
    path: string;
    name: string;
    version: string;
};
/**
 * Computes a hash (default SHA-1) of the given file by streaming its contents.
 *
 * @param filePath   Full path to the file on disk
 * @param algorithm  Hashing algorithm (default: "sha1")
 * @returns          A Promise resolving to the hex string of the file's hash
 */
declare function getFileHash(filePath: string, algorithm?: string): Promise<string>;
/**
 * Determines if a given Minecraft version JSON is considered "old"
 * by checking its assets field (e.g., "legacy" or "pre-1.6").
 *
 * @param json The Minecraft version JSON
 * @returns true if it's an older version, false otherwise
 */
declare function isold(json: MinecraftVersionJSON): boolean;
/**
 * Returns metadata necessary to download specific loaders (Forge, Fabric, etc.)
 * based on a loader type string (e.g., "forge", "fabric").
 * If the loader type is unrecognized, returns undefined.
 *
 * @param type A string representing the loader type
 */
declare function loader(type: string): ForgeLoaderData | NeoForgeLoaderData | FabricLoaderData | undefined;
/**
 * A list of potential Maven mirrors for downloading libraries.
 */
declare const mirrors: string[];
/**
 * Reads a .jar or .zip file, returning specific entries or listing file entries in the archive.
 *
 * @param jar    Full path to the jar/zip file
 * @param file   The file entry to extract data from (e.g., "install_profile.json"). If null, returns all entries or partial lists.
 * @param prefix A path prefix filter (e.g., "maven/org/lwjgl/") if you want a list of matching files instead of direct extraction
 * @returns      A buffer or an array of { name, data }, or a list of filenames if prefix is given
 */
declare function getFileFromArchive(jar: string, file?: string | null, prefix?: string | null, includeDirs?: boolean): Promise<Buffer | string[] | ArchiveEntry[] | undefined>;
/**
 * Determines if a library should be skipped based on its 'rules' property.
 * For example, it might skip libraries if action='disallow' for the current OS,
 * or if there are specific conditions not met.
 *
 * @param lib A library object (with optional 'rules' array)
 * @returns true if the library should be skipped, false otherwise
 */
declare function skipLibrary(lib: MinecraftLibrary): boolean;
declare function fromAnyReadable(webStream: ReadableStream<Uint8Array>): import('node:stream').Readable;
export { getPathLibraries, getFileHash, isold, loader, mirrors, getFileFromArchive, skipLibrary, fromAnyReadable };
