import { ChangeDetectorRef, QueryList, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';
import { VerticalAlignment, HorizontalAlignment, OverlaySettings } from '../../../services/overlay/utilities';
import { IgxFilteringService } from '../grid-filtering.service';
import { IgxOverlayService } from '../../../services/overlay/overlay';
import { FilteringLogic, IFilteringExpression } from '../../../data-operations/filtering-expression.interface';
import { IgxChipComponent } from '../../../chips/chip.component';
import { IgxSelectComponent } from '../../../select/select.component';
import { IDragStartEventArgs, IDragBaseEventArgs } from '../../../directives/drag-drop/drag-drop.directive';
import { IgxToggleDirective, IgxOverlayOutletDirective } from '../../../directives/toggle/toggle.directive';
import { IButtonGroupEventArgs } from '../../../buttonGroup/buttonGroup.component';
import { IgxColumnComponent } from '../../columns/column.component';
import { IgxGridBaseComponent } from '../../grid-base.component';
/**
 *@hidden
 */
declare class ExpressionItem {
    constructor(parent?: ExpressionGroupItem);
    parent: ExpressionGroupItem;
    selected: boolean;
}
/**
 *@hidden
 */
declare class ExpressionGroupItem extends ExpressionItem {
    constructor(operator: FilteringLogic, parent?: ExpressionGroupItem);
    operator: FilteringLogic;
    children: ExpressionItem[];
}
/**
 *@hidden
 */
declare class ExpressionOperandItem extends ExpressionItem {
    constructor(expression: IFilteringExpression, parent: ExpressionGroupItem);
    expression: IFilteringExpression;
    inEditMode: boolean;
    inAddMode: boolean;
    hovered: boolean;
}
/**
 * @hidden
 */
export declare class IgxAdvancedFilteringDialogComponent implements AfterViewInit, OnDestroy {
    private element;
    cdr: ChangeDetectorRef;
    filteringService: IgxFilteringService;
    overlayComponentId: string;
    overlayService: IgxOverlayService;
    rootGroup: ExpressionGroupItem;
    selectedExpressions: ExpressionOperandItem[];
    selectedGroups: ExpressionGroupItem[];
    currentGroup: ExpressionGroupItem;
    editedExpression: ExpressionOperandItem;
    addModeExpression: ExpressionOperandItem;
    contextualGroup: ExpressionGroupItem;
    filteringLogics: any;
    selectedCondition: string;
    searchValue: any;
    _positionSettings: {
        horizontalStartPoint: HorizontalAlignment;
        verticalStartPoint: VerticalAlignment;
    };
    _overlaySettings: OverlaySettings;
    columnSelectOverlaySettings: OverlaySettings;
    conditionSelectOverlaySettings: OverlaySettings;
    columnSelect: IgxSelectComponent;
    conditionSelect: IgxSelectComponent;
    searchValueInput: ElementRef;
    addRootAndGroupButton: ElementRef;
    addConditionButton: ElementRef;
    editingInputsContainer: ElementRef;
    addModeContainer: ElementRef;
    currentGroupButtonsContainer: ElementRef;
    contextMenuToggle: IgxToggleDirective;
    chips: QueryList<IgxChipComponent>;
    protected expressionsContainer: ElementRef;
    overlayOutlet: IgxOverlayOutletDirective;
    display: string;
    private destroy$;
    private _selectedColumn;
    private _clickTimer;
    private _dblClickDelay;
    private _preventChipClick;
    private _editingInputsContainer;
    private _addModeContainer;
    private _currentGroupButtonsContainer;
    constructor(element: ElementRef, cdr: ChangeDetectorRef);
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    readonly displayDensity: string;
    selectedColumn: IgxColumnComponent;
    readonly grid: IgxGridBaseComponent;
    readonly filterableColumns: IgxColumnComponent[];
    dragStart(dragArgs: IDragStartEventArgs): void;
    dragEnd(dragArgs: IDragBaseEventArgs): void;
    addCondition(parent: ExpressionGroupItem, afterExpression?: ExpressionItem): void;
    addAndGroup(parent?: ExpressionGroupItem, afterExpression?: ExpressionItem): void;
    addOrGroup(parent?: ExpressionGroupItem, afterExpression?: ExpressionItem): void;
    endGroup(groupItem: ExpressionGroupItem): void;
    commitOperandEdit(): void;
    cancelOperandAdd(): void;
    cancelOperandEdit(): void;
    operandCanBeCommitted(): boolean;
    exitOperandEdit(): void;
    isExpressionGroup(expression: ExpressionItem): boolean;
    private addGroup;
    private createExpressionGroupItem;
    private createExpressionsTreeFromGroupItem;
    onChipRemove(expressionItem: ExpressionItem): void;
    onChipClick(expressionItem: ExpressionOperandItem): void;
    onChipDblClick(expressionItem: ExpressionOperandItem): void;
    enterExpressionEdit(expressionItem: ExpressionOperandItem): void;
    clearSelection(): void;
    enterExpressionAdd(expressionItem: ExpressionOperandItem): void;
    private onToggleExpression;
    private toggleExpression;
    private toggleContextMenu;
    private findSingleSelectedGroup;
    private isInsideGroup;
    private deleteItem;
    onKeyDown(eventArgs: KeyboardEvent): void;
    createAndGroup(): void;
    createOrGroup(): void;
    private createGroup;
    deleteFilters(): void;
    onGroupClick(groupItem: ExpressionGroupItem): void;
    private toggleGroup;
    private toggleGroupRecursive;
    private deselectParentRecursive;
    private calculateContextMenuTarget;
    private scrollElementIntoView;
    ungroup(): void;
    deleteGroup(): void;
    selectFilteringLogic(event: IButtonGroupEventArgs): void;
    getConditionFriendlyName(name: string): string;
    isDate(value: any): boolean;
    onExpressionsScrolled(): void;
    invokeClick(eventArgs: KeyboardEvent): void;
    onOutletPointerDown(event: any): void;
    getConditionList(): string[];
    initialize(filteringService: IgxFilteringService, overlayService: IgxOverlayService, overlayComponentId: string): void;
    context(expression: ExpressionItem, afterExpression?: ExpressionItem): {
        $implicit: ExpressionItem;
        afterExpression: ExpressionItem;
    };
    onClearButtonClick(): void;
    closeDialog(): void;
    applyChanges(): void;
    onApplyButtonClick(): void;
    onChipSelectionEnd(): void;
}
export {};
