/** * Circuit Breaker Implementation using Opossum * Direct use of industry-standard circuit breaker with simplified interfaces * * This module provides simplified interfaces to opossum * while maintaining the same API for backward compatibility. */ import CircuitBreakerLib from 'opossum'; import { EventEmitter } from 'events'; export declare enum CircuitState { CLOSED = "closed", OPEN = "open", HALF_OPEN = "half-open" } export interface CircuitBreakerOptions { failureThreshold?: number; resetTimeout?: number; monitoringPeriod?: number; expectedRecoveryTime?: number; halfOpenMaxCalls?: number; timeout?: number; expectedError?: (error: Error) => boolean; adaptiveTimeout?: boolean; onStateChange?: (state: CircuitState) => void; onFailure?: (error: Error) => void; onRecovery?: () => void; name?: string; } export interface CircuitBreakerStats { state: CircuitState; failureCount: number; successCount: number; totalCalls: number; successRate: number; averageResponseTime: number; lastFailureTime?: number; lastSuccessTime?: number; isDisabled: boolean; adaptiveTimeout?: number; } /** * Create a circuit breaker using opossum * @param options - Circuit breaker options * @returns Opossum breaker instance */ export declare function createCircuitBreaker(options?: CircuitBreakerOptions): any; /** * Execute a function with circuit breaker protection * @param fn - Function to execute * @param options - Circuit breaker options * @returns Promise resolving to function result */ export declare function executeWithCircuitBreaker(fn: () => Promise, options?: CircuitBreakerOptions): Promise; /** * Get circuit breaker statistics * @param breaker - Opossum breaker instance * @returns CircuitBreakerStats */ export declare function getCircuitBreakerStats(breaker: any): CircuitBreakerStats; /** * Reset circuit breaker to closed state * @param breaker - Opossum breaker instance */ export declare function resetCircuitBreaker(breaker: any): void; /** * Wrap a function with circuit breaker protection * @param fn - Function to wrap * @param options - Circuit breaker options * @returns Wrapped function with circuit breaker protection */ export declare function withCircuitBreaker(fn: (...args: T) => Promise, options?: CircuitBreakerOptions): (...args: T) => Promise; /** * Utility class for managing multiple circuit breakers */ export declare class CircuitBreakerRegistry { private breakers; register(name: string, options?: CircuitBreakerOptions): any; get(name: string): any | undefined; getAllStats(): Record; resetAll(): void; shutdown(): void; } /** * Legacy CircuitBreaker class for backward compatibility * @deprecated Use createCircuitBreaker function instead */ export declare class CircuitBreaker extends EventEmitter { private opossumBreaker; private legacyOptions; constructor(options?: CircuitBreakerOptions); /** * Execute a function with circuit breaker protection */ execute(fn: () => Promise): Promise; /** * Get current circuit breaker state and statistics */ getStats(): CircuitBreakerStats; /** * Reset circuit breaker to closed state */ reset(): void; /** * Get current state from opossum */ private getCurrentState; get opossum(): any; } export declare const circuitBreakerRegistry: CircuitBreakerRegistry; export type { Options } from 'opossum'; declare const _default: { createCircuitBreaker: typeof createCircuitBreaker; executeWithCircuitBreaker: typeof executeWithCircuitBreaker; getCircuitBreakerStats: typeof getCircuitBreakerStats; resetCircuitBreaker: typeof resetCircuitBreaker; withCircuitBreaker: typeof withCircuitBreaker; CircuitBreakerRegistry: typeof CircuitBreakerRegistry; circuitBreakerRegistry: CircuitBreakerRegistry; CircuitBreaker: typeof CircuitBreaker; CircuitBreakerLib: typeof CircuitBreakerLib; }; export default _default; //# sourceMappingURL=circuitBreaker.d.ts.map