export type QualityIntelligenceCircuitState = "closed" | "open" | "half-open";
export interface QualityIntelligenceCircuitBreakerState {
    readonly state: QualityIntelligenceCircuitState;
    readonly consecutiveFailures: number;
    readonly openedAtMs: number | null;
}
export interface QualityIntelligenceCircuitBreakerConfig {
    readonly failureThreshold: number;
    readonly cooldownMs: number;
    readonly halfOpenProbes: number;
}
export declare const DEFAULT_QUALITY_INTELLIGENCE_CIRCUIT_BREAKER_CONFIG: QualityIntelligenceCircuitBreakerConfig;
export declare function createCircuitBreakerState(): QualityIntelligenceCircuitBreakerState;
export type QualityIntelligenceCircuitEvent = {
    readonly kind: "success";
} | {
    readonly kind: "failure";
} | {
    readonly kind: "probe";
} | {
    readonly kind: "tick";
    readonly nowMs: number;
};
export declare function transitionOn(state: QualityIntelligenceCircuitBreakerState, event: QualityIntelligenceCircuitEvent, config?: QualityIntelligenceCircuitBreakerConfig, nowMs?: number): QualityIntelligenceCircuitBreakerState;
export declare function shouldAttempt(state: QualityIntelligenceCircuitBreakerState): boolean;
//# sourceMappingURL=circuitBreaker.d.ts.map