import type { ITerminal } from '@rushstack/terminal';
import type { HeftPluginDefinitionBase } from '../configuration/HeftPluginDefinition';
import type { IHeftPlugin } from './IHeftPlugin';
export declare abstract class HeftPluginHost {
    private readonly _pluginAccessRequestHooks;
    private _pluginsApplied;
    applyPluginsAsync(terminal: ITerminal): Promise<void>;
    protected abstract applyPluginsInternalAsync(): Promise<void>;
    /**
     * Registers a callback used to provide access to a requested plugin via the plugin accessor.
     */
    requestAccessToPluginByName<T extends object>(requestorName: string, pluginToAccessPackage: string, pluginToAccessName: string, accessorCallback: (pluginAccessor: T) => void): void;
    /**
     * Gets the name of the hook that is registered with the plugin access request hook.
     */
    getPluginHookName(pluginPackageName: string, pluginName: string): string;
    /**
     * Resolves all plugin requests for the specified plugin. All plugins that requested access to the
     * specified plugin will have their callbacks invoked, and will be provided with the accessor for
     * the specified plugin.
     */
    protected resolvePluginAccessRequests(plugin: IHeftPlugin, pluginDefinition: HeftPluginDefinitionBase): void;
}
//# sourceMappingURL=HeftPluginHost.d.ts.map