import { type FilterContextItem, type IAutomationMetadataObject, type IAutomationVisibleFilter } from "@gooddata/sdk-model";
import { type IAutomationFiltersTab } from "../../model/store/filtering/dashboardFilterSelectors.js";
import type { ExtendedDashboardWidget } from "../../model/types/layoutTypes.js";
/**
 * Edited automation filters structured by tab ID.
 * Used for storing user edits to filters when dashboard tabs are enabled.
 * @internal
 */
export type EditedFiltersByTab = Record<string, FilterContextItem[]>;
/**
 * Result from useAutomationFiltersSelect hook.
 * @internal
 */
export interface IUseAutomationFiltersSelect {
    editedAutomationFilters: FilterContextItem[];
    setEditedAutomationFilters: (filters: FilterContextItem[]) => void;
    storeFilters: boolean;
    setStoreFilters: (storeFilters: boolean) => void;
    availableFilters: FilterContextItem[] | undefined;
    availableFiltersAsVisibleFilters: IAutomationVisibleFilter[] | undefined;
    filtersForNewAutomation: FilterContextItem[];
    /**
     * Filters for new automation structured per tab.
     * Only provided for whole dashboard automations when dashboard tabs feature is enabled
     * and there are multiple tabs. When provided, the component should render filters grouped by tab.
     * When undefined, the component should use the flat filter list.
     */
    filtersByTab: IAutomationFiltersTab[] | undefined;
    /**
     * Edited filters structured by tab ID.
     * This is the state that stores user edits to per-tab filters until save.
     * Only provided when filtersByTab is provided.
     */
    editedAutomationFiltersByTab: EditedFiltersByTab | undefined;
    /**
     * Setter for editedFiltersByTab state.
     */
    setEditedAutomationFiltersByTab: (filters: EditedFiltersByTab) => void;
    availableFiltersAsVisibleFiltersByTab: Record<string, IAutomationVisibleFilter[]> | undefined;
}
/**
 * Hook to get data for AutomationFiltersSelect component.
 */
export declare const useAutomationFiltersSelect: ({ widget, automationToEdit, }: {
    /**
     * Widget to edit automation for (if editing widget related automation).
     */
    widget?: ExtendedDashboardWidget | undefined;
    /**
     * Alert or scheduled export automation metadata object to edit.
     * If not provided, returned filters will be the default filters usable for the automation.
     */
    automationToEdit?: IAutomationMetadataObject | undefined;
}) => IUseAutomationFiltersSelect;
export declare function getDefaultSelectedFiltersFromFiltersByTab(filtersByTab: IAutomationFiltersTab[] | undefined): EditedFiltersByTab | undefined;
export declare function getAvailableFiltersFromFiltersByTab(filtersByTab: IAutomationFiltersTab[] | undefined): Record<string, FilterContextItem[]>;
//# sourceMappingURL=useAutomationFiltersSelect.d.ts.map