import type { Theme } from "../../../../../modes/interactive/theme/theme.ts";
import type { QuestionData } from "../../tool/types.ts";
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<MultiSelectViewProps> {
    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