export type Filter = {
    id: string;
    label: string;
    group?: true;
};
export type SelectedFilter = Omit<Filter, 'group'> & {
    type: 'include' | 'exclude' | 'group';
};
export interface UseFiltersMultiSelectOptions {
    opened?: boolean;
    defaultOpened?: boolean;
    selectedFilters?: SelectedFilter[];
    defaultSelectedFilters?: SelectedFilter[];
    search?: string;
    defaultSearch?: string;
    onChange?: (value: SelectedFilter[]) => void;
    onOpenedChange?: (opened: boolean) => void;
    onDropdownClose?: () => void;
    onDropdownOpen?: () => void;
    onSearchChange?: (search: string) => void;
}
export declare function useFilterMultiSelect({ opened, defaultOpened, selectedFilters, defaultSelectedFilters, search, defaultSearch, onChange, onOpenedChange, onDropdownClose, onDropdownOpen, onSearchChange, }?: UseFiltersMultiSelectOptions): {
    opened: boolean;
    selectedFilters: SelectedFilter[];
    search: string;
    toggleDropdown: (open?: boolean) => void;
    selectFilters: (...filters: SelectedFilter[]) => void;
    unselectFilters: (...filters: SelectedFilter[]) => void;
    isSelected: (id: string) => SelectedFilter | undefined;
    setSearch: (value: string) => void;
};
export type UseFiltersMultiSelectStore = ReturnType<typeof useFilterMultiSelect>;
