import { Config } from "..";
import { HTTP, Logger } from "koishi";
import { IJMResponse } from "../types/JMClient";
/**
 * 文件是否存在
 * @param path 文件路径
 * @returns 文件是否存在
 */
export declare function fileExistsAsync(path: string): boolean;
/**
 * 获取文件大小
 * @param path 文件路径
 * @returns 文件大小
 */
export declare function fileSizeAsync(path: string): number;
/**
 * 文件名合法化
 * @param fileName 文件名
 * @returns 合法化后的文件名
 */
export declare function sanitizeFileName(fileName: string): string;
/**
 * 从github获取最新的JM域名
 * @returns 域名列表
 */
export declare function getDomainFromGithub(http: HTTP): Promise<any[]>;
/**
 * 限制Promise并发
 * @param promises Promise方法列表
 * @param limit 限制数量
 * @returns Promise结果
 */
export declare function limitPromiseAll<T>(promises: (() => Promise<T>)[], limit: number): Promise<T[]>;
/**
 * 重试请求，直到遇到特定错误或者次数耗尽
 * @param url 请求地址
 * @param method 请求方法
 * @param config 请求配置
 * @param retryIndex 尝试次数
 * @returns 请求结果
 */
export declare function requestWithRetry<T = IJMResponse>(url: string, method: "GET" | "POST", config: HTTP.RequestConfig, http: HTTP, pluginsConfig: Config, logger: Logger, retryIndex?: number): Promise<T>;
/**
 * 依次使用定义的地址尝试进行请求，遇到特定错误尝试切换下一个
 * @param url 请求地址
 * @param method 请求方法
 * @param config 请求配置
 * @param urlIndex 地址下标，默认从0开始尝试
 * @returns 请求结果
 */
export declare function requestWithUrlSwitch<T = IJMResponse>(url: string, method: "GET" | "POST", config: HTTP.RequestConfig, http: HTTP, pluginsConfig: Config, logger: Logger, type?: "IMAGE" | "CLIENT", urlIndex?: number): Promise<T>;
/**
 * 获取文件名和扩展名
 * @param filePath 文件路径
 * @returns 文件名、扩展名和路径组成的对象 { fileName, ext, dir }
 */
export declare function getFileInfo(filePath: string): {
    fileName: string;
    ext: string;
    dir: string;
};
/**
 * 删除路径下 days 之前的文件夹
 * @param path 路径
 * @param days 天数
 */
export declare function deleteFewDaysAgoFolders(path: string, days: number): Promise<void>;
export declare function formatFileName(originName: string, name: string, id: string, index?: number): string;
