import { AFM } from "@gooddata/typings";
/**
 * Tests whether attribute elements are empty of not.
 *
 * @param elements one of the acceptable attribute element forms
 */
export declare function isEmptyAttributeElements(elements: string[]): boolean;
/**
 * Tests whether filter if semantically empty - e.g. it will not have any effect on the results and can thus
 * be discarded.
 *
 * @param filter any acceptable AFM filter
 */
export declare function isEmptyFilter(filter: AFM.CompatibilityFilter): boolean;
/**
 * Tests whether filter is semantically not empty - e.g. it will have some effect on the results.
 *
 * @param filter any acceptable AFM filter
 * @deprecated use isEmptyFilter instead
 */
export declare function isNotEmptyFilter(filter: AFM.CompatibilityFilter): boolean;
/**
 * Merges new filters into existing AFM. This essentially concatenates/appends new filters at the end of the
 * existing filter list defined in the AFM and then filters out any semantically empty, no-effect filters.
 *
 * This function is immutable, it constructs new instance of AFM.
 *
 * @param afm afm to merge filters into
 * @param filters filters to merge
 * @returns new instance of AFM.
 */
export declare function mergeFilters(afm: AFM.IAfm, filters: AFM.FilterItem[]): AFM.IAfm;
