import { type IPitcherClient, type protocol } from "@codesandbox/pitcher-client";
import { Disposable } from "../../utils/disposable";
export declare class Setup {
    private pitcherClient;
    private disposable;
    private steps;
    private setupProgress;
    private readonly onSetupProgressChangeEmitter;
    readonly onSetupProgressChange: import("../../utils/event").Event<void>;
    get status(): "FINISHED" | "IDLE" | "IN_PROGRESS" | "STOPPED";
    get currentStepIndex(): number;
    constructor(sessionDisposable: Disposable, pitcherClient: IPitcherClient);
    getSteps(): Promise<Step[]>;
    run(): Promise<void>;
    waitUntilComplete(): Promise<void>;
}
export declare class Step {
    private step;
    private pitcherClient;
    private disposable;
    private onOutputEmitter;
    readonly onOutput: import("../../utils/event").Event<string>;
    private onStatusChangeEmitter;
    readonly onStatusChange: import("../../utils/event").Event<string>;
    private output;
    get name(): string;
    get command(): string;
    get status(): "IDLE" | protocol.setup.SetupShellStatus;
    constructor(stepIndex: number, step: protocol.setup.Step, pitcherClient: IPitcherClient);
    open(dimensions?: import("./terminals").ShellSize): Promise<string>;
    waitUntilComplete(): Promise<void>;
}
