import * as React from 'react';
import { type FloatingRootContext } from "../../floating-ui-react/index.mjs";
import type { SelectStore } from "../store.mjs";
import type { UseFieldValidationReturnValue } from "../../field/root/useFieldValidation.mjs";
import type { HTMLProps } from "../../internals/types.mjs";
import type { SelectRoot } from "./SelectRoot.mjs";
export interface SelectRootContext {
  store: SelectStore;
  floatingContext: FloatingRootContext;
  disabled: boolean;
  readOnly: boolean;
  required: boolean;
  multiple: boolean;
  highlightItemOnHover: boolean;
  setValue: (nextValue: any, eventDetails: SelectRoot.ChangeEventDetails) => void;
  setOpen: (open: boolean, eventDetails: SelectRoot.ChangeEventDetails) => void;
  listRef: React.RefObject<Array<HTMLElement | null>>;
  popupRef: React.RefObject<HTMLDivElement | null>;
  scrollHandlerRef: React.RefObject<((el: HTMLDivElement) => void) | null>;
  handleScrollArrowVisibility: (scroller: HTMLElement) => void;
  scrollArrowsMountedCountRef: React.RefObject<number>;
  itemProps: HTMLProps;
  valueRef: React.RefObject<HTMLSpanElement | null>;
  valuesRef: React.RefObject<Array<any>>;
  labelsRef: React.RefObject<Array<string | null>>;
  typingRef: React.RefObject<boolean>;
  selectionRef: React.RefObject<{
    allowUnselectedMouseUp: boolean;
    allowSelectedMouseUp: boolean;
    dragY: number;
  }>;
  firstItemTextRef: React.RefObject<HTMLElement | null>;
  selectedItemTextRef: React.RefObject<HTMLElement | null>;
  validation: UseFieldValidationReturnValue;
  onOpenChangeComplete?: ((open: boolean) => void) | undefined;
  alignItemWithTriggerActiveRef: React.RefObject<boolean>;
  initialValueRef: React.RefObject<any>;
}
export declare const SelectRootContext: React.Context<SelectRootContext | null>;
export declare function useSelectRootContext(): SelectRootContext;