import type { Theme } from "../../../../../modes/interactive/theme/theme.js"; import type { QuestionData } from "../../tool/types.js"; import type { StatefulView } from "../stateful-view.ts"; export declare const MULTI_SUBMIT_LABEL = "Submit"; export interface MultiSelectViewProps { rows: ReadonlyArray<{ checked: boolean; active: boolean; }>; nextActive: boolean; nextLabel: string; } /** * Renders the multi-select option list (one row per option — pointer + checkbox + label — * plus zero or more wrapped continuation lines per description). * * `naturalHeight(width)` is state-INDEPENDENT (depends only on theme glyph widths, * question.options, and width) so the host can compute a stable globalContentHeight * without rendering. `naturalHeight(w) === render(w).length` for every props. * * `setProps(props)` is a pure field reassignment — no render, no invalidate side effects. */ export declare class MultiSelectView implements StatefulView { private props; private readonly theme; private readonly question; constructor(theme: Theme, question: QuestionData); setProps(props: MultiSelectViewProps): void; handleInput(_data: string): void; invalidate(): void; render(width: number): string[]; naturalHeight(width: number): number; private prefixVisibleWidth; } //# sourceMappingURL=multi-select-view.d.ts.map