import { SelectListV2GroupType, SelectListV2Row } from './selectListV2.types'; /** * Option count past which virtualization is enabled by default. Each row * mounts a ResizeObserver for truncation detection, so larger lists should * use the existing VirtualList path unless the consumer explicitly opts out. */ export declare const SELECT_LIST_V2_VIRTUALIZE_HINT = 20; /** Dev-only, once per distinct message, so a long list cannot flood the console. */ export declare const warnOnce: (key: string, message: string) => void; /** Test seam: lets a suite assert the first warning of a run. */ export declare const resetSelectListV2Warnings: () => void; /** * Flattens groups into render-ready rows. * * `subMenu` is rejected rather than flattened. Both V2 item models carry it, * but every renderer implements it as a Radix popover, and a list surface has * nowhere to anchor one. Silently dropping the children would lose options * with no signal, and indenting them inline would ship a drill-down UI that * was explicitly deferred — so the parent renders as an ordinary selectable * row and development gets a hard, unmissable error naming the item. */ export declare const flattenSelectListV2Groups: (groups: SelectListV2GroupType[]) => SelectListV2Row[]; /** Total renderable options, for `aria-setsize`. */ export declare const countSelectListV2Options: (rows: SelectListV2Row[]) => number; /** * Values a select-all gesture may touch: exactly the options this surface * renders. * * `MultiSelectV2`'s `getAllAvailableValues` recurses into `subMenu`, which is * correct for the dropdown because it renders nested items in a popover. This * surface drops `subMenu` children, so reusing that helper would let Select All * push values for rows the user never saw into `onSelectionChange` — invisible * selections they cannot untick, an inflated `maxSelections` count, and a * select-all checkbox stuck short of "all". */ export declare const getSelectListV2AvailableValues: (groups: SelectListV2GroupType[]) => string[]; export type SelectListV2FocusTarget = { itemIndex: number; /** Index into the flattened rows, used to scroll a virtualized row in. */ rowIndex: number; /** Stable item identity, used to cancel stale virtual focus handoffs. */ value: string; disabled: boolean; }; export declare const getSelectListV2FocusTargets: (rows: SelectListV2Row[], isRowDisabled: (row: Extract) => boolean) => SelectListV2FocusTarget[];