import type { AgentSessionRuntime } from "@earendil-works/pi-coding-agent"; export type AppTerminalControllerHost = { isRunning(): boolean; setRunning(running: boolean): void; cancelPendingTabLifecycle(): void; runtime(): AgentSessionRuntime | undefined; saveInputStateForQuit(): Promise; disposeInactiveRuntimesForQuit(): Promise; render(): void; handleInputChunk(chunk: Buffer): void; closeSdkMenuForStop(): void; clearToastTimers(): void; stopBlinking(): void; stopSubagentsPolling(): void; stopModelUsagePolling(): void; stopVoiceInput(): Promise; stopAutocomplete(): void; stopShellCommand(): void; unsubscribeSession(): void; clearExtensionWidgets(): void; resetRenderOutputBuffer(): void; }; export declare class AppTerminalController { private readonly host; private terminalEnabled; private interactiveSuspended; private stopPromise; private keyboardProtocolNegotiationBuffer; private keyboardProtocolBufferFlushTimer; private inputDecoder; private kittyProtocolActive; private modifyOtherKeysActive; private shutdownDeadlineAt; private readonly enterInteractiveSequence; private readonly exitInteractiveSequence; constructor(host: AppTerminalControllerHost); isSuspended(): boolean; enableTerminal(): void; stop(): Promise; disposeRuntimeForQuit(runtime: AgentSessionRuntime): Promise; disposeRuntime(runtime: AgentSessionRuntime): Promise; runWithInteractiveTerminal(callback: () => Promise): Promise; private readonly restoreTerminal; private suspendForInteractiveProcess; private resumeAfterInteractiveProcess; private stopInternal; private runBestEffort; private scheduleForcedProcessExit; private readonly onResize; private readonly onInputData; private beginKeyboardProtocolNegotiation; private filterKeyboardProtocolNegotiationInput; private handleKeyboardProtocolNegotiationResponse; private enableModifyOtherKeysFallback; private setKeyboardProtocolNegotiationBuffer; private clearKeyboardProtocolNegotiationBuffer; }