import { HeftPluginHost } from './HeftPluginHost';
import type { InternalHeftSession } from './InternalHeftSession';
import type { IHeftConfigurationJsonPluginSpecifier } from '../utilities/CoreConfigFiles';
import type { HeftLifecyclePluginDefinition } from '../configuration/HeftPluginDefinition';
import { HeftLifecycleSession, type IHeftLifecycleHooks, type IHeftLifecycleSession } from './HeftLifecycleSession';
import type { ScopedLogger } from './logging/ScopedLogger';
export interface IHeftLifecycleContext {
    lifecycleSession?: HeftLifecycleSession;
    pluginOptions?: object;
}
export declare class HeftLifecycle extends HeftPluginHost {
    private readonly _internalHeftSession;
    private readonly _lifecyclePluginSpecifiers;
    private readonly _lifecycleHooks;
    private readonly _lifecycleContextByDefinition;
    private readonly _lifecyclePluginsByDefinition;
    private _lifecycleLogger;
    private _isInitialized;
    get hooks(): IHeftLifecycleHooks;
    get pluginDefinitions(): Iterable<HeftLifecyclePluginDefinition>;
    constructor(internalHeftSession: InternalHeftSession, lifecyclePluginSpecifiers: IHeftConfigurationJsonPluginSpecifier[]);
    protected applyPluginsInternalAsync(): Promise<void>;
    ensureInitializedAsync(): Promise<void>;
    get lifecycleLogger(): ScopedLogger;
    getSessionForPluginDefinitionAsync(pluginDefinition: HeftLifecyclePluginDefinition): Promise<IHeftLifecycleSession>;
    private _getLifecyclePluginForPluginDefinitionAsync;
}
//# sourceMappingURL=HeftLifecycle.d.ts.map