export interface CircuitBreakerConfig {
    failureThreshold: number;
    recoveryTimeout: number;
    monitoringWindow: number;
    minimumRequests: number;
    successThreshold: number;
}
export declare enum CircuitBreakerState {
    CLOSED = "CLOSED",
    OPEN = "OPEN",
    HALF_OPEN = "HALF_OPEN"
}
export interface CircuitBreakerStats {
    state: CircuitBreakerState;
    failureCount: number;
    successCount: number;
    totalRequests: number;
    lastFailureTime: number | null;
    lastSuccessTime: number | null;
    nextAttemptTime: number | null;
}
export declare class EnhancedCircuitBreakerService {
    private readonly logger;
    private readonly circuitBreakers;
    private readonly requestHistory;
    private readonly defaultConfig;
    execute<T>(operationName: string, operation: () => Promise<T>, config?: Partial<CircuitBreakerConfig>): Promise<T>;
    executeWithFallback<T>(operationName: string, operation: () => Promise<T>, fallback: () => Promise<T>, config?: Partial<CircuitBreakerConfig>): Promise<T>;
    canExecute(operationName: string, config: CircuitBreakerConfig): boolean;
    getStats(operationName: string): CircuitBreakerStats | null;
    getAllStats(): Record<string, CircuitBreakerStats>;
    reset(operationName: string): void;
    forceOpen(operationName: string, recoveryTimeout?: number): void;
    forceClose(operationName: string): void;
    private getOrCreateStats;
    private recordSuccess;
    private recordFailure;
    private getRecentRequests;
    private cleanupHistory;
    getFailureRate(operationName: string, windowMs?: number): number;
    getSuccessRate(operationName: string, windowMs?: number): number;
}
