import { ComputedRef, Ref } from 'vue'; import { SelectionLimitSource } from './useSelectionLimit'; export type ListSelectionValue = string | number; export type ListSelectionSource = T | Ref | ComputedRef | (() => T); export type WidenListSelectionValue = TValue extends string ? string : TValue extends number ? number : TValue; export interface UseListSelectionOptions { selected: ListSelectionSource; items?: ListSelectionSource; getValue?: (item: TItem) => TValue; disabled?: ListSelectionSource; max?: SelectionLimitSource; } export interface UseListSelectionReturn { selectedValues: ComputedRef; selectedSet: ComputedRef>; itemValues: ComputedRef; selectedCount: ComputedRef; itemCount: ComputedRef; isAllSelected: ComputedRef; isLimited: ComputedRef; isAtLimit: ComputedRef; canAddMore: ComputedRef; remaining: ComputedRef; isSelected: (value: TValue) => boolean; isFullySelected: (values: readonly TValue[]) => boolean; isPartiallySelected: (values: readonly TValue[]) => boolean; selectValues: (values: readonly TValue[]) => TValue[]; toggleValue: (value: TValue) => TValue[]; toggleValues: (values: readonly TValue[]) => TValue[]; selectAll: () => TValue[]; toggleAll: () => TValue[]; clear: () => TValue[]; } /** Shared list-selection state for checkbox lists, sample selectors, and chip selectors. */ export declare function useListSelection(options: UseListSelectionOptions): UseListSelectionReturn>;