import { type ITerminal } from '@rushstack/terminal';
import type { RushConfiguration } from '../api/RushConfiguration';
/**
 * Project property configuration
 */
export interface IProjectImpactGraphProjectConfiguration {
    includedGlobs: string[];
    excludedGlobs?: string[];
    dependentProjects: string[];
}
/**
 * The schema of `project-impact-graph.yaml`
 */
export interface IProjectImpactGraphFile {
    globalExcludedGlobs: string[];
    projects: Record<string, IProjectImpactGraphProjectConfiguration>;
}
export declare class ProjectImpactGraphGenerator {
    private readonly _terminal;
    /**
     * The Rush configuration
     */
    private readonly _rushConfiguration;
    /**
     * Full path of repository root
     */
    private readonly _repositoryRoot;
    /**
     * Full path to `project-impact-graph.yaml`
     */
    private readonly _projectImpactGraphFilePath;
    /**
     * Get repositoryRoot and load projects within the rush.json
     */
    constructor(terminal: ITerminal, rushConfiguration: RushConfiguration);
    /**
     * Load global excluded globs
     */
    private _loadGlobalExcludedGlobsAsync;
    /**
     * Load project excluded globs
     * @param projectRootRelativePath - project root relative path
     */
    private _tryLoadProjectExcludedGlobsAsync;
    /**
     * Core Logic: generate project-impact-graph.yaml
     */
    generateAsync(): Promise<void>;
    validateAsync(): Promise<boolean>;
}
//# sourceMappingURL=ProjectImpactGraphGenerator.d.ts.map