/**
 * PickerMenu — Single and multi select.
 * Single mode: custom renderer with small triangle indicator.
 * Multi mode: checkbox glyphs with space to toggle.
 *
 * Pagination uses Ink's `measureElement` to compute the actual rendered
 * header height, so chrome rows are derived from real layout (accounting
 * for PromptLabel text wrapping on narrow terminals) instead of a fixed
 * constant. The hardcoded constant is retained as a first-frame fallback.
 */
/**
 * Pure helper — translate total rows + reserved chrome rows into the
 * number of option rows that fit. Extracted for unit testing.
 */
export declare function computeVisibleCount(totalRows: number, totalOptionRows: number, chromeRows: number): number;
interface PickerOption<T> {
    label: string;
    value: T;
    hint?: string;
}
interface PickerMenuProps<T> {
    message?: string;
    options: PickerOption<T>[];
    mode?: 'single' | 'multi';
    centered?: boolean;
    columns?: 1 | 2 | 3 | 4;
    /**
     * Rows available for the option list inside a constrained parent region.
     * Currently honoured only by single-mode pickers — multi-mode does not
     * paginate, so this prop is ignored when `mode === 'multi'`.
     */
    availableRows?: number;
    /** In multi mode, values to start selected. Ignored in single mode. */
    defaultSelected?: T[];
    onSelect: (value: T | T[]) => void;
}
export declare const PickerMenu: <T>({ message, options, mode, centered, columns, availableRows, defaultSelected, onSelect, }: PickerMenuProps<T>) => import("react/jsx-runtime").JSX.Element;
export {};
