import { OnDestroy } from '@angular/core';
import { GridBaseAPIService } from '../api.service';
import { IgxIconService } from '../../icon/icon.service';
import { FilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
import { IgxGridBaseComponent, IGridDataBindable } from '../grid-base.component';
import { IFilteringExpression, FilteringLogic } from '../../data-operations/filtering-expression.interface';
import { IgxColumnComponent, IgxDatePipeComponent } from '../grid';
/**
 *@hidden
 */
export declare class ExpressionUI {
    expression: IFilteringExpression;
    beforeOperator: FilteringLogic;
    afterOperator: FilteringLogic;
    isSelected: boolean;
    isVisible: boolean;
}
/**
 *@hidden
 */
export declare class IgxFilteringService implements OnDestroy {
    private gridAPI;
    private iconService;
    private columnsWithComplexFilter;
    private areEventsSubscribed;
    private destroy$;
    private isFiltering;
    private columnToExpressionsMap;
    private filterPipe;
    private titlecasePipe;
    private _datePipe;
    private columnStartIndex;
    gridId: string;
    isFilterRowVisible: boolean;
    filteredColumn: IgxColumnComponent;
    selectedExpression: IFilteringExpression;
    columnToFocus: IgxColumnComponent;
    shouldFocusNext: boolean;
    columnToMoreIconHidden: Map<string, boolean>;
    constructor(gridAPI: GridBaseAPIService<IgxGridBaseComponent & IGridDataBindable>, iconService: IgxIconService);
    ngOnDestroy(): void;
    readonly displayContainerWidth: number;
    readonly displayContainerScrollLeft: number;
    readonly unpinnedFilterableColumns: IgxColumnComponent[];
    readonly unpinnedColumns: IgxColumnComponent[];
    readonly grid: IgxGridBaseComponent & IGridDataBindable;
    readonly datePipe: IgxDatePipeComponent;
    /**
     * Subscribe to grid's events.
     */
    subscribeToEvents(): void;
    /**
     * Execute filtering on the grid.
     */
    filter(field: string): void;
    /**
     * Clear the filter of a given column.
     */
    clearFilter(field: string): 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): 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: IgxColumnComponent): void;
    /**
     * Focus a chip in a filterCell.
     */
    focusFilterCellChip(column: IgxColumnComponent, focusFirst: boolean): void;
    readonly filteredData: any[];
    readonly sortedData: any[];
    /**
     * Scrolls to a filterCell.
     */
    scrollToFilterCell(column: IgxColumnComponent, shouldFocusNext: boolean): void;
    private isFilteringTreeComplex;
    private getChildAndOperatorsCount;
    private generateExpressionsList;
}
