import { EventEmitter } from 'events';
import { CircuitBreakerConfig, CircuitBreakerState, CircuitBreakerMetrics } from '../types/gateway-types';
export declare class CircuitBreaker extends EventEmitter {
    private config;
    private state;
    private failures;
    private successes;
    private lastFailure?;
    private nextAttempt?;
    private isEnabled;
    constructor(config: CircuitBreakerConfig);
    execute<T>(fn: () => Promise<T>): Promise<T>;
    private onSuccess;
    private onFailure;
    private shouldAttemptReset;
    private trip;
    private reset;
    getMetrics(): CircuitBreakerMetrics;
    getState(): CircuitBreakerState;
    isCircuitOpen(): boolean;
    isCircuitClosed(): boolean;
    isCircuitHalfOpen(): boolean;
    enable(): void;
    disable(): void;
    forceOpen(): void;
    forceClose(): void;
    forceClear(): void;
}
//# sourceMappingURL=circuit-breaker.d.ts.map