import { Filter, ComparisonFilter, Rule, CombinationFilter, NegationFilter, CombinationOperator } from 'geostyler-style';
import { VectorData } from 'geostyler-data';
import { Feature } from 'geojson';
export type CountResult = {
    counts?: number[];
    duplicates?: number[];
};
/**
 * @class FilterUtil
 */
declare class FilterUtil {
    static nestingOperators: string[];
    /**
     * Handle nested filters.
     */
    static handleNestedFilter: (filter: CombinationFilter | NegationFilter, feature: any) => boolean;
    /**
     * Handle simple filters, i.e. non-nested filters.
     */
    static handleSimpleFilter: (filter: ComparisonFilter, feature: any) => boolean;
    /**
     * Checks if a feature matches the specified filter.
     * Returns true if it matches, otherwise returns false.
     */
    static featureMatchesFilter: (filter: Filter | CombinationOperator, feature: Feature) => boolean;
    /**
     * Returns those features that match a given filter.
     * If no feature matches, returns an empty array.
     *
     * @param {Filter} filter A geostyler filter object.
     * @param {VectorData} data A geostyler data object.
     * @return {Feature[]} An Array of geojson feature objects.
     */
    static getMatches: (filter: Filter, data: VectorData) => Feature[];
    /**
     * Calculates the number of features that are covered by more then one rule per
     * rule.
     *
     * @param {object} matches An object containing the count of matches for every
     *  filter. Separated by scales.
     * @returns {number[]} An array containing the number of duplicates for each
     *  rule.
     */
    static calculateDuplicates(matches: any): number[];
    /**
     * Calculates the amount of matched and duplicate matched features for the rules.
     *
     * @param {Rule[]} rules An array of GeoStyler rule objects.
     * @param {VectorData} data A geostyler data object.
     * @returns {CountResult} An object containing array with the amount of matched
     * and duplicate matched features reachable through keys'counts' and 'duplicates'.
     */
    static calculateCountAndDuplicates(rules: Rule[], data: VectorData): CountResult;
    /**
     * Transforms a position String like '[2][3]' to an positionArray like [2, 3].
     */
    static positionStringAsArray(positionString: string): number[];
    /**
     * Transforms am positionArray like [2, 3] to a string like '[2][3]'.
     */
    static positionArrayAsString(positionArray: number[] | string[]): string;
    /**
     * Returns the filter at a specific position.
     */
    static getFilterAtPosition(rootFilter: Filter, position: string): any;
    /**
     * Removes a subfilter from a given filter at the given position.
     */
    static removeAtPosition(filter: Filter, position: string): Filter;
    /**
       * Inserts a given subfilter to a given parentfilter by its position and its
       * dropPosition.
       */
    static insertAtPosition(baseFilter: Filter, insertFilter: Filter, position: string): Filter;
    /**
     * Handler for the add button.
     * Adds a filter of a given type at the given position.
     *
     */
    static addFilter(rootFilter: Filter, position: string, type: string): ComparisonFilter | NegationFilter | CombinationFilter;
    /**
     * Changes a filter at a position to a given typ.
     *
     */
    static changeFilter(rootFilter: Filter, position: string, type: string): ComparisonFilter | NegationFilter | CombinationFilter;
    /**
     * Removes a filter at a given position.
     *
     */
    static removeFilter: (rootFilter: Filter, position: string) => Filter;
    /**
     * Helper method for FilterUtil.filterToTree().
     */
    static filterToTreeHelper: (filter: Filter) => any;
    /**
     * Maps a GeoStyler filter to an antd treeData object.
     */
    static filterToTree: (filter: Filter) => any[];
}
export default FilterUtil;
