import { Task } from "./task.resolve";
import { CommandTrigger } from "./command.run";
import { Runner } from "./task.runner";
import { SequenceItem } from "./task.sequence.factories";
import { TaskReport } from "./task.runner";
export declare function createFlattenedSequence(tasks: Task[], trigger: CommandTrigger): SequenceItem[];
/**
 * If the current TaskType is an InlineFunction or
 * module to be run,
 */
export interface ITaskOptions {
    _default?: any;
    [index: string]: any;
}
/**
 *           ******************
 * Where the **--~~Magic~~--** happens!!!
 *           ******************
 *
 * Creating a task runner in crossbow is really about
 * wrapping the process of running the tasks in a way
 * that allows comprehensive logging/reporting
 *
 * Series & Parallel have different symantics and are
 * therefor handled separately.
 *
 * Note that everything here is completely lazy and
 * nothing will be executed until a user calls subscribe
 */
export declare function createRunner(items: SequenceItem[], trigger: CommandTrigger): Runner;
/**
 * After a bunch of tasks have run, we need to link up task-ended reports
 * with their original position in the sequence. This will allow us to
 * reconstruct the task render-tree but also show any tasks that errored
 * or did not complete
 * @param sequence
 * @param reports
 * @returns {*}
 */
export declare function decorateSequenceWithReports(sequence: SequenceItem[], reports: TaskReport[]): any;
/**
 * Look at every item in the sequence tree and count how many
 * error have occured
 */
export declare function countSequenceErrors(items: SequenceItem[]): number;
export declare function collectSkippedTasks(items: SequenceItem[], initial: any): SequenceItem[];
