import { Logger } from '../types'; export declare enum CircuitState { CLOSED = "closed", OPEN = "open", HALF_OPEN = "half_open" } export interface CircuitBreakerConfig { failureThreshold: number; recoveryTimeout: number; successThreshold: number; monitoringWindow: number; minimumRequests: number; } export interface CircuitBreakerStats { state: CircuitState; failureCount: number; successCount: number; totalRequests: number; lastFailureTime?: Date; lastSuccessTime?: Date; stateChangedAt: Date; failureRate: number; } export declare class CircuitBreaker { private readonly logger; private readonly config; private state; private failureCount; private successCount; private totalRequests; private lastFailureTime?; private lastSuccessTime?; private stateChangedAt; private readonly requestHistory; constructor(logger: Logger, config?: Partial); execute(operation: () => Promise, operationName?: string): Promise; canExecute(): boolean; getStats(): CircuitBreakerStats; reset(): void; forceOpen(): void; private onSuccess; private onFailure; private shouldOpen; private shouldAttemptReset; private transitionToClosed; private transitionToOpen; private transitionToHalfOpen; private addToHistory; private getRecentRequests; private cleanupHistory; } export declare class CircuitBreakerManager { private readonly logger; private readonly breakers; private readonly defaultConfig; constructor(logger: Logger, defaultConfig?: Partial); getBreaker(serviceName: string, config?: Partial): CircuitBreaker; execute(serviceName: string, operation: () => Promise, config?: Partial): Promise; getAllStats(): Record; resetAll(): void; getOpenCircuits(): string[]; hasOpenCircuits(): boolean; } //# sourceMappingURL=circuit-breaker.d.ts.map