import * as file from './file';
import * as git from './git';
import * as link from './link';
import * as npm from './npm';
import * as tar from './tar';
export declare type Downloader = {
    /**
     * 用于判断下载器可支持的 链接或协议
     */
    supportProtocol: (url: string) => boolean;
    /**
     * 下载模块
     */
    download: (...args: any[]) => Promise<void>;
    /**
     * 解析 url 或 下载选项
     */
    parseOptions: (urlOrOptions: any) => Record<string, any>;
    /**
     * 获取名称
     */
    getName: (options: any) => string;
};
export { file, link, git, tar, npm };
/**
 * 注册新的下载器
 * @param type - 下载器类型
 * @param downloader - 下载器
 */
export declare function registerDownloader(type: string, downloader: Downloader): void;
/**
 * 获取下载模块名称
 * @param type - 下载类型
 * @param options - 下载配置
 * @returns 模块名称
 */
export declare function getModuleName(type: string, options: Record<string, any>): string;
/**
 * 基于下载配置选择下载方式
 * @param options - 下载配置
 * @returns 下载类型
 */
export declare function chooseDownloadType(options: Record<string, any>): string | void;
/**
 * 获取所有下载类型
 */
export declare function getAllDownloadTypes(): string[];
/**
 * 解析下载链接或选项
 * @param type - 下载类型
 * @param options -  下载链接或选项
 * @returns 解析后的下载配置
 */
export declare function parseOptions(type: string, options: string | Record<string, any>): Record<string, any>;
/**
 * 尝试通过不同的方式下载模块
 * @param type - 下载方式
 * @param options - 下载配置
 * @param dest - 下载地址
 */
export declare function download(type: string, options: Record<string, any>, dest: string): Promise<void>;
/**
 * 基于不同的下载方式解析下载链接或选项，并下载
 * @param type - 下载方式
 * @param urlOrOptions - 下载链接或选项
 * @param dest - 下载地址
 */
export declare function parseAndDownload(type: string, urlOrOptions: string | Record<string, any>, dest: string): Promise<void>;
/**
 * 基于 url 自动判断支持的下载器类型及下载选项
 * @param url - 下载链接或地址
 * @returns 下载器类型及下载选项
 */
export declare function autoDetectDownloaderTypeAndOptions(url: string): {
    type: string;
    options: Record<string, any>;
};
/**
 * 自动基于不同的协议来下载模块
 * @param url - 下载链接
 * @param dest - 下载地址
 */
export declare function tryDownloadByUrl(url: string, dest: string): Promise<void>;
