import type { ITerminal } from '@rushstack/terminal';
import type { IRigConfig } from '@rushstack/rig-package';
import type { IDeleteOperation } from '../plugins/DeleteFilesPlugin';
import type { INodeServicePluginConfiguration } from '../plugins/NodeServicePlugin';
export interface IHeftConfigurationJsonActionReference {
    actionName: string;
    defaultParameters?: string[];
}
export interface IHeftConfigurationJsonAliases {
    [aliasName: string]: IHeftConfigurationJsonActionReference;
}
export interface IHeftConfigurationJsonPluginSpecifier {
    pluginPackage: string;
    pluginPackageRoot: string;
    pluginName?: string;
    options?: object;
}
export interface IHeftConfigurationJsonTaskSpecifier {
    taskDependencies?: string[];
    taskPlugin: IHeftConfigurationJsonPluginSpecifier;
}
export interface IHeftConfigurationJsonTasks {
    [taskName: string]: IHeftConfigurationJsonTaskSpecifier;
}
export interface IHeftConfigurationJsonPhaseSpecifier {
    phaseDescription?: string;
    phaseDependencies?: string[];
    cleanFiles?: IDeleteOperation[];
    tasksByName?: IHeftConfigurationJsonTasks;
}
export interface IHeftConfigurationJsonPhases {
    [phaseName: string]: IHeftConfigurationJsonPhaseSpecifier;
}
export interface IHeftConfigurationJson {
    heftPlugins?: IHeftConfigurationJsonPluginSpecifier[];
    aliasesByName?: IHeftConfigurationJsonAliases;
    phasesByName?: IHeftConfigurationJsonPhases;
}
export declare class CoreConfigFiles {
    private static _heftConfigFileLoader;
    private static _nodeServiceConfigurationLoader;
    static heftConfigurationProjectRelativeFilePath: string;
    static nodeServiceConfigurationProjectRelativeFilePath: string;
    /**
     * Returns the loader for the `config/heft.json` config file.
     */
    static loadHeftConfigurationFileForProjectAsync(terminal: ITerminal, projectPath: string, rigConfig?: IRigConfig | undefined): Promise<IHeftConfigurationJson>;
    static tryLoadNodeServiceConfigurationFileAsync(terminal: ITerminal, projectPath: string, rigConfig?: IRigConfig | undefined): Promise<INodeServicePluginConfiguration | undefined>;
}
//# sourceMappingURL=CoreConfigFiles.d.ts.map