import { Circuit } from '../circuit-breaker-manager';
import { CircuitBreakerScope } from '../types/circuit.type';
export interface CircuitBreakerRule {
    exceptions: Array<typeof Error | any>;
    times: number;
    inSeconds: number;
}
export interface CircuitBreakerOptions {
    scope?: CircuitBreakerScope;
    fallback: Function | string | Object;
    ignore?: (error: any, circuit: Circuit) => Promise<boolean>;
    onError?: (error: any, circuit: Circuit) => Promise<void>;
    onCircuitOpen?: (circuit: Circuit) => Promise<boolean>;
    onCircuitClose?: (circuit: Circuit) => Promise<boolean>;
    timeoutMilliSeconds?: number;
    rules: CircuitBreakerRule[];
    fallbackForSeconds: number;
}
export declare function CircuitBreaker(options: CircuitBreakerOptions): MethodDecorator;
