import { Type } from '@nestjs/common';
import { Strategy } from './strategies';
import { BulkheadOptions, CacheOptions, CircuitBreakerOptions, DedupeOptions, FallbackOptions, HealthCheckOptions, RetryOptions, ThrottleOptions, TimeoutOptions } from './interfaces';
export declare class ResilienceFactory {
    static createBulkheadStrategy(options: BulkheadOptions): Strategy<BulkheadOptions>;
    static createCacheStrategy(options: CacheOptions): Strategy<number>;
    static createCircuitBreakerStrategy(options: CircuitBreakerOptions): Strategy<CircuitBreakerOptions>;
    static createFallbackStrategy(options: FallbackOptions): Strategy<FallbackOptions>;
    static createHealthCheckStrategy(options: HealthCheckOptions): Strategy<HealthCheckOptions>;
    static createRetryStrategy(options: RetryOptions): Strategy<RetryOptions>;
    static createThrottleStrategy(options: ThrottleOptions): Strategy<ThrottleOptions>;
    static createTimeoutStrategy(options: TimeoutOptions): Strategy<number>;
    static createDedupeStrategy(options: DedupeOptions): Strategy<DedupeOptions>;
    static createStrategy<T>(strategy: Type<Strategy<T>>, options: T): Strategy<T>;
    static createCommand<T>(command: Type<T>, strategies: Strategy[]): T;
    createBulkheadStrategy(options: BulkheadOptions): Strategy<BulkheadOptions>;
    createCacheStrategy(options: CacheOptions): Strategy<number>;
    createCircuitBreakerStrategy(options: CircuitBreakerOptions): Strategy<CircuitBreakerOptions>;
    createFallbackStrategy(options: FallbackOptions): Strategy<FallbackOptions>;
    createHealthCheckStrategy(options: HealthCheckOptions): Strategy<HealthCheckOptions>;
    createRetryStrategy(options: RetryOptions): Strategy<RetryOptions>;
    createThrottleStrategy(options: ThrottleOptions): Strategy<ThrottleOptions>;
    createTimeoutStrategy(options: TimeoutOptions): Strategy<number>;
    createDedupeStrategy(options: DedupeOptions): Strategy<DedupeOptions>;
    createStrategy<T>(strategy: Type<Strategy<T>>, options: T): Strategy<T>;
    createCommand<T>(command: Type<T>, strategies: Strategy[]): T;
}
