import type { IPhase } from '../../api/CommandLineConfiguration';
import type { RushConfigurationProject } from '../../api/RushConfigurationProject';
import type { IPhasedCommandPlugin, PhasedCommandHooks } from '../../pluginFramework/PhasedCommandHooks';
import type { Operation } from './Operation';
import type { RushConfiguration } from '../../api/RushConfiguration';
import type { IOperationRunner } from './IOperationRunner';
export declare const PLUGIN_NAME: 'ShellOperationRunnerPlugin';
/**
 * Core phased command plugin that provides the functionality for executing an operation via shell command.
 */
export declare class ShellOperationRunnerPlugin implements IPhasedCommandPlugin {
    apply(hooks: PhasedCommandHooks): void;
}
export declare function initializeShellOperationRunner(options: {
    phase: IPhase;
    project: RushConfigurationProject;
    displayName: string;
    rushConfiguration: RushConfiguration;
    commandToRun: string | undefined;
    commandForHash?: string;
    customParameterValues: ReadonlyArray<string>;
    ignoredParameterValues: ReadonlyArray<string>;
}): IOperationRunner;
/**
 * Result of filtering custom parameters for an operation
 */
export interface ICustomParameterValuesForOperation {
    /**
     * The serialized custom parameter values that should be included in the command
     */
    parameterValues: ReadonlyArray<string>;
    /**
     * The serialized custom parameter values that were ignored for this operation
     */
    ignoredParameterValues: ReadonlyArray<string>;
}
/**
 * Memoizer for custom parameter values by phase
 * @returns A function that returns the custom parameter values for a given phase
 */
export declare function getCustomParameterValuesByPhase(): (phase: IPhase) => ReadonlyArray<string>;
/**
 * Gets custom parameter values for an operation, filtering out any parameters that should be ignored
 * based on the operation's settings.
 * @returns A function that returns the filtered custom parameter values and ignored parameter values for a given operation
 */
export declare function getCustomParameterValuesByOperation(): (operation: Operation) => ICustomParameterValuesForOperation;
export declare function formatCommand(rawCommand: string, customParameterValues: ReadonlyArray<string>): string;
export declare function getDisplayName(phase: IPhase, project: RushConfigurationProject): string;
//# sourceMappingURL=ShellOperationRunnerPlugin.d.ts.map