/// <reference types="node" />
import EventEmitter from 'events';
import { Runnable, TaskPoolExecutor } from './types';
export declare class SimpleTaskPoolExecutor<TOutput, TRunContext> extends EventEmitter implements TaskPoolExecutor<TOutput, TRunContext> {
    readonly maxConcurrent: number;
    readonly queue: Runnable<TOutput, TRunContext>[];
    readonly current: Map<string, Promise<TOutput>>;
    constructor(props: {
        maxConcurrent: number;
    });
    _release(taskId: string): void;
    _execute(taskId: string, runnable: Runnable<TOutput, TRunContext>, ctx?: TRunContext): string;
    submit(runnable: Runnable<TOutput, TRunContext>, ctx?: TRunContext): void;
    close(): Promise<TOutput[]>;
}
