import { type ITerminal } from '@rushstack/terminal';
import { OperationStatus } from '@rushstack/operation-graph';
import type { CommandLineParameterProvider } from '@rushstack/ts-command-line';
import type { HeftConfiguration } from '../configuration/HeftConfiguration';
import type { LoggingManager } from '../pluginFramework/logging/LoggingManager';
import type { MetricsCollector } from '../metrics/MetricsCollector';
import { HeftParameterManager } from '../pluginFramework/HeftParameterManager';
import type { IHeftAction, IHeftActionOptions } from './actions/IHeftAction';
export interface IHeftActionRunnerOptions extends IHeftActionOptions {
    action: IHeftAction;
}
export declare function initializeHeft(heftConfiguration: HeftConfiguration, terminal: ITerminal, isVerbose: boolean): void;
export declare function ensureCliAbortSignal(terminal: ITerminal): AbortSignal;
export declare function runWithLoggingAsync(fn: () => Promise<OperationStatus>, action: IHeftAction, loggingManager: LoggingManager, terminal: ITerminal, metricsCollector: MetricsCollector, abortSignal: AbortSignal, throwOnFailure?: boolean): Promise<OperationStatus>;
export declare class HeftActionRunner {
    private readonly _action;
    private readonly _terminal;
    private readonly _internalHeftSession;
    private readonly _metricsCollector;
    private readonly _loggingManager;
    private readonly _heftConfiguration;
    private _parameterManager;
    private readonly _parallelism;
    constructor(options: IHeftActionRunnerOptions);
    protected get parameterManager(): HeftParameterManager;
    defineParameters(parameterProvider?: CommandLineParameterProvider | undefined): void;
    executeAsync(): Promise<void>;
    private _createWatchLoop;
    private _executeOnceAsync;
    private _generateOperations;
}
//# sourceMappingURL=HeftActionRunner.d.ts.map