import Rx = require('rx');
import { CLI, CrossbowInput, CrossbowReporter } from './index';
import { CrossbowConfiguration } from './config';
import { SequenceItem } from './task.sequence.factories';
import { Tasks } from './task.resolve';
import { Runner } from './task.runner';
import Immutable = require('immutable');
import { RunComplete } from "./command.run.execute";
export interface CommandTrigger {
    type: TriggerTypes;
    cli: CLI;
    input: CrossbowInput;
    config: CrossbowConfiguration;
    tracker?: any;
    tracker$?: any;
    shared?: Rx.BehaviorSubject<Immutable.Map<string, any>>;
    reporter: CrossbowReporter;
}
export interface RunCommandSetup {
    tasks: Tasks;
    sequence: SequenceItem[];
    runner: Runner;
}
export declare enum TriggerTypes {
    command,
    watcher,
}
export declare function getRunCommandSetup(trigger: CommandTrigger): RunCommandSetup;
export default function handleIncomingRunCommand(cli: CLI, input: CrossbowInput, config: CrossbowConfiguration, reporter: CrossbowReporter): RunComplete;
