import { Filter, FilterRelations, FilterRelationsDescription, FilterRelationsJaql, FilterRelationsRules } from '@sisense/sdk-data';
export { splitFiltersAndRelations, getFiltersArray, combineFiltersAndRelations, isTrivialSingleNodeRelations, calculateNewRelations, getRelationsWithReplacedFilter, convertFilterRelationsModelToRelationRules, filterRelationRulesToFilterRelationsModel, isOpenBracketDescriptionNode, isCloseBracketDescriptionNode, isAttributeDescriptionNode, isOperatorDescriptionNode, mergeFiltersOrFilterRelations, type FilterRelationsDescription, type FilterRelationsRules, } from '@sisense/sdk-data';
/**
 * @internal
 */
export declare enum FiltersMergeStrategyEnum {
    WIDGET_FIRST = "widgetFirst",
    CODE_FIRST = "codeFirst",
    CODE_ONLY = "codeOnly"
}
export type FiltersMergeStrategy = `${FiltersMergeStrategyEnum}`;
/**
 * Textual representation of filter relations for debugging purposes.
 * Returns string like "(([Gender] AND [Country]) OR [Condition])".
 *
 * @internal
 */
export declare function getRelationsAsText(relations: FilterRelationsRules, filters: Filter[]): string;
/**
 * Builds tooltip lines: adds `(` / `)` around each logical subtree from `splitFiltersAndRelations`.
 *
 * @internal
 */
export declare function getFilterRelationsDescription(relations: FilterRelationsRules, filters: Filter[]): FilterRelationsDescription;
/**
 * Merge two arrays of filters using the specified merge strategy.
 *
 * @param widgetFilters - The filters from the widget.
 * @param codeFilters - The filters from the code.
 * @param mergeStrategy - The strategy to use for merging filters.
 * @returns The merged filters based on the selected strategy.
 * @internal
 */
export declare function mergeFiltersByStrategy(widgetFilters?: Filter[] | FilterRelations, codeFilters?: Filter[] | FilterRelations, mergeStrategy?: FiltersMergeStrategy): FilterRelations | Filter[];
/**
 * Replaces filters for same dimensions in filter relations jaql.
 * Widget filters have higher priority than dashboard filters.
 *
 * @param widgetFilters - The filters from the widget.
 * @param dashboardFilters -  The filters from the dashboard.
 * @param relations - The filter relations before replacement.
 * @returns The filter relations after replacement.
 * @internal
 */
export declare function applyWidgetFiltersToRelations(widgetFilters: Filter[], dashboardFilters: Filter[], relations: FilterRelationsJaql | undefined): FilterRelationsJaql | undefined;
