import type { IPhasedCommand } from '../../pluginFramework/RushLifeCycle';
import { PhasedCommandHooks } from '../../pluginFramework/PhasedCommandHooks';
import { BaseScriptAction, type IBaseScriptActionOptions } from './BaseScriptAction';
import type { IPhase, IPhasedCommandConfig } from '../../api/CommandLineConfiguration';
/**
 * Constructor parameters for PhasedScriptAction.
 */
export interface IPhasedScriptActionOptions extends IBaseScriptActionOptions<IPhasedCommandConfig> {
    enableParallelism: boolean;
    allowOversubscription: boolean;
    incremental: boolean;
    disableBuildCache: boolean;
    originalPhases: Set<IPhase>;
    initialPhases: Set<IPhase>;
    watchPhases: Set<IPhase>;
    phases: Map<string, IPhase>;
    alwaysWatch: boolean;
    alwaysInstall: boolean | undefined;
    watchDebounceMs: number | undefined;
}
/**
 * This class implements phased commands which are run individually for each project in the repo,
 * possibly in parallel, and which may define multiple phases.
 *
 * @remarks
 * Phased commands can be defined via common/config/command-line.json.  Rush's predefined "build"
 * and "rebuild" commands are also modeled as phased commands with a single phase that invokes the npm
 * "build" script for each project.
 */
export declare class PhasedScriptAction extends BaseScriptAction<IPhasedCommandConfig> implements IPhasedCommand {
    /**
     * @internal
     */
    _runsBeforeInstall: boolean | undefined;
    readonly hooks: PhasedCommandHooks;
    readonly sessionAbortController: AbortController;
    private readonly _enableParallelism;
    private readonly _allowOversubscription;
    private readonly _isIncrementalBuildAllowed;
    private readonly _disableBuildCache;
    private readonly _originalPhases;
    private readonly _initialPhases;
    private readonly _watchPhases;
    private readonly _watchDebounceMs;
    private readonly _alwaysWatch;
    private readonly _alwaysInstall;
    private readonly _knownPhases;
    private readonly _terminal;
    private _changedProjectsOnly;
    private _executionAbortController;
    private readonly _changedProjectsOnlyParameter;
    private readonly _selectionParameters;
    private readonly _verboseParameter;
    private readonly _parallelismParameter;
    private readonly _ignoreHooksParameter;
    private readonly _watchParameter;
    private readonly _timelineParameter;
    private readonly _cobuildPlanParameter;
    private readonly _installParameter;
    private readonly _variantParameter;
    private readonly _noIPCParameter;
    private readonly _nodeDiagnosticDirParameter;
    private readonly _debugBuildCacheIdsParameter;
    private readonly _includePhaseDeps;
    constructor(options: IPhasedScriptActionOptions);
    runAsync(): Promise<void>;
    private _runInitialPhasesAsync;
    private _registerWatchModeInterface;
    /**
     * Runs the command in watch mode. Fundamentally is a simple loop:
     * 1) Wait for a change to one or more projects in the selection
     * 2) Invoke the command on the changed projects, and, if applicable, impacted projects
     *    Uses the same algorithm as --impacted-by
     * 3) Goto (1)
     */
    private _runWatchPhasesAsync;
    /**
     * Runs a set of operations and reports the results.
     */
    private _executeOperationsAsync;
    private _doBeforeTask;
    private _doAfterTask;
}
//# sourceMappingURL=PhasedScriptAction.d.ts.map