import { type MutableRefObject } from "react";
import { type FilterContextItem, type ICatalogAttribute, type ICatalogDateDataset, type ICatalogMeasure, type IDashboardAttributeFilterConfig, type IDashboardDateFilterConfigItem, type ObjRef } from "@gooddata/sdk-model";
import type { IAutomationFiltersTab } from "../../../../model/store/filtering/types.js";
/**
 * Processed filter data for a single tab, ready for UI rendering.
 */
export interface IProcessedAutomationFiltersTab {
    /** Tab local identifier */
    tabId: string;
    /** Tab title */
    tabTitle: string;
    /** Visible filters after applying hidden filter logic */
    visibleFilters: FilterContextItem[];
    /** Locked filters for this tab */
    lockedFilters: FilterContextItem[];
    /** Catalog attributes available for Add filter dropdown */
    attributes: ICatalogAttribute[];
    /** Catalog date datasets available for Add filter dropdown */
    dateDatasets: ICatalogDateDataset[];
    /** Catalog measures available for Add filter dropdown (for re-adding removed MVFs) */
    measures: ICatalogMeasure[];
    /** Non-selected filters (available but not yet selected) */
    nonSelectedFilters: FilterContextItem[];
    /** Attribute filter configs for this tab */
    attributeConfigs: IDashboardAttributeFilterConfig[];
    /** Date filter configs for this tab */
    dateConfigs: IDashboardDateFilterConfigItem[];
}
/**
 * Logic for handling inner filters component logic.
 */
export declare const useAutomationFilters: ({ availableFilters, selectedFilters, onFiltersChange, onStoreFiltersChange, disableDateFilters, }: {
    availableFilters: FilterContextItem[];
    selectedFilters: FilterContextItem[];
    disableDateFilters?: boolean | undefined;
    onFiltersChange: (filters: FilterContextItem[], enableNewScheduledExport: boolean) => void;
    onStoreFiltersChange: (shouldStore: boolean, filters: FilterContextItem[], filtersByTab?: Record<string, FilterContextItem[]> | undefined) => void;
}) => {
    commonDateFilterId: string | undefined;
    lockedFilters: FilterContextItem[];
    visibleFilters: FilterContextItem[];
    attributes: ICatalogAttribute[];
    dateDatasets: ICatalogDateDataset[];
    measures: ICatalogMeasure[];
    attributeConfigs: IDashboardAttributeFilterConfig[];
    dateConfigs: IDashboardDateFilterConfigItem[];
    filterAnnouncement: string;
    filterGroupRef: import("react").RefObject<HTMLDivElement | null>;
    makeFilterGroupUnfocusable: () => void;
    focusAddFilterButton: () => void;
    handleChangeFilter: (filter: FilterContextItem | undefined) => void;
    handleDeleteFilter: (filter: FilterContextItem) => void;
    handleAddFilter: (catalogItemRef: ObjRef, attributes: ICatalogAttribute[], dateDatasets: ICatalogDateDataset[]) => void;
    handleStoreFiltersChange: (value: boolean) => void;
    setAddFilterButtonRefs: (element: HTMLButtonElement | HTMLDivElement | null, dropdownButtonRef?: MutableRefObject<HTMLElement> | undefined) => void;
};
/**
 * Hook for processing filters structured per tab.
 * Applies the same business logic as useAutomationFilters to each tab's filters.
 * Returns processed filters and handlers for add/change/delete operations per tab.
 */
export declare const useAutomationFiltersByTab: ({ filtersByTab, editedFiltersByTab, onFiltersByTabChange, onStoreFiltersChange, disableDateFilters, }: {
    filtersByTab: IAutomationFiltersTab[] | undefined;
    editedFiltersByTab?: Record<string, FilterContextItem[]> | undefined;
    onFiltersByTabChange?: ((filtersByTab: Record<string, FilterContextItem[]>) => void) | undefined;
    onStoreFiltersChange: (shouldStore: boolean, filters?: FilterContextItem[] | undefined, filtersByTab?: Record<string, FilterContextItem[]> | undefined) => void;
    disableDateFilters?: boolean | undefined;
}) => {
    commonDateFilterId: string | undefined;
    lockedFilters: FilterContextItem[];
    processedFiltersByTab: IProcessedAutomationFiltersTab[] | undefined;
    attributeConfigs: IDashboardAttributeFilterConfig[];
    dateConfigs: IDashboardDateFilterConfigItem[];
    filterAnnouncement: string;
    filterGroupRef: import("react").RefObject<HTMLDivElement | null>;
    handleTabFilterChange: (tabId: string, updatedFilter: FilterContextItem | undefined) => void;
    handleTabFilterDelete: (tabId: string, filterToDelete: FilterContextItem) => void;
    handleTabFilterAdd: (tabId: string, displayForm: ObjRef, attributes: ICatalogAttribute[], dateDatasets: ICatalogDateDataset[]) => void;
    handleStoreFiltersChange: (value: boolean) => void;
    makeFilterGroupUnfocusable: () => void;
    setAddFilterButtonRefs: (element: HTMLButtonElement | HTMLDivElement | null, dropdownButtonRef?: MutableRefObject<HTMLElement> | undefined) => void;
};
//# sourceMappingURL=useAutomationFilters.d.ts.map