import { GatewayError, type GatewayModelTarget } from "./types.js"; export type GatewayCircuitState = "closed" | "open" | "half-open"; export interface GatewayCircuitSnapshot { state: GatewayCircuitState; failures: number; inFlight: number; openUntil?: number; } export interface GatewayCircuitPermit { end(outcome: "success" | "retryable-error" | "neutral", retryAfterMs?: number): void; } export interface GatewayCircuitBreaker { acquire(target: GatewayModelTarget): GatewayCircuitPermit | undefined; snapshot(target: GatewayModelTarget): GatewayCircuitSnapshot | undefined; canAttempt(target: GatewayModelTarget): boolean; } export interface GatewayCircuitOptions { failureThreshold?: number; cooldownMs?: number; maxCooldownMs?: number; halfOpenMaxProbes?: number; maxTargets?: number; now?: () => number; onStateChange?: (event: { target: GatewayModelTarget; from: GatewayCircuitState; to: GatewayCircuitState; at: number; openUntil?: number; }) => void | Promise; } export declare class GatewayCircuitOpenError extends GatewayError { constructor(); } export declare const createGatewayCircuitBreaker: (options?: GatewayCircuitOptions) => GatewayCircuitBreaker; //# sourceMappingURL=circuit-breaker.d.ts.map