/**
 * HTTP client with timeout, retry, and rate limiting
 */
interface RequestOptions {
    timeout?: number;
    retries?: number;
    retryDelay?: number;
    headers?: Record<string, string>;
}
interface PerformanceStats {
    totalRequests: number;
    successfulRequests: number;
    failedRequests: number;
    totalResponseTime: number;
    averageResponseTime: number;
    successRate: number;
    requestsByStatus: Record<number, number>;
    requestsByDomain: Record<string, number>;
}
declare class HttpClient {
    private requestQueue;
    private activeRequests;
    private readonly maxConcurrentRequests;
    private stats;
    /**
     * Make a GET request with timeout and retry logic
     */
    get(url: string, options?: RequestOptions): Promise<Response>;
    /**
     * Execute request with concurrency control
     */
    private executeWithQueue;
    /**
     * Fetch with retry logic and performance monitoring
     */
    private fetchWithRetry;
    /**
     * Update performance statistics
     */
    private updateStats;
    /**
     * Delay utility
     */
    private delay;
    /**
     * Get JSON response with error handling
     */
    getJson<T = unknown>(url: string, options?: RequestOptions): Promise<T>;
    /**
     * Get text response with error handling
     */
    getText(url: string, options?: RequestOptions): Promise<string>;
    /**
     * Get current queue status
     */
    getStatus(): {
        activeRequests: number;
        queuedRequests: number;
        maxConcurrent: 5;
    };
    /**
     * Get performance statistics
     */
    getPerformanceStats(): PerformanceStats;
    /**
     * Reset performance statistics
     */
    resetStats(): void;
    /**
     * Get formatted performance report
     */
    getPerformanceReport(): string;
}
export declare const httpClient: HttpClient;
export {};
//# sourceMappingURL=http-client.d.ts.map