// Reusable controlled inventory filter (attribute/class rules + host
// include/exclude); combine with the payload helpers to build the backend object.
export { InventoryFilter } from './InventoryFilter';
export type { InventoryFilterProps } from './InventoryFilter';

export {
  buildGroupFilter,
  convertFilterObjectToFilters,
  emptyEntriesFilter,
  emptyFilterState,
  entriesFilterFromGroup,
  filterFromSearchQuery,
  hostsFilterToEntries,
  isAttributeSearchQuery,
  nextUid,
  processClassFilters,
  processEntriesFilters,
  processFilters
} from './utils/filterPayload';

export { groupAttributes } from './utils/groupAttributes';
export type { AttributeGroup } from './utils/groupAttributes';

export type {
  AttributeType,
  CfeAttribute,
  EntriesFilter,
  EntriesMap,
  EntryType,
  FilterPayload,
  FilterRule,
  FilterValue,
  GroupFilter,
  HostEntry,
  HostFilterPayload,
  InventoryFilterState,
  InventoryMapping
} from './types';
