/** * Production resilience adapter implementation using composition engine */ import type { CompositionOrder, ResilienceAdapter, ResilienceInvocationContext, ResiliencePolicy } from '@orchestr8/schema'; import type { CircuitBreakerObserver } from './circuit-breaker.js'; import type { ResilienceTelemetry } from './observability.js'; /** * Production-ready resilience adapter with composition engine */ export declare class ProductionResilienceAdapter implements ResilienceAdapter { private readonly composer; private readonly circuitBreakers; private readonly cbAccessTimes; private readonly maxCircuitInstances; private readonly circuitObserver?; private readonly telemetry; constructor(options?: { maxInstances?: number; circuitObserver?: CircuitBreakerObserver; telemetry?: ResilienceTelemetry; }); /** * Legacy interface for backward compatibility * @deprecated Use applyNormalizedPolicy for better control */ applyPolicy(operation: (signal?: AbortSignal) => Promise, policy: ResiliencePolicy, signal?: AbortSignal, context?: ResilienceInvocationContext): Promise; /** * Apply resilience patterns with explicit composition order */ applyNormalizedPolicy(operation: (signal?: AbortSignal) => Promise, normalizedPolicy: ResiliencePolicy, compositionOrder: CompositionOrder, signal?: AbortSignal, context?: ResilienceInvocationContext): Promise; /** * Wrap operation with retry logic */ private wrapWithRetry; /** * Wrap operation with circuit breaker */ private wrapWithCircuitBreaker; /** * Wrap operation with timeout */ private wrapWithTimeout; /** * Derive circuit breaker key from config and context */ private deriveCircuitBreakerKey; /** * Compute a composite cache key that includes the base circuit key and a * stable hash of the circuit breaker configuration. This prevents reusing a * CircuitBreaker instance across different configs for the same base key. */ private computeCompositeKey; /** * Create a stable, deterministic hash for circuit breaker config. * Uses sorted JSON stringification and a lightweight FNV-1a hash. */ private hashCircuitBreakerConfig; /** * Normalize a resilience policy with default values */ private normalizePolicy; /** * Get circuit breaker state for monitoring (optional) */ getCircuitBreakerState(key: string): unknown; /** * Reset a specific circuit (for testing) */ resetCircuit(key: string): void; /** * Reset all circuits (for testing) */ resetAllCircuits(): void; /** Extract the base key from a composite key `${base}::${hash}` */ private extractBaseKey; }