import { CircuitBreakerOptions } from './decorators/circuit-breaker.decorator';
import { CircuitBreakerState } from './types/circuit.type';
export declare class Circuit {
    id: string;
    caller: string;
    options: CircuitBreakerOptions;
    state: CircuitBreakerState;
    static exceptionPipes: Array<(e: Error) => Error>;
    constructor(caller: string, funcName: string, options: CircuitBreakerOptions);
    private _serializedOptions;
    get serializedOptions(): string;
    setState(state: CircuitBreakerState): Promise<boolean>;
    invoke(context: any, func: Function, trace: {
        stack?: string;
    }, args: any[]): any;
    private pushTimeoutError;
    private pushError;
}
export declare class CircuitBreakerManager {
    static circuits: {
        [key: string]: Circuit;
    };
    static invoke(context: any, func: Function, funcName: string, options: CircuitBreakerOptions, trace: {
        stack?: string;
    }, ...args: any[]): any;
    static terminate(): Promise<any>;
}
