import React, { RefObject } from 'react';
import { InternalDropdownProps } from '../../dropdown/internal';
import { ButtonTriggerProps } from '../../internal/components/button-trigger';
import { DropdownStatusProps } from '../../internal/components/dropdown-status';
import { DropdownOption, OptionDefinition } from '../../internal/components/option/interfaces';
import { OptionsListProps } from '../../internal/components/options-list';
import { NonCancelableEventHandler } from '../../internal/events';
import { FilterProps } from '../parts/filter';
import { ItemProps } from '../parts/item';
export type MenuProps = Omit<OptionsListProps, 'children'> & {
    ref: React.RefObject<HTMLDivElement>;
};
export type GetOptionProps = (option: DropdownOption, index: number) => ItemProps;
interface UseSelectProps {
    selectedOptions: ReadonlyArray<OptionDefinition>;
    updateSelectedOption: (option: OptionDefinition) => void;
    options: ReadonlyArray<DropdownOption>;
    filteringType: string;
    keepOpen?: boolean;
    embedded?: boolean;
    onBlur?: NonCancelableEventHandler;
    onFocus?: NonCancelableEventHandler;
    externalRef: React.Ref<any>;
    fireLoadItems: (filteringText: string) => void;
    setFilteringValue?: (filteringText: string) => void;
    useInteractiveGroups?: boolean;
    statusType: DropdownStatusProps.StatusType;
    isAllSelected?: boolean;
    isSomeSelected?: boolean;
    toggleAll?: () => void;
}
export interface SelectTriggerProps extends ButtonTriggerProps {
    ref: RefObject<HTMLButtonElement>;
}
export declare function useSelect({ selectedOptions, updateSelectedOption, options, filteringType, onBlur, onFocus, externalRef, keepOpen, embedded, fireLoadItems, setFilteringValue, useInteractiveGroups, statusType, isAllSelected, isSomeSelected, toggleAll, }: UseSelectProps): {
    isOpen: boolean;
    highlightedOption: DropdownOption | undefined;
    highlightedIndex: number;
    highlightType: import("../../internal/components/options-list/utils/use-highlight-option").HighlightType;
    getTriggerProps: (disabled?: boolean, autoFocus?: boolean) => SelectTriggerProps;
    getDropdownProps: () => Pick<InternalDropdownProps, "onFocus" | "onBlur" | "dropdownContentId" | "ariaRole">;
    getMenuProps: () => MenuProps;
    getFilterProps: () => Partial<FilterProps>;
    getOptionProps: (option: DropdownOption, index: number) => any;
    highlightOption: (option: DropdownOption) => void;
    selectOption: (option?: DropdownOption) => void;
    announceSelected: boolean;
    dialogId: string;
    focusActiveRef: () => void;
};
export {};
//# sourceMappingURL=use-select.d.ts.map