/**
 * Fleet-level cost circuit breaker.
 * Pauses all new cycles when rolling spend exceeds threshold.
 * @public
 */
export type CircuitState = "closed" | "open" | "half-open";
export interface CircuitBreakerConfig {
    /** Max USD spend in the window before tripping. Default: 10.0 */
    thresholdUsd: number;
    /** Rolling window duration in ms. Default: 3_600_000 (1h) */
    windowMs: number;
    /** How long to stay open before trying half-open. Default: 300_000 (5min) */
    cooldownMs: number;
}
export declare class FleetCircuitBreaker {
    private readonly cfg;
    private _state;
    private _openedAt;
    private _halfOpenConsumed;
    private _window;
    private readonly _now;
    constructor(config?: Partial<CircuitBreakerConfig>, _now?: () => number);
    /** Returns true if a new cycle should be ALLOWED. False = circuit open. */
    canProceed(): boolean;
    /** Record a cycle's cost. May trip the breaker. */
    recordCost(costUsd: number): void;
    /** Current state. */
    get state(): CircuitState;
    /** Manually reset (e.g. after operator review). */
    reset(): void;
    /** Total spend in current window. */
    get windowSpend(): number;
    private _evict;
    private _windowSpend;
    private _trip;
}
//# sourceMappingURL=circuit-breaker.d.ts.map