import { SelectHTMLAttributes } from 'react';
import { OptionGroupProps, OptionProps } from './Option.types';
export type StructureNode = {
kind: 'option';
id: string;
} | {
kind: 'group';
id: string;
};
interface OptionsContextValue {
selectOption: (id: string) => void;
deselectOption: (id: string) => void;
/** Register an Option. Pass `null` for `groupId` when the Option is rendered at the root (not inside any OptionGroup). */
registerOption: (id: string, groupId: string | null) => void;
unregisterOption: (id: string) => void;
setOptionProps: (id: string, optionProps: OptionProps) => void;
registerGroup: (id: string) => void;
unregisterGroup: (id: string) => void;
setGroupProps: (id: string, groupProps: OptionGroupProps) => void;
}
export declare const OptionsProvider: import('react').Provider;
export declare const useOptionsContext: () => OptionsContextValue;
type ValueType = SelectHTMLAttributes['value'];
export declare const useCreateOptionsContext: (value: ValueType, setValue: (value: ValueType) => void, multiple: boolean) => {
optionsContext: {
setValue: (value: ValueType) => void;
registerOption: (id: string, groupId: string | null) => void;
unregisterOption: (id: string) => void;
setOptionProps: (id: string, optionProps: OptionProps) => void;
selectOption: (id: string) => void;
deselectOption: (id: string) => void;
registerGroup: (id: string) => void;
unregisterGroup: (id: string) => void;
setGroupProps: (id: string, groupProps: OptionGroupProps) => void;
};
selectedOptionsProps: OptionProps[];
optionIds: string[];
optionsProps: Map;
deselectOptionValue: (value: ValueType) => void;
indexOfLastSelectedOptionRef: import('react').MutableRefObject;
getOptionByIndex: (index: number) => OptionProps | undefined;
structureIds: StructureNode[];
groupsProps: Map;
optionGroupOf: Map;
optionIdsByGroup: Map;
};
export {};