import { MethodName, RPCParams, RPCResult, RPCClientConfig } from "./types";
/**
 * JSON-RPC 2.0 客户端实现
 * @template T - 定义RPC方法的类型结构
 */
export declare class RPCClient<T> {
    private id;
    private config;
    private abortController;
    private pendingRequests;
    /**
     * 构造函数
     * @param config 客户端配置
     * {
     *   endpoint: string, // RPC服务器地址
     *   timeout?: number, // 超时时间(毫秒)
     *   headers?: Record<string, string> // 自定义请求头
     * }
     */
    constructor(config: RPCClientConfig);
    /**
     * 执行RPC调用
     * @param method RPC方法名
     * @param params 方法参数
     * @returns 返回RPC调用结果的Promise
     */
    call<M extends MethodName<T>>(method: M, ...params: RPCParams<T, M>): Promise<RPCResult<T, M>>;
    /**
     * 取消所有进行中的请求
     */
    abortAll(): void;
    /**
     * 处理HTTP响应并提取RPC结果
     * @param response Axios响应对象
     * @param request 原始RPC请求
     * @returns 解析后的结果
     * @throws 当响应不符合规范时抛出RPCError
     */
    private processResponse;
    /**
     * 处理JSON-RPC错误响应
     * @param error JSON-RPC错误对象
     * @throws 根据错误类型抛出BackendError或RPCError
     */
    private handleErrorResponse;
    /**
     * 解析JSON-RPC响应
     * @param response 原始响应数据
     * @returns 解析后的JSON-RPC响应
     * @throws 当响应格式无效时抛出RPCError
     */
    private parseJSONResponse;
    /**
     * 处理请求过程中的错误
     * @param error 捕获的错误对象
     * @returns 适当封装的错误对象
     */
    private handleError;
    /**
     * 处理Axios特有的错误
     * @param error Axios错误对象
     * @returns 封装的网络或RPC错误
     */
    private handleAxiosError;
    /**
     * 验证参数是否符合JSON序列化要求
     * @param params 参数数组
     * @throws 当参数无效时抛出RPCError
     */
    private validateParams;
    /**
     * 生成下一个请求ID
     * @returns 唯一且没有冲突的请求ID
     */
    private nextID;
}
