import { EventEmitter } from 'events';
export interface ThrottleConfig {
    requestsPerSecond?: number;
    requestsPerMinute?: number;
    concurrentRequests?: number;
    delayBetweenRequests?: number;
    burstLimit?: number;
    burstWindow?: number;
    enableBackoff?: boolean;
    backoffMultiplier?: number;
    maxBackoffDelay?: number;
}
export interface ThrottleStats {
    totalRequests: number;
    successfulRequests: number;
    throttledRequests: number;
    failedRequests: number;
    averageResponseTime: number;
    currentConcurrentRequests: number;
    requestsInLastSecond: number;
    requestsInLastMinute: number;
    lastRequestTime?: Date;
    isThrottling: boolean;
}
export interface ThrottleRequest {
    id: string;
    url: string;
    method: string;
    timestamp: Date;
    priority: number;
    retryCount: number;
    maxRetries: number;
}
export declare class NetworkThrottler extends EventEmitter {
    private config;
    private requestQueue;
    private activeRequests;
    private requestHistory;
    private stats;
    private isThrottling;
    private lastRequestTime;
    private burstCount;
    private burstStartTime;
    private backoffDelay;
    constructor(config?: ThrottleConfig);
    throttleRequest<T>(requestFn: () => Promise<T>, url: string, method?: string, priority?: number, maxRetries?: number): Promise<T>;
    private addToQueue;
    private waitForSlot;
    private canExecuteRequest;
    private executeRequest;
    private updateStats;
    private updateCurrentRates;
    private recordRequestSuccess;
    private recordRequestFailure;
    private cleanupHistory;
    private delay;
    getStats(): ThrottleStats;
    getQueueSize(): number;
    getActiveRequests(): number;
    getThrottlingStatus(): boolean;
    updateConfig(newConfig: Partial<ThrottleConfig>): void;
    clearQueue(): void;
    pauseThrottling(): void;
    resumeThrottling(): void;
    getConfig(): ThrottleConfig;
    resetStats(): void;
    cleanup(): Promise<void>;
}
//# sourceMappingURL=network-throttler.d.ts.map