///
import { EventEmitter } from 'events';
import { Tasks } from './Tasks';
import { TaskRun } from './TaskRun';
import { TASK_RUNNER_SPEC, TASK_STATES } from './Constants';
import { ITaskRunnerResult } from './ITaskRunnerResult';
import { ILoggerApi } from '../logging/ILoggerApi';
import { ITaskRunnerOptions } from './ITaskRunnerOptions';
import { TasksApi } from '../../api/Tasks.api';
import { TaskRunnerEvent } from './TaskRunnerEvent';
/**
* Container for single or multiple task execution
*
* Events:
*
* - TASKRUN_STATE_FINISHED
* - TASKRUN_STATE_NEXT
* - TASKRUN_STATE_RUN
* - TASKRUN_STATE_DONE
*
*/
export declare class TaskRunner extends EventEmitter {
static taskRunnerId: number;
nr: number;
/**
* Unique Task Id
*/
id: string;
event: TaskRunnerEvent;
taskNrs: number;
$options: ITaskRunnerOptions;
$registry: Tasks;
$parallel: any;
$dry_mode: any;
$tasks: TaskRun[];
private todoNrs;
private runningNrs;
private doneNrs;
$finished: any;
$start: Date;
$stop: Date;
$duration: number;
$finish: Function;
$incoming: any;
$outgoing: any;
undeclaredIncomingNames: string[];
state: TASK_STATES;
private invoker;
private loggerName;
private taskLogger;
constructor(registry: Tasks, names: TASK_RUNNER_SPEC[], options?: ITaskRunnerOptions);
/**
* Initialize streams for input and output communication with runnings tasks
* @private
*/
/**
* Initialize task logger
*
* @private
*/
private initTaskLogger;
fireStateEvent(): void;
getOption(key: string, defaultValue?: any): any;
getId(): string;
getOptions(): ITaskRunnerOptions;
taskInc(): number;
getLogger(): ILoggerApi;
getTaskNames(): string[];
/**
* Get all incomings passed to runner
*/
getIncomings(): any;
/**
* Get all necassary incoming parameter
*
* @param itersect
*/
getIncomingParameters(withoutPassThrough?: boolean): import("./TaskExchangeRef").TaskExchangeRef[];
/**
* Set incomings variables
*
* @param parameters
*/
setIncomings(parameters: any): Promise;
/**
* Set incoming variables or if not declared pass to parameters
*
* @param key
* @param value
*/
setIncoming(key: string, value: any): Promise;
/**
* Return undeclared parameter names which are not part on incomings
*/
getUndeclaredIncomingNames(): string[];
/**
* Check if subtask or depending tasks are ready
*/
selectNextTask(): TaskRun;
resolveDeps(task_names: TASK_RUNNER_SPEC[], parent?: TaskRun, variant?: 'subs' | 'deps'): void;
createTaskRun(name: string, incomings?: any): TaskRun;
enqueue(taskRun: TaskRun): void;
areTasksDone(tasksNrs: number[]): boolean;
next(): void;
api(): TasksApi;
taskRun(taskRun: TaskRun): void;
taskDone(taskRun: TaskRun, err?: Error): void;
run(cb?: Function): Promise;
runDry(cb?: Function): Promise;
getList(): string[];
update(taskName: string): void;
finish(): void;
collectStats(taskName?: string): ITaskRunnerResult;
finalize(): Promise;
}