import { CommandTrigger } from "./command.run";
import { Tasks } from "./task.resolve";
import { SequenceItem } from "./task.sequence.factories";
import { Runner } from "./task.runner";
import { TaskReport } from "./task.runner";
import Rx = require('rx');
import { CrossbowConfiguration } from "./config";
import { CLI } from "./index";
export declare enum RunCommandReportTypes {
    NoTasks,
    Setup,
    Complete,
    TaskReport,
}
export interface RunCommandSetupErrors {
    type: RunCommandReportTypes;
}
export declare type RunComplete = Rx.Observable<RunActions>;
export interface RunActions {
    setup: RunCommandSetup;
    update$: Rx.Observable<TaskReport>;
}
export interface RunCommandSetup {
    tasks?: Tasks;
    sequence?: SequenceItem[];
    errors: RunCommandSetupErrors[];
}
export interface RunCommandCompletionReport {
    tasks: Tasks;
    sequence: SequenceItem[];
    runner: Runner;
    config: CrossbowConfiguration;
    reports?: TaskReport[];
    decoratedSequence?: SequenceItem[];
    runtime?: number;
    errors: RunCommandSetupErrors[];
    taskErrors: TaskReport[];
    cli: CLI;
}
export default function executeRunCommand(trigger: CommandTrigger): RunActions;
