import type { ControlPlaneSessionApiService } from '../services/sessions/control-plane-session-api-service.js';
import type { AssistantStreamBufferService } from '../services/sessions/assistant-stream-buffer-service.js';
import type { ControlPlaneSessionLoader } from './control-plane-session-loader.js';
import type { ControlPlaneSessionState } from './control-plane-session-state.js';
type ControlPlaneDirectShellControllerOptions = {
    api: ControlPlaneSessionApiService;
    state: ControlPlaneSessionState;
    loader: ControlPlaneSessionLoader;
    assistantStreamBuffer: AssistantStreamBufferService;
    refreshSessions: () => Promise<unknown>;
    refreshPendingApproval: (sessionId: string) => Promise<void>;
    formatError: (error: unknown) => string;
};
/**
 * Owns cli-v2 direct-shell interaction state.
 *
 * Core/control-plane owns shell policy and execution. This controller owns only
 * the TUI workflow around that policy: empty-command rejection, local
 * confirmation state, direct-shell run submission, and terminal activity
 * snapshot transitions.
 */
export declare class ControlPlaneDirectShellController {
    private readonly options;
    constructor(options: ControlPlaneDirectShellControllerOptions);
    submit(command: string): Promise<void>;
    resolveConfirmation(accepted: boolean): Promise<void>;
    private startRun;
}
export {};
//# sourceMappingURL=control-plane-direct-shell-controller.d.ts.map