/** * Resilience pattern composition engine * Handles middleware chaining and validation for resilience patterns */ import type { CompositionOrder } from '@orchestr8/schema'; import type { CircuitBreakerConfig, NormalizedResilienceConfig, ResilienceContext, ResilientOperation, RetryConfig, TimeoutConfig } from './types.js'; /** * Middleware function type - wraps an operation with resilience behavior */ export type ResilienceMiddleware = (operation: ResilientOperation, context?: ResilienceContext) => Promise; /** * Wrapper function type for individual resilience patterns */ export type PatternWrapper = (operation: ResilientOperation, config: C, context?: ResilienceContext) => Promise; /** * Resilience composition engine * Validates and composes resilience patterns according to specified order */ export declare class ResilienceComposer { private retryWrapper?; private circuitBreakerWrapper?; private timeoutWrapper?; /** * Set the retry pattern wrapper implementation */ setRetryWrapper(wrapper: PatternWrapper): void; /** * Set the circuit breaker pattern wrapper implementation */ setCircuitBreakerWrapper(wrapper: PatternWrapper): void; /** * Set the timeout pattern wrapper implementation */ setTimeoutWrapper(wrapper: PatternWrapper): void; /** * Compose resilience patterns into a middleware chain * @param config - Normalized resilience configuration * @param compositionOrder - The order in which to compose patterns * @returns A middleware function that applies all configured patterns */ compose(config: NormalizedResilienceConfig, compositionOrder: CompositionOrder): ResilienceMiddleware; /** * Validate if a composition order is supported */ private isValidCompositionOrder; } /** * Default retry wrapper implementation */ export declare function defaultRetryWrapper(operation: ResilientOperation, config: RetryConfig, context?: ResilienceContext): Promise; /** * Default timeout wrapper implementation */ export declare function defaultTimeoutWrapper(operation: ResilientOperation, config: TimeoutConfig, context?: ResilienceContext): Promise; /** * Default circuit breaker wrapper using CircuitBreaker class */ export declare function defaultCircuitBreakerWrapper(operation: ResilientOperation, config: CircuitBreakerConfig, context?: ResilienceContext): Promise;