import { HeftLifecyclePluginDefinition, type HeftPluginDefinitionBase, HeftTaskPluginDefinition, type IHeftLifecyclePluginDefinitionJson, type IHeftTaskPluginDefinitionJson } from './HeftPluginDefinition';
import type { IHeftConfigurationJsonPluginSpecifier } from '../utilities/CoreConfigFiles';
export interface IHeftPluginConfigurationJson {
    lifecyclePlugins?: IHeftLifecyclePluginDefinitionJson[];
    taskPlugins?: IHeftTaskPluginDefinitionJson[];
}
/**
 * Loads and validates the heft-plugin.json file.
 */
export declare class HeftPluginConfiguration {
    private static _jsonSchema;
    private static _pluginConfigurationPromises;
    private readonly _heftPluginConfigurationJson;
    private _lifecyclePluginDefinitions;
    private _lifecyclePluginDefinitionsMap;
    private _taskPluginDefinitions;
    private _taskPluginDefinitionsMap;
    /**
     * The path to the root of the package that contains the heft-plugin.json file.
     */
    readonly packageRoot: string;
    /**
     * The package name of the package that contains the heft-plugin.json file.
     */
    readonly packageName: string;
    private constructor();
    /**
     * Load the heft-plugin.json file from the specified package.
     */
    static loadFromPackageAsync(packageRoot: string, packageName: string): Promise<HeftPluginConfiguration>;
    /**
     * Returns a loaded plugin definition for the provided specifier. Specifiers are normally obtained from the
     * heft.json file.
     */
    getPluginDefinitionBySpecifier(pluginSpecifier: IHeftConfigurationJsonPluginSpecifier): HeftPluginDefinitionBase;
    /**
     * Returns if the provided plugin definition is a lifecycle plugin definition.
     */
    isLifecyclePluginDefinition(pluginDefinition: HeftPluginDefinitionBase): pluginDefinition is HeftLifecyclePluginDefinition;
    /**
     * Returns if the provided plugin definition is a task plugin definition.
     */
    isTaskPluginDefinition(pluginDefinition: HeftPluginDefinitionBase): pluginDefinition is HeftTaskPluginDefinition;
    /**
     * Returns a loaded lifecycle plugin definition for the provided plugin name. If one can't be found,
     * returns undefined.
     */
    tryGetLifecyclePluginDefinitionByName(lifecyclePluginName: string): HeftLifecyclePluginDefinition | undefined;
    /**
     * Returns a loaded task plugin definition for the provided plugin name. If one can't be found,
     * returns undefined.
     */
    tryGetTaskPluginDefinitionByName(taskPluginName: string): HeftTaskPluginDefinition | undefined;
    private _getLifecyclePluginDefinitions;
    /**
     * Task plugin definitions sourced from the heft-plugin.json file.
     */
    private _getTaskPluginDefinitions;
    private _validate;
}
//# sourceMappingURL=HeftPluginConfiguration.d.ts.map