import { Module, ModuleOptions } from './index.js';
import { Circuit, CircuitFunction } from '../circuit.js';

/**
 * Properties that customizes the timeout behavior.
 */
export declare abstract class TimeoutOptions extends ModuleOptions {
    /**
     * The amount of time before a promise is rejected.
     */
    delay?: number;
}
/**
 * Returned when a function times out.
 * @param message Timed out
 */
export declare class TimeoutError extends Error {
    constructor();
}
/**
 * The Timeout Module, that allows to ignore the result of the function if it takes too long.
 */
export declare class Timeout extends Module {
    /**
     * The amount of time before a promise is rejected.
     */
    delay: number;
    constructor(options?: TimeoutOptions);
    execute<T>(circuit: Circuit, promise: CircuitFunction, ...params: any[]): Promise<T>;
    private _promiseTimeout;
    private emitTimeout;
}
