/**
 * HTTP 客户端模块
 * 封装 MCP Tool 的 HTTP 调用
 */
import type { ServerConfig } from "./types.js";
export interface McpToolResponse {
    error?: string;
    [key: string]: unknown;
}
export declare class HttpClient {
    private serverConfig;
    private mcpHttpUrl;
    /**
     * 共享的 token 刷新 Promise，避免并发请求重复刷新。
     */
    private tokenRefreshPromise;
    constructor(serverConfig: ServerConfig);
    /**
     * 调用 MCP Tool。
     * 主流程：确保 token -> 循环执行请求（超时/网络/5xx 自动重试，间隔 5s，累计最多 30s）。
     */
    callTool<T = unknown>(toolName: string, args: Record<string, unknown>): Promise<T>;
    /**
     * 执行一次 MCP Tool HTTP 请求。
     * 主流程：构建当前 runtime token 请求头 -> POST 到调度中心 MCP 入口 -> 返回原始响应供调用方判断是否刷新 token。
     */
    private executeToolRequest;
    /**
     * 执行可配置硬超时的 fetch。
     * 主流程：创建 AbortController -> 超时 abort -> 将 abort 转成明确的工具超时错误。
     */
    private fetchWithTimeout;
    private resolveRequestTimeoutMs;
    private resolveRetryIntervalMs;
    private resolveRetryMaxAccumulatedMs;
    /**
     * 判断异常是否可重试（超时、网络错误等瞬态异常）。
     */
    private isTransientError;
    /**
     * 判断 HTTP 状态码是否可重试。
     * 5xx（服务端错误）或 429（限流）会自动重试；4xx 其他错误不重试。
     */
    private isRetryableHttpStatus;
    /**
     * 重试前等待（取重试间隔与 deadline 剩余时间的较小值），并打印告警日志。
     */
    private delayForRetry;
    /**
     * 构建 MCP HTTP 请求头。
     * 主流程：始终声明 JSON 内容类型 -> 当 runtime token 存在时同时兼容 X-Runtime-Token 与 Bearer 头。
     */
    private buildRequestHeaders;
    private ensureRuntimeAccessToken;
    /**
     * 向 bridge 查询最新 token，若获取到新 token 则更新本地配置。
     * 同一时刻仅一个刷新请求生效，并发调用共享同一 Promise。
     */
    private tryRefreshToken;
    private doRefreshToken;
    /**
     * 解析 MCP HTTP URL
     */
    private resolveMcpHttpUrl;
    /**
     * 获取 MCP HTTP URL
     */
    getMcpHttpUrl(): string;
}
//# sourceMappingURL=http-client.d.ts.map