import { BaseRushAction } from './BaseRushAction';
import type { RushCommandLineParser } from '../RushCommandLineParser';
export declare class ChangeAction extends BaseRushAction {
    private readonly _git;
    private readonly _verifyParameter;
    private readonly _noFetchParameter;
    private readonly _targetBranchParameter;
    private readonly _changeEmailParameter;
    private readonly _bulkChangeParameter;
    private readonly _bulkChangeMessageParameter;
    private readonly _bulkChangeBumpTypeParameter;
    private readonly _overwriteFlagParameter;
    private readonly _commitChangesFlagParameter;
    private readonly _commitChangesMessageStringParameter;
    private _targetBranchName;
    constructor(parser: RushCommandLineParser);
    runAsync(): Promise<void>;
    private _generateHostMap;
    private _verifyAsync;
    private _getTargetBranchAsync;
    private _getChangedProjectNamesAsync;
    private _validateChangeFileAsync;
    private _getChangeFilesAsync;
    /**
     * The main loop which prompts the user for information on changed projects.
     */
    private _promptForChangeFileDataAsync;
    /**
     * Asks all questions which are needed to generate changelist for a project.
     */
    private _askQuestionsAsync;
    private _promptForCommentsAsync;
    private _getBumpOptions;
    private _isEmailRequired;
    /**
     * Will determine a user's email by first detecting it from their Git config,
     * or will ask for it if it is not found or the Git config is wrong.
     */
    private _detectOrAskForEmailAsync;
    private _detectEmail;
    /**
     * Detects the user's email address from their Git configuration, prompts the user to approve the
     * detected email. It returns undefined if it cannot be detected.
     */
    private _detectAndConfirmEmailAsync;
    /**
     * Asks the user for their email address
     */
    private _promptForEmailAsync;
    private _warnUnstagedChangesAsync;
    /**
     * Writes change files to the common/changes folder. Will prompt for overwrite if file already exists.
     */
    private _writeChangeFilesAsync;
    private _writeChangeFileAsync;
    private _promptForOverwriteAsync;
    /**
     * Writes a file to disk, ensuring the directory structure up to that point exists
     */
    private _writeFile;
    private _logNoChangeFileRequired;
}
//# sourceMappingURL=ChangeAction.d.ts.map