import { Store } from '@base-ui/utils/store';
import { type InteractionType } from '@base-ui/utils/useEnhancedClickHandler';
import type { TransitionStatus } from "../utils/useTransitionStatus.js";
import type { HTMLProps } from "../utils/types.js";
import { type Group } from "../utils/resolveValueLabel.js";
export type State = {
  id: string | undefined;
  labelId: string | undefined;
  modal: boolean;
  multiple: boolean;
  items: Record<string, React.ReactNode> | ReadonlyArray<{
    label: React.ReactNode;
    value: any;
  }> | ReadonlyArray<Group<any>> | undefined;
  itemToStringLabel: ((item: any) => string) | undefined;
  itemToStringValue: ((item: any) => string) | undefined;
  isItemEqualToValue: (itemValue: any, selectedValue: any) => boolean;
  value: any;
  open: boolean;
  mounted: boolean;
  forceMount: boolean;
  transitionStatus: TransitionStatus;
  openMethod: InteractionType | null;
  activeIndex: number | null;
  selectedIndex: number | null;
  popupProps: HTMLProps;
  triggerProps: HTMLProps;
  triggerElement: HTMLElement | null;
  positionerElement: HTMLElement | null;
  listElement: HTMLDivElement | null;
  scrollUpArrowVisible: boolean;
  scrollDownArrowVisible: boolean;
  hasScrollArrows: boolean;
};
export type SelectStore = Store<State>;
export declare const selectors: {
  id: (state: State) => string | undefined;
  labelId: (state: State) => string | undefined;
  modal: (state: State) => boolean;
  multiple: (state: State) => boolean;
  items: (state: State) => readonly Group<any>[] | Record<string, import("react").ReactNode> | readonly {
    label: React.ReactNode;
    value: any;
  }[] | undefined;
  itemToStringLabel: (state: State) => ((item: any) => string) | undefined;
  itemToStringValue: (state: State) => ((item: any) => string) | undefined;
  isItemEqualToValue: (state: State) => (itemValue: any, selectedValue: any) => boolean;
  value: (state: State) => any;
  hasSelectedValue: (state: State) => boolean;
  hasNullItemLabel: (state: State, enabled: boolean) => boolean;
  open: (state: State) => boolean;
  mounted: (state: State) => boolean;
  forceMount: (state: State) => boolean;
  transitionStatus: (state: State) => TransitionStatus;
  openMethod: (state: State) => InteractionType | null;
  activeIndex: (state: State) => number | null;
  selectedIndex: (state: State) => number | null;
  isActive: (state: State, index: number) => boolean;
  isSelected: (state: State, index: number, itemValue: any) => boolean;
  isSelectedByFocus: (state: State, index: number) => boolean;
  popupProps: (state: State) => HTMLProps;
  triggerProps: (state: State) => HTMLProps;
  triggerElement: (state: State) => HTMLElement | null;
  positionerElement: (state: State) => HTMLElement | null;
  listElement: (state: State) => HTMLDivElement | null;
  scrollUpArrowVisible: (state: State) => boolean;
  scrollDownArrowVisible: (state: State) => boolean;
  hasScrollArrows: (state: State) => boolean;
};