import type { HeftTaskPluginDefinition } from '../configuration/HeftPluginDefinition';
import type { HeftPhase, IHeftPhase } from './HeftPhase';
import type { IHeftConfigurationJsonTaskSpecifier } from '../utilities/CoreConfigFiles';
import type { IHeftTaskPlugin } from './IHeftPlugin';
import type { IScopedLogger } from './logging/ScopedLogger';
/**
 * @public
 */
export interface IHeftTask {
    readonly parentPhase: IHeftPhase;
    readonly taskName: string;
    readonly consumingTasks: ReadonlySet<IHeftTask>;
    readonly dependencyTasks: ReadonlySet<IHeftTask>;
}
/**
 * @internal
 */
export declare class HeftTask implements IHeftTask {
    private _parentPhase;
    private _taskName;
    private _taskSpecifier;
    private _consumingTasks;
    private _dependencyTasks;
    private _taskPluginDefinition;
    private _taskPlugin;
    get parentPhase(): HeftPhase;
    get taskName(): string;
    get consumingTasks(): ReadonlySet<HeftTask>;
    get pluginDefinition(): HeftTaskPluginDefinition;
    get pluginOptions(): object | undefined;
    get dependencyTasks(): Set<HeftTask>;
    constructor(parentPhase: HeftPhase, taskName: string, taskSpecifier: IHeftConfigurationJsonTaskSpecifier);
    ensureInitializedAsync(): Promise<void>;
    getPluginAsync(logger: IScopedLogger): Promise<IHeftTaskPlugin<object | void>>;
    private _loadTaskPluginDefinitionAsync;
    private _validate;
}
//# sourceMappingURL=HeftTask.d.ts.map