export declare enum CircuitState {
    CLOSED = "closed",
    OPEN = "open",
    HALF_OPEN = "half_open"
}
export interface CircuitBreakerConfig {
    failureThreshold: number;
    timeoutThreshold: number;
    resetTimeout: number;
    halfOpenMaxCalls: number;
    successThreshold: number;
    monitoringInterval: number;
}
export interface CircuitBreakerStats {
    state: CircuitState;
    failureCount: number;
    successCount: number;
    totalRequests: number;
    lastFailureTime: Date | null;
    lastSuccessTime: Date | null;
    uptime: number;
    failureRate: number;
    averageResponseTime: number;
    timeoutCount: number;
}
export interface CircuitBreakerResult<T> {
    success: boolean;
    data?: T;
    error?: Error;
    fromCache?: boolean;
    executionTime: number;
    circuitState: CircuitState;
}
export declare class CircuitBreakerService {
    private readonly logger;
    private readonly circuits;
    private readonly destroy$;
    constructor();
    createCircuit(name: string, config?: Partial<CircuitBreakerConfig>): string;
    execute<T>(circuitName: string, operation: () => Promise<T>, fallback?: () => Promise<T>): Promise<CircuitBreakerResult<T>>;
    getStats(circuitName: string): CircuitBreakerStats | null;
    getAllStats(): Map<string, CircuitBreakerStats>;
    forceOpen(circuitName: string): boolean;
    forceClose(circuitName: string): boolean;
    reset(circuitName: string): boolean;
    getCircuitNames(): string[];
    removeCircuit(circuitName: string): boolean;
    private startMonitoring;
    onDestroy(): void;
}
