import { CascadingFilter, Filter } from '@sisense/sdk-data';
import { FiltersIgnoringRules, PureFilter } from './types.js';
/**
 * Flattens cascading filters into a single array of filters.
 */
export declare function flattenCascadingFilters(filters: Filter[]): {
    flatFilters: PureFilter[];
    cascadingToPureFiltersMap: Record<string, PureFilter[]>;
};
/**
 * Reassembles flattened filters back into cascading filters based on original cascading filters.
 *
 * @param updatedFilters - Updated pure filters to reassemble.
 * @param originalFilters - Original filters with maybe cascading filters.
 * @returns reassembled filters.
 */
export declare function reassembleCascadingFilters(updatedFilters: PureFilter[], originalFilters: (PureFilter | CascadingFilter)[], config?: {
    shouldResetFiltersDeeperThanModified?: boolean;
}): (PureFilter | CascadingFilter)[];
/**
 * Converts cascading filters to pure filters and vice versa.
 *
 * @param complexFilters - all filters, including cascading filters.
 * @param updateComplexFilters - a function to update complex filters.
 * @param complexFiltersIgnoringRules - filters ignoring rules for complex filters.
 * @returns converted pure filters and a decorated filters updater.
 */
export declare function withCascadingFiltersConversion(complexFilters: (PureFilter | CascadingFilter)[], updateComplexFilters: (filters: (PureFilter | CascadingFilter)[]) => void, complexFiltersIgnoringRules: FiltersIgnoringRules): {
    pureFilters: PureFilter[];
    updateFilters: (filters: PureFilter[]) => void;
    pureFiltersIgnoringRules: FiltersIgnoringRules;
};
