import type { ITerminal } from '@rushstack/terminal';
import type { IChangelog } from '../api/Changelog';
import type { RushConfiguration } from '../api/RushConfiguration';
export interface IValidateOptions {
    terminal: ITerminal;
    filesToValidate: Iterable<string>;
    changedProjectNames: Iterable<string>;
    /**
     * Optional set of project names that were removed from rush.json.
     * When provided, produces a more specific error message for these projects.
     */
    deletedProjectNames?: ReadonlySet<string>;
}
/**
 * This class represents the collection of change files existing in the repo and provides operations
 * for those change files.
 */
export declare class ChangeFiles {
    /**
     * Change file path relative to changes folder.
     */
    private _files;
    private readonly _rushConfiguration;
    private readonly _changesPath;
    constructor(rushConfiguration: RushConfiguration);
    /**
     * Validate if the newly added change files match the changed packages.
     */
    validateAsync(options: IValidateOptions): Promise<void>;
    static getChangeComments(terminal: ITerminal, newChangeFilePaths: string[]): Map<string, string[]>;
    /**
     * Get the array of absolute paths of change files.
     */
    getAllChangeFilesAsync(): Promise<string[]>;
    /**
     * Get the path of changes folder.
     */
    getChangesPath(): string;
    /**
     * Delete all change files
     */
    deleteAllAsync(terminal: ITerminal, shouldDelete: boolean, updatedChangelogs?: IChangelog[]): Promise<number>;
    private _deleteFilesAsync;
}
//# sourceMappingURL=ChangeFiles.d.ts.map