/**
 * 请求缓存与去重工具
 * 功能：
 * - 自动缓存管理（支持自定义 TTL）
 * - 请求去重（相同请求只发送一次）
 * - 过期缓存清理
 * - 缓存手动控制
 */
type RequestFn<TParams, TResult> = (params: TParams) => Promise<TResult>;
interface CacheEntry<TResult> {
    data: TResult;
    expireAt: number;
}
interface RequestCacheConfig {
    defaultTTL?: number;
    maxCacheSize?: number;
    enableLogging?: boolean;
}
/**
 * 请求缓存工具类
 * 提供缓存、去重、过期清理等功能
 */
declare class RequestCache {
    private pendingMap;
    private cacheMap;
    private readonly defaultTTL;
    private readonly maxCacheSize;
    private readonly enableLogging;
    constructor(config?: RequestCacheConfig);
    /**
     * 生成唯一 key
     * @param url 唯一逻辑标识（非实际 API 地址）
     * @param params 请求参数
     */
    private getKey;
    /**
     * 处理带缓存与去重的请求
     * @param url 唯一逻辑标识（非实际 API 地址）
     * @param params 请求参数
     * @param requestFn 实际请求函数
     * @param ttl 可选，缓存有效期（毫秒），不传则使用 defaultTTL
     * @returns 请求结果
     */
    handleRequest<TParams, TResult>(url: string, params: TParams, requestFn: RequestFn<TParams, TResult>, ttl?: number): Promise<TResult>;
    /**
     * 清空全部缓存
     */
    clearCache(): void;
    /**
     * 清空 pending 状态
     */
    clearPending(): void;
    /**
     * 清空全部缓存和 pending 请求
     */
    clearAll(): void;
    /**
     * 删除指定 key 的缓存
     * @param url 逻辑标识
     * @param params 请求参数
     */
    invalidateCache(url: string, params?: any): void;
    /**
     * 定期清理过期缓存（优先删除过期项）
     */
    private cleanupExpiredCache;
    /**
     * 优先删除过期项，如果过期项不足则删除最旧的缓存
     */
    private clearExpiredFirst;
    /**
     * 获取缓存统计信息
     */
    getCacheStats(): {
        cacheSize: number;
        maxCacheSize: number;
        pendingSize: number;
        cacheUtilization: string;
    };
    /**
     * 获取缓存详情（调试用）
     */
    getCacheDetails(): Record<string, any>;
    /**
     * 内部日志方法
     */
    private log;
}
/**
 * 全局请求缓存实例
 * 可根据需要调整配置
 */
export declare const withRequestCache: RequestCache;
export declare const createRequestCache: (config: RequestCacheConfig) => RequestCache;
export type { RequestFn, CacheEntry, RequestCacheConfig };
