import { Module, ModuleOptions } from './index.js'; import { Circuit, CircuitFunction } from '../circuit.js'; import { EventEmitter } from '../helpers/event.js'; /** * Properties that customizes the bulkhead behavior. */ export declare abstract class BulkheadOptions extends ModuleOptions { /** * The number of concurrent requests that can be running in parallel. */ concurrentSize?: number; /** * The number of requests that can be queued. */ queueSize?: number; /** * The amount of time before a queued request is rejected. */ maxQueueWait?: number; } /** * Returned when a bulkhead module concurrent buffer and queue are overloaded. * @param message Circuit is overloaded */ export declare class BulkheadOverloadError extends Error { constructor(); } /** * Returned when a bulkhead module request has been waiting for too long in queue. * @param message Waiting for too long in queue */ export declare class BulkheadQueueWaitError extends Error { constructor(); } declare class BufferedPromise extends EventEmitter { private promise; private params; constructor(promise: CircuitFunction, ...params: any[]); execute(): Promise; } /** * The Bulkhead Module, that allows to limit concurrent executions. */ export declare class Bulkhead extends Module { /** * The number of concurrent requests that can be running in parallel. */ concurrentSize: number; /** * The number of requests that can be queued. */ queueSize: number; /** * The amount of time before a queued request is rejected. */ maxQueueWait: number; concurrentBuffer: BufferedPromise[]; queueBuffer: BufferedPromise[]; constructor(options?: BulkheadOptions); execute(circuit: Circuit, promise: CircuitFunction, ...params: any[]): Promise; private _promiseBulkhead; private _addBufferedPromise; } export {};