import type { CommandLineFlagParameter, CommandLineStringListParameter, CommandLineStringParameter } from '@rushstack/ts-command-line';
import { BaseRushAction, type IBaseRushActionOptions } from './BaseRushAction';
import type { RushConfigurationProject } from '../../api/RushConfigurationProject';
import type { IPackageForRushUpdate, IPackageJsonUpdaterRushBaseUpdateOptions } from '../../logic/PackageJsonUpdaterTypes';
export declare const PACKAGE_PARAMETER_NAME: '--package';
export interface IBasePackageJsonUpdaterRushOptions {
    /**
     * The projects whose package.jsons should get updated
     */
    projects: RushConfigurationProject[];
    /**
     * The dependencies to be added.
     */
    packagesToHandle: IPackageForRushUpdate[];
    /**
     * If specified, "rush update" will not be run after updating the package.json file(s).
     */
    skipUpdate: boolean;
    /**
     * If specified, "rush update" will be run in debug mode.
     */
    debugInstall: boolean;
}
export interface IBaseAddAndRemoveActionOptions extends IBaseRushActionOptions {
    allFlagDescription: string;
    packageNameListParameterDescription: string;
}
/**
 * This is the common base class for AddAction and RemoveAction.
 */
export declare abstract class BaseAddAndRemoveAction extends BaseRushAction {
    protected readonly _skipUpdateFlag: CommandLineFlagParameter;
    protected readonly _packageNameListParameter: CommandLineStringListParameter;
    protected readonly _allFlag: CommandLineFlagParameter;
    protected readonly _variantParameter: CommandLineStringParameter;
    protected get specifiedPackageNameList(): readonly string[];
    constructor(options: IBaseAddAndRemoveActionOptions);
    protected abstract getUpdateOptionsAsync(): Promise<IPackageJsonUpdaterRushBaseUpdateOptions>;
    protected getProjects(): RushConfigurationProject[];
    runAsync(): Promise<void>;
}
//# sourceMappingURL=BaseAddAndRemoveAction.d.ts.map