import type { Mode } from "../../types.js"; import type { ThemeToken } from "../render/ink-theme.js"; export type ComposerPhase = "idle" | "running" | "suspended"; export interface ComposerFrameInput { readonly columns: number; readonly allocatedRows: number; readonly text: string; readonly mode: Mode; readonly phase: ComposerPhase; readonly unicode: boolean; /** provider · model · permission label for the top border (pre-format). */ readonly metaLabel?: string | undefined; } export interface ComposerFrame { readonly width: number; readonly textWidth: number; readonly textRows: number; readonly borderStyle: "round" | "classic"; readonly borderColor: ThemeToken; readonly markColor: ThemeToken; readonly mark: string; readonly placeholder: string; readonly showCaret: boolean; /** Clipped meta label for the top border's right side ("" → no title). */ readonly meta: string; /** Whether the allocation leaves room for the directory row above the box. */ readonly showDirectory: boolean; } export declare const COMPOSER_CHROME_COLS = 5; export declare function composerPlaceholder(mode: Mode, phase: ComposerPhase): string; export declare function composerFrame(input: ComposerFrameInput): ComposerFrame; export declare function composerTextRowsWanted(input: { readonly columns: number; readonly text: string; }): number;