import { type TerminalObserver, type TerminalRuntimeOwnership } from "./terminal-watch.js"; export interface TerminalAgent { handle: string; name?: string; shareUrl: string; profile?: string; } export interface TerminalRuntimeState { ownership: TerminalRuntimeOwnership; /** Set from what the runtime itself shows. A live view that has connected does NOT mean the agent is running. */ connection: "unknown" | "not-started" | "connected" | "disconnected"; label?: string; } export interface TerminalSessionOptions { agent: TerminalAgent; runtime: TerminalRuntimeState; observer?: TerminalObserver; secrets?: readonly string[]; signal?: AbortSignal; interactive?: boolean; } export interface TerminalInput { isTTY?: boolean; isRaw?: boolean; readableFlowing?: boolean | null; setRawMode?(enabled: boolean): unknown; resume(): unknown; pause(): unknown; on(event: string, listener: (...args: any[]) => void): unknown; off(event: string, listener: (...args: any[]) => void): unknown; } export interface TerminalOutput { isTTY?: boolean; columns?: number; rows?: number; write(value: string): unknown; on?(event: "resize", listener: () => void): unknown; off?(event: "resize", listener: () => void): unknown; } export interface TerminalSessionIO { input?: TerminalInput; output?: TerminalOutput; signals?: Pick; renderQR?: (publicUrl: string) => Promise; } export interface TerminalSessionResult { reason: "quit" | "aborted" | "input-ended" | "non-interactive" | "terminal-error"; observedEvents: number; observerStopped: boolean; } export declare function terminalRuntimeLabel(runtime: TerminalRuntimeState, secrets?: readonly string[]): string; /** Persistent view only. Closing it does not delete the agent or start/stop any runtime. */ export declare function runTerminalSession(options: TerminalSessionOptions, io?: TerminalSessionIO): Promise; //# sourceMappingURL=terminal-session.d.ts.map