export interface UseMultiSelectReturnsState<T> {
  /**
   * 选中的项目
   */
  selected: T[]
  /**
   * 是否没有选中任何项目
   */
  isNoneSelected: boolean
  /**
   * 是否所有项目都被选中
   */
  isAllSelected: boolean
  /**
   * 是否部分选中
   */
  isPartiallySelected: boolean
}
export interface UseMultiSelectActions<T> {
  /**
   * 检查项目是否被选中
   */
  isItemSelected: (item: T) => boolean
  /**
   * 设置选中的项目
   */
  setSelected: ReactSetState<T[]>
  /**
   * 选中项目
   */
  select: (item: T) => void
  /**
   * 选中所有项目
   */
  selectAll(): void
  /**
   * 取消选中项目
   *
   * @deprecated 请使用 `unselectAll` 代替
   */
  unSelect: (item: T) => void
  /**
   * 取消选中所有项目
   *
   * @deprecated 请使用 `unselectAll` 代替
   */
  unSelectAll(): void
  /**
   * 取消选中项目
   */
  unselect: (item: T) => void
  /**
   * 取消选中所有项目
   */
  unselectAll(): void
  /**
   * 切换项目的选中状态
   */
  toggle: (item: T) => void
  /**
   * 切换所有项目的选中状态
   */
  toggleAll(): void
}
export type UseMultiSelectReturns<T> = readonly [UseMultiSelectReturnsState<T>, UseMultiSelectActions<T>]