import type { Component } from "@earendil-works/pi-tui"; import type { StatefulView } from "../stateful-view.ts"; import { type WrappingSelectItem, type WrappingSelectTheme } from "./wrapping-select.ts"; /** * Per-tick projection of chat-row state. The chat row is a single-item * `WrappingSelect` rendered in the question-tab footer; it owns no per-tab * state — only `focused` (whether the chat row is the active focus target), * `numbering` (display number aligned with the active tab's items), and the * owner-specific inline input projection supplied by the session. */ export interface ChatRowViewProps { focused: boolean; numbering: { offset: number; total: number; }; inputBuffer: string; inputCaret: number; } export interface ChatRowViewConfig { /** The single chat sentinel row — `{kind: "chat", label: SENTINEL_LABELS.chat}`. */ item: WrappingSelectItem; theme: WrappingSelectTheme; /** When false, Chat about this renders as a plain option instead of an inline editor. */ inlineInputEnabled?: boolean; } /** * Typed wrapper around the chat-row `WrappingSelect`. Replaces the prior * raw-primitive consumption at `props-adapter.ts:106, :120` and removes the * accidental surface area (8 unused `WrappingSelect` setters) noted in * research Q4. * * Pattern modeled after `OptionListView` (`option-list-view.ts:27-93`): * mirror-then-delegate `setProps`; render is pure delegation; `Component` * triplet forwards. */ export declare class ChatRowView implements StatefulView, Component { private readonly select; constructor(config: ChatRowViewConfig); setProps(props: ChatRowViewProps): void; handleInput(_data: string): void; invalidate(): void; render(width: number): string[]; } //# sourceMappingURL=chat-row-view.d.ts.map