import { type ICatalogItemPickerProps } from "./types.js";
/**
 * Encapsulates all state, derived data and event handlers of the catalog item picker.
 *
 * It is shared between {@link CatalogItemPicker} (which wraps the body with a header) and
 * {@link CatalogItemPickerBody} (the header-less search + grouped list, reused e.g. in the ranking
 * filter measure dropdown).
 *
 * @internal
 */
export declare function useCatalogItemPicker<TAttributePayload = unknown, TMetricPayload = unknown>({ itemTypes, selectionMode, attributeItems, metricItems, groups, isOpen, isLoading, onClose, onAdd, onSelect, variant }: ICatalogItemPickerProps<TAttributePayload, TMetricPayload>): {
    listboxId: string;
    labels: import("./useCatalogItemPickerListboxItems.js").ICatalogItemPickerLabels;
    searchString: string;
    handleSearchChange: (value: string | number) => void;
    handleSearchEscKeyPress: (e: import("react").KeyboardEvent<Element>) => void;
    showTabs: boolean;
    effectiveType: import("./types.js").CatalogItemPickerType;
    resolvedItemTypes: import("./types.js").CatalogItemPickerType[];
    handleTabChange: (type: import("./types.js").CatalogItemPickerType) => void;
    listboxItems: import("./listboxItemBuilders.js").CatalogItemListboxItem[];
    handleListboxSelect: (item: import("../index.js").IUiListboxInteractiveItem<import("./listboxItemBuilders.js").ICatalogItemPickerListItemData<unknown>>) => void;
    isMultiSelect: boolean;
    isAddDisabled: boolean;
    handleAdd: () => void;
    shouldShowEmptyStateMessage: boolean;
    emptyMessage: string;
    isLoading: boolean;
    selectionMode: import("./types.js").CatalogItemPickerSelectionMode;
    variant: "addFilter" | "mvf";
};
/**
 * Return type of {@link useCatalogItemPicker}.
 *
 * @internal
 */
export type CatalogItemPickerController = ReturnType<typeof useCatalogItemPicker>;
//# sourceMappingURL=useCatalogItemPicker.d.ts.map