/**
 * 请求客户端核心实现
 *
 * 这是请求库的核心，负责协调适配器和插件系统
 */
import type { RequestOptions, Response, RequestClientConfig } from '../types';
import type { RequestAdapter } from '../adapter/RequestAdapter';
/**
 * 请求客户端类
 */
export declare class RequestClient {
    private config;
    private pluginManager;
    private adapter;
    private adapterName;
    /**
     * 获取当前适配器名称
     */
    getAdapterName(): string | null;
    constructor(config?: RequestClientConfig);
    /**
     * 初始化客户端
     */
    initialize(): Promise<void>;
    /**
     * 加载适配器
     */
    private loadAdapter;
    /**
     * 自动检测适配器
     */
    private detectAdapter;
    /**
     * 设置适配器
     *
     * @param adapter - 适配器实例或名称
     */
    setAdapter(adapter: RequestAdapter | string): Promise<void>;
    /**
     * 注册插件
     *
     * @param plugin - 请求插件
     */
    use(plugin: import('../plugin/RequestPlugin').RequestPlugin): void;
    /**
     * 注销插件
     *
     * @param name - 插件名称
     */
    unuse(name: string): void;
    /**
     * 执行请求
     *
     * @template TResponse - 响应数据类型
     * @param options - 请求配置选项
     * @returns Promise 解析为响应对象
     */
    request<TResponse = unknown>(options: RequestOptions<TResponse>): Promise<Response<TResponse>>;
    /**
     * 执行实际的请求逻辑
     *
     * @template TResponse - 响应数据类型
     * @param options - 请求配置选项
     * @returns Promise 解析为响应对象
     */
    private executeRequest;
    /**
     * GET 请求
     *
     * @template TResponse - 响应数据类型
     * @param url - 请求 URL
     * @param options - 请求配置选项
     * @returns Promise 解析为响应对象
     */
    get<TResponse = unknown>(url: string, options?: Omit<RequestOptions<TResponse>, 'url' | 'method'>): Promise<Response<TResponse>>;
    /**
     * POST 请求
     *
     * @template TResponse - 响应数据类型
     * @param url - 请求 URL
     * @param body - 请求体
     * @param options - 请求配置选项
     * @returns Promise 解析为响应对象
     */
    post<TResponse = unknown>(url: string, body?: RequestOptions<TResponse>['body'], options?: Omit<RequestOptions<TResponse>, 'url' | 'method' | 'body'>): Promise<Response<TResponse>>;
    /**
     * PUT 请求
     *
     * @template TResponse - 响应数据类型
     * @param url - 请求 URL
     * @param body - 请求体
     * @param options - 请求配置选项
     * @returns Promise 解析为响应对象
     */
    put<TResponse = unknown>(url: string, body?: RequestOptions<TResponse>['body'], options?: Omit<RequestOptions<TResponse>, 'url' | 'method' | 'body'>): Promise<Response<TResponse>>;
    /**
     * PATCH 请求
     *
     * @template TResponse - 响应数据类型
     * @param url - 请求 URL
     * @param body - 请求体
     * @param options - 请求配置选项
     * @returns Promise 解析为响应对象
     */
    patch<TResponse = unknown>(url: string, body?: RequestOptions<TResponse>['body'], options?: Omit<RequestOptions<TResponse>, 'url' | 'method' | 'body'>): Promise<Response<TResponse>>;
    /**
     * DELETE 请求
     *
     * @template TResponse - 响应数据类型
     * @param url - 请求 URL
     * @param options - 请求配置选项
     * @returns Promise 解析为响应对象
     */
    delete<TResponse = unknown>(url: string, options?: Omit<RequestOptions<TResponse>, 'url' | 'method'>): Promise<Response<TResponse>>;
    /**
     * 合并请求配置
     *
     * @param options - 请求配置选项
     * @returns 合并后的配置
     */
    private mergeOptions;
    /**
     * 创建请求错误
     */
    private createError;
    /**
     * 标准化错误
     */
    private normalizeError;
    /**
     * 销毁客户端
     */
    destroy(): Promise<void>;
}
//# sourceMappingURL=RequestClient.d.ts.map