/** * Observability integration for resilience patterns */ import type { Logger } from '@orchestr8/logger'; import type { CircuitBreakerObserver } from './circuit-breaker.js'; import type { ResilienceContext } from './types.js'; /** * Resilience event types for structured logging */ export type ResilienceEventType = 'retry_attempt' | 'retry_success' | 'retry_exhausted' | 'retry_backoff' | 'timeout_triggered' | 'timeout_cleared' | 'circuit_state_change' | 'circuit_probe_attempt' | 'circuit_recovery' | 'composition_start' | 'composition_complete' | 'composition_error'; /** * Resilience telemetry interface for observability */ export interface ResilienceTelemetry { /** Log a resilience event */ logEvent(type: ResilienceEventType, context: ResilienceContext, metadata?: Record): void; /** Create a circuit breaker observer */ createCircuitBreakerObserver(): CircuitBreakerObserver; /** Start a timed operation */ startTimer(operation: string): () => number; /** Get the underlying logger */ getLogger(): Logger; } /** * Default implementation using @orchestr8/logger */ export declare class DefaultResilienceTelemetry implements ResilienceTelemetry { private readonly logger; constructor(logger?: Logger); logEvent(type: ResilienceEventType, context: ResilienceContext, metadata?: Record): void; createCircuitBreakerObserver(): CircuitBreakerObserver; startTimer(operation: string): () => number; getLogger(): Logger; private getLogLevel; private getEventMessage; } /** * Singleton instance for convenience */ export declare const defaultTelemetry: DefaultResilienceTelemetry; /** * Factory function to create telemetry with custom logger */ export declare function createResilienceTelemetry(logger?: Logger): ResilienceTelemetry; //# sourceMappingURL=observability.d.ts.map