import { OnDestroy } from '@angular/core';
import { FilteringExpressionsTree, IFilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
import { IFilteringExpression, FilteringLogic } from '../../data-operations/filtering-expression.interface';
import { IFilteringOperation } from '../../data-operations/filtering-condition';
import { IgxOverlayService } from '../../services/overlay/overlay';
import { IgxIconService } from '../../icon/icon.service';
import { ExpressionUI } from './excel-style/common';
import { ColumnType, GridType } from '../common/grid.interface';
import * as i0 from "@angular/core";
/**
 * @hidden
 */
export declare class IgxFilteringService implements OnDestroy {
    private iconService;
    private _overlayService;
    isFilterRowVisible: boolean;
    filteredColumn: ColumnType;
    selectedExpression: IFilteringExpression;
    columnToMoreIconHidden: Map<string, boolean>;
    activeFilterCell: number;
    grid: GridType;
    private columnsWithComplexFilter;
    private areEventsSubscribed;
    private destroy$;
    private isFiltering;
    private columnToExpressionsMap;
    private columnStartIndex;
    private _filterMenuOverlaySettings;
    private lastActiveNode;
    constructor(iconService: IgxIconService, _overlayService: IgxOverlayService);
    ngOnDestroy(): void;
    toggleFilterDropdown(element: HTMLElement, column: ColumnType): void;
    /**
     * Subscribe to grid's events.
     */
    subscribeToEvents(): void;
    /**
     * Close filtering row if a column is hidden.
     */
    hideFilteringRowOnColumnVisibilityChange(col: ColumnType): void;
    /**
     * Internal method to create expressionsTree and filter grid used in both filter modes.
     */
    filterInternal(field: string, expressions?: FilteringExpressionsTree | Array<ExpressionUI>): void;
    /**
     * Execute filtering on the grid.
     */
    filter(field: string, value: any, conditionOrExpressionTree?: IFilteringOperation | IFilteringExpressionsTree, ignoreCase?: boolean): void;
    filter_global(term: any, condition: any, ignoreCase: any): void;
    /**
     * Clears the filter of a given column if name is provided. Otherwise clears the filters of all columns.
     */
    clearFilter(field: string): void;
    clear_filter(fieldName: string): void;
    /**
     * Filters all the `IgxColumnComponent` in the `IgxGridComponent` with the same condition.
     */
    filterGlobal(value: any, condition: any, ignoreCase?: any): void;
    /**
     * Register filtering SVG icons in the icon service.
     */
    registerSVGIcons(): void;
    /**
     * Returns the ExpressionUI array for a given column.
     */
    getExpressions(columnId: string): ExpressionUI[];
    /**
     * Recreates all ExpressionUIs for all columns. Executed after filtering to refresh the cache.
     */
    refreshExpressions(): void;
    /**
     * Remove an ExpressionUI for a given column.
     */
    removeExpression(columnId: string, indexToRemove: number): void;
    /**
     * Generate filtering tree for a given column from existing ExpressionUIs.
     */
    createSimpleFilteringTree(columnId: string, expressionUIList?: any): FilteringExpressionsTree;
    /**
     * Returns whether a complex filter is applied to a given column.
     */
    isFilterComplex(columnId: string): boolean;
    /**
     * Returns the string representation of the FilteringLogic operator.
     */
    getOperatorAsString(operator: FilteringLogic): any;
    /**
     * Generate the label of a chip from a given filtering expression.
     */
    getChipLabel(expression: IFilteringExpression): any;
    /**
     * Updates the content of a filterCell.
     */
    updateFilteringCell(column: ColumnType): void;
    generateExpressionsList(expressions: IFilteringExpressionsTree | IFilteringExpression, operator: FilteringLogic, expressionsUIs: ExpressionUI[]): void;
    isFilteringExpressionsTreeEmpty(expressionTree: IFilteringExpressionsTree): boolean;
    private filter_internal;
    /** Modifies the filteringState object to contain the newly added fitering conditions/expressions.
     * If createNewTree is true, filteringState will not be modified (because it directly affects the grid.filteringExpressionsTree),
     * but a new object is created and returned.
     */
    private prepare_filtering_expression;
    private isFilteringTreeComplex;
    private getChildAndOperatorsCount;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxFilteringService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<IgxFilteringService>;
}
