import type { MiddlewareContext, Middleware } from './middleware';
/**
 * Map of all existing circuit breakers.
 * Entries are added in a lazy way.
 * TODO:
 *  The value type here should be CircuitBreaker, but this would make the Opossum types part of our public API.
 *  This happens although it is marked as internal, because transpilation includes internal.
 *  Adding CircuitBreaker will break transpilation on generation.
 * @internal
 */
export declare const circuitBreakers: Record<string, any>;
/**
 * @internal
 */
export declare const circuitBreakerDefaultOptions: CircuitBreakerOptions;
/**
 * Helper method to build a circuit breaker middleware.
 * @returns The middleware adding a circuit breaker to the function.
 */
export declare function circuitBreaker<ArgumentT, ReturnT, ContextT extends MiddlewareContext<ArgumentT>>(): Middleware<ArgumentT, ReturnT, ContextT>;
/**
 * This is partially copied from CircuitBreaker.Options of `@types/opossum`.
 * @internal
 */
export interface CircuitBreakerOptions {
    /**
     * @internal
     */
    timeout?: number | false | undefined;
    /**
     * @internal
     */
    errorThresholdPercentage?: number | undefined;
    /**
     * @internal
     */
    volumeThreshold?: number | undefined;
    /**
     * @internal
     */
    resetTimeout?: number | undefined;
    /**
     * @internal
     */
    cache?: boolean | undefined;
}
