import { SelectFieldChangeEventHandler, SelectFieldDataItem, SelectFieldMultiChangeEventHandler, SelectFieldMultiValueChangeEventHandler, SelectFieldPlacement, SelectFieldValueChangeEventHandler, ValueType } from './types';
export interface UseSelectFieldDefaultProps {
    multiple?: false;
    value?: SelectFieldDataItem | null;
    onChange?: SelectFieldChangeEventHandler;
    onValueChange?: SelectFieldValueChangeEventHandler;
}
export interface UseSelectFieldMultiProps {
    multiple: true;
    value?: SelectFieldDataItem[];
    onChange?: SelectFieldMultiChangeEventHandler;
    onValueChange?: SelectFieldMultiValueChangeEventHandler;
}
export type UseSelectFieldUnionProps = UseSelectFieldDefaultProps | UseSelectFieldMultiProps;
export type UseSelectFieldProps = {
    disabled?: boolean;
    placement?: SelectFieldPlacement;
    contentHeight?: number | string;
    onClose?: () => void;
    onSelectClick?: () => void;
} & UseSelectFieldUnionProps;
export type UseSelectFieldReturnType = ReturnType<typeof useSelectField>;
export declare const useSelectField: <TriggerType extends HTMLElement = HTMLDivElement>({ value: initialValue, multiple, disabled, placement: initialPlacement, contentHeight, onClose, onSelectClick, onChange, onValueChange, }: UseSelectFieldProps) => {
    x: number;
    y: number;
    width: number;
    isOpen: boolean;
    triggerRef: import("react").RefObject<TriggerType | null>;
    selectModalRef: import("react").RefObject<HTMLDivElement | null>;
    placement: "top-left" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
    isKeyboardOpen: import("react").RefObject<boolean>;
    value: ValueType;
    disabled: boolean;
    multiple: boolean;
    contentHeight: string | number | undefined;
    handleInputClick: (native: boolean, event: React.MouseEvent<HTMLElement>) => void;
    handleClose: () => void;
    setValue: (value: ValueType) => void;
};
