import { Terminal } from '@xterm/xterm';
import { Subject } from 'rxjs';
import { ICliExecutionContext, ICliTerminalWriter, ICliUserSession, CliOptions, ICliSpinner, ICliPercentageProgressBar, ICliClipboard, ICliExecutionProcess, ICliCommandProcessor, ICliLogger, ICliServiceProvider, ICliStateStore, ICliTextAnimator } from '@qodalis/cli-core';
import { CliCommandExecutorService } from '../services/cli-command-executor.service';
import { Injector } from '@angular/core';
export declare class CliExecutionContext implements ICliExecutionContext {
    terminal: Terminal;
    executor: CliCommandExecutorService;
    showPrompt: (options?: {
        reset?: boolean;
        newLine?: boolean;
    }) => void;
    userSession?: ICliUserSession;
    contextProcessor?: ICliCommandProcessor;
    readonly writer: ICliTerminalWriter;
    readonly spinner: ICliSpinner;
    readonly textAnimator: ICliTextAnimator;
    readonly progressBar: ICliPercentageProgressBar;
    readonly options?: CliOptions;
    readonly onAbort: Subject<void>;
    readonly state: ICliStateStore;
    readonly clipboard: ICliClipboard;
    readonly process: ICliExecutionProcess;
    readonly logger: ICliLogger;
    readonly services: ICliServiceProvider;
    constructor(injector: Injector, terminal: Terminal, executor: CliCommandExecutorService, showPrompt: (options?: {
        reset?: boolean;
        newLine?: boolean;
    }) => void, cliOptions?: CliOptions);
    setContextProcessor(processor: ICliCommandProcessor | undefined, silent?: boolean): void;
    /**
     * Checks if there is a progress running
     * @returns true if there is a progress running
     * @returns false if there is no progress running
     */
    isProgressRunning(): boolean;
    /**
     * Aborts the current command
     */
    abort(): void;
    setSession(session: ICliUserSession): void;
}
