///
import { LoadedWorkspace } from '@shopify/loom/config-load';
import { AnyPlugin, WorkspaceTasks, ProjectTasks, Step, Log, Package, Service, WebApp } from '@shopify/loom';
import { Ui } from './ui';
export interface TaskContext extends LoadedWorkspace {
readonly ui: Ui;
readonly steps: StepTracker;
}
interface StepInclusionOptions {
readonly skipSteps?: ReadonlyArray;
readonly skipPreSteps?: ReadonlyArray;
readonly skipPostSteps?: ReadonlyArray;
readonly isolateSteps?: ReadonlyArray;
readonly isolatePreSteps?: ReadonlyArray;
readonly isolatePostSteps?: ReadonlyArray;
}
export interface GlobalCliArguments {
root?: string;
'log-level'?: string;
interactive?: boolean;
'skip-step'?: ReadonlyArray;
'skip-pre-step'?: ReadonlyArray;
'skip-post-step'?: ReadonlyArray;
'isolate-step'?: ReadonlyArray;
'isolate-pre-step'?: ReadonlyArray;
'isolate-post-step'?: ReadonlyArray;
__internal?: {
stdin?: NodeJS.ReadStream;
stdout?: NodeJS.WriteStream;
stderr?: NodeJS.WriteStream;
};
}
export declare function createCommand(argv: GlobalCliArguments & TPerCommandCliArguments, run: (context: TaskContext, flags: TPerCommandCliArguments) => Promise): Promise;
export declare function createWorkspaceTasksAndApplyPlugins(context: TaskContext): Promise;
export declare function createProjectTasksAndApplyPlugins(project: TType, context: TaskContext): Promise>;
export declare function createStep(options: Omit, run: Step['run']): Step;
export declare function logError(error: any, log: Log): void;
declare class StepTracker {
readonly inclusion: StepInclusionOptions;
private sources;
private parents;
constructor(inclusion: StepInclusionOptions);
setSource(step: Step, plugin: AnyPlugin): void;
getSource(step: Step): AnyPlugin | undefined;
setStepParent(step: Step, parent: Step): void;
getStepAncestors(step: Step): ReadonlyArray;
}
export {};
//# sourceMappingURL=common.d.ts.map