///
import { EventEmitter } from 'events';
import { ITask, ITaskChange, ITaskWorker, ITasksGroupFilter, ITaskHandler } from './interfaces';
export declare interface TasksManager {
on(event: 'change', listener: (e: ITaskChange) => void): this;
}
/**
* Allows to create multiple channels with given groups.
*/
export declare class TasksManager extends EventEmitter {
private workers;
protected queue: ITask[];
protected taskCounter: number;
protected unavailableWorkers: number;
workerFilter: ITasksGroupFilter;
getWorkerInstance: (index: number, group: string) => K;
protected getWorker(group: string): ITaskWorker;
protected getWorkers(indexes?: number[]): ITaskWorker[];
setWorkers(...workers: string[]): void;
handle(fn: ITaskHandler, group?: string, taskId?: number): Promise;
protected process: (task: ITask, worker?: ITaskWorker) => Promise;
protected processNext(): Promise;
protected workersCheck(): void;
pauseWorkers(...indexes: number[]): void;
resumeWorkers(...indexes: number[]): void;
deleteTasks(...ids: number[]): void;
deleteAllTasks(): void;
createTaskId(): number;
protected finishTask(id: number, data?: any, error?: Error): void;
}