/** * Renderer-independent terminal capability detection (V2-030). * * Pure function of an injected environment snapshot so capability decisions are * unit-testable without a live TTY. The renderer adapter feeds this the real * `process.env`/stdio at bootstrap; nothing here writes terminal bytes. */ import type { ColorMode } from "../../app/ports/terminal-port.js"; export type ThemeHint = "dark" | "light" | "unknown"; export interface CapabilityEnv { readonly env: Readonly>; readonly stdoutIsTTY: boolean; readonly stdinIsTTY: boolean; readonly columns: number | undefined; readonly rows: number | undefined; readonly platform?: string | undefined; } export interface TerminalCapabilityReport { readonly isTTY: boolean; readonly columns: number; readonly rows: number; readonly colorMode: ColorMode; readonly noColor: boolean; /** Kitty/CSI-u keyboard protocol; lets Shift+Enter differ from Enter. */ readonly kittyKeyboard: boolean; readonly canDistinguishShiftEnter: boolean; readonly mouse: boolean; readonly unicode: boolean; readonly osc52: boolean; readonly reducedMotion: boolean; readonly themeHint: ThemeHint; } export declare const DEFAULT_COLUMNS = 80; export declare const DEFAULT_ROWS = 24; export declare function detectThemeHint(env: CapabilityEnv["env"]): ThemeHint; export declare function detectCapabilities(input: CapabilityEnv): TerminalCapabilityReport; export declare function readCapabilitiesFromProcess(): TerminalCapabilityReport;