import type { Context } from '../context.js'; export interface CircuitBreakerOptions { failureThreshold?: number; recoveryTimeout?: number; monitoringPeriod?: number; name?: string; } export declare enum CircuitState { CLOSED = "CLOSED", OPEN = "OPEN", HALF_OPEN = "HALF_OPEN" } export declare class CircuitBreaker { private state; private failures; private lastFailureTime; private nextAttemptTime; private options; constructor(options?: CircuitBreakerOptions); execute(fn: () => Promise): Promise; private onSuccess; private onFailure; getState(): CircuitState; getStats(): { name: string; state: CircuitState; failures: number; failureThreshold: number; lastFailureTime: number; nextAttemptTime: number; timeUntilRetry: number; }; reset(): void; } export declare function circuitBreakerPlugin(options?: CircuitBreakerOptions): (ctx: Context, next: () => Promise) => Promise; export declare function createServiceCircuitBreaker(serviceName: string, options?: CircuitBreakerOptions): CircuitBreaker; export declare function callExternalService(url: string, options?: RequestInit, circuitBreaker?: CircuitBreaker): Promise; //# sourceMappingURL=circuitBreaker.d.ts.map