import { AfterViewInit, EventEmitter, PipeTransform } from '@angular/core';
import { ChangeDetectorRef, QueryList, ElementRef, OnDestroy } from '@angular/core';
import { IButtonGroupEventArgs } from '../buttonGroup/buttonGroup.component';
import { IgxChipComponent } from '../chips/chip.component';
import { DisplayDensityBase, IDisplayDensityOptions } from '../core/displayDensity';
import { IQueryBuilderResourceStrings } from '../core/i18n/query-builder-resources';
import { PlatformUtil } from '../core/utils';
import { FilteringLogic, IFilteringExpression } from '../data-operations/filtering-expression.interface';
import { FilteringExpressionsTree, IExpressionTree } from '../data-operations/filtering-expressions-tree';
import { IgxDatePickerComponent } from '../date-picker/date-picker.component';
import { IgxOverlayOutletDirective, IgxToggleDirective } from '../directives/toggle/toggle.directive';
import { FieldType } from '../grids/common/grid.interface';
import { IActiveNode } from '../grids/grid-navigation.service';
import { IgxIconService } from '../icon/public_api';
import { IgxSelectComponent } from '../select/select.component';
import { OverlaySettings } from '../services/overlay/utilities';
import { IgxTimePickerComponent } from '../time-picker/time-picker.component';
import { IgxQueryBuilderHeaderComponent } from './query-builder-header.component';
import * as i0 from "@angular/core";
import * as i1 from "./query-builder-header.component";
import * as i2 from "@angular/common";
import * as i3 from "@angular/forms";
import * as i4 from "../directives/button/button.directive";
import * as i5 from "../buttonGroup/buttonGroup.component";
import * as i6 from "../date-picker/date-picker.module";
import * as i7 from "../directives/date-time-editor/date-time-editor.directive";
import * as i8 from "../input-group/input-group.component";
import * as i9 from "../time-picker/time-picker.component";
import * as i10 from "../chips/chips.module";
import * as i11 from "../directives/drag-drop/drag-drop.directive";
import * as i12 from "../icon/public_api";
import * as i13 from "../select/select.module";
import * as i14 from "../directives/toggle/toggle.directive";
export declare class IgxFieldFormatterPipe implements PipeTransform {
    transform(value: any, formatter: (v: any, data: any, fieldData?: any) => any, rowData: any, fieldData?: any): any;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxFieldFormatterPipe, never>;
    static ɵpipe: i0.ɵɵPipeDeclaration<IgxFieldFormatterPipe, "fieldFormatter", false>;
}
/**
 * @hidden @internal
 */
declare class ExpressionItem {
    parent: ExpressionGroupItem;
    selected: boolean;
    constructor(parent?: ExpressionGroupItem);
}
/**
 * @hidden @internal
 */
declare class ExpressionGroupItem extends ExpressionItem {
    operator: FilteringLogic;
    children: ExpressionItem[];
    constructor(operator: FilteringLogic, parent?: ExpressionGroupItem);
}
/**
 * @hidden @internal
 */
declare class ExpressionOperandItem extends ExpressionItem {
    expression: IFilteringExpression;
    inEditMode: boolean;
    inAddMode: boolean;
    hovered: boolean;
    fieldLabel: string;
    constructor(expression: IFilteringExpression, parent: ExpressionGroupItem);
}
/**
 * A component used for operating with complex filters by creating or editing conditions
 * and grouping them using AND/OR logic.
 * It is used internally in the Advanced Filtering of the Grid.
 *
 * @example
 * ```html
 * <igx-query-builder [fields]="this.fields">
 * </igx-query-builder>
 * ```
 */
export declare class IgxQueryBuilderComponent extends DisplayDensityBase implements AfterViewInit, OnDestroy {
    cdr: ChangeDetectorRef;
    protected iconService: IgxIconService;
    protected platform: PlatformUtil;
    protected _localeId: string;
    protected _displayDensityOptions?: IDisplayDensityOptions;
    /**
     * @hidden @internal
     */
    cssClass: string;
    /**
     * @hidden @internal
     */
    fieldSelect: IgxSelectComponent;
    /**
     * @hidden @internal
     */
    conditionSelect: IgxSelectComponent;
    /**
     * @hidden @internal
     */
    searchValueInput: ElementRef;
    /**
     * @hidden @internal
     */
    picker: IgxDatePickerComponent | IgxTimePickerComponent;
    /**
     * @hidden @internal
     */
    addRootAndGroupButton: ElementRef;
    /**
     * @hidden @internal
     */
    addConditionButton: ElementRef;
    /**
     * @hidden @internal
     */
    headerContent: IgxQueryBuilderHeaderComponent;
    /**
     * @hidden @internal
     */
    set editingInputsContainer(value: ElementRef);
    /**
     * @hidden @internal
     */
    get editingInputsContainer(): ElementRef;
    /**
     * @hidden @internal
     */
    set addModeContainer(value: ElementRef);
    /**
     * @hidden @internal
     */
    get addModeContainer(): ElementRef;
    /**
     * @hidden @internal
     */
    set currentGroupButtonsContainer(value: ElementRef);
    /**
     * @hidden @internal
     */
    get currentGroupButtonsContainer(): ElementRef;
    /**
     * @hidden @internal
     */
    contextMenuToggle: IgxToggleDirective;
    /**
     * @hidden @internal
     */
    chips: QueryList<IgxChipComponent>;
    /**
     * @hidden @internal
     */
    display: string;
    /**
     * @hidden @internal
     */
    protected expressionsContainer: ElementRef;
    /**
     * @hidden @internal
     */
    protected overlayOutlet: IgxOverlayOutletDirective;
    /**
     * @hidden @internal
     */
    rootGroup: ExpressionGroupItem;
    /**
     * @hidden @internal
     */
    selectedExpressions: ExpressionOperandItem[];
    /**
     * @hidden @internal
     */
    selectedGroups: ExpressionGroupItem[];
    /**
     * @hidden @internal
     */
    currentGroup: ExpressionGroupItem;
    /**
     * @hidden @internal
     */
    editedExpression: ExpressionOperandItem;
    /**
     * @hidden @internal
     */
    addModeExpression: ExpressionOperandItem;
    /**
     * @hidden @internal
     */
    contextualGroup: ExpressionGroupItem;
    /**
     * @hidden @internal
     */
    filteringLogics: any;
    /**
     * @hidden @internal
     */
    selectedCondition: string;
    /**
     * @hidden @internal
     */
    searchValue: any;
    /**
     * @hidden @internal
     */
    lastActiveNode: IActiveNode;
    /**
     * @hidden @internal
     */
    pickerOutlet: IgxOverlayOutletDirective | ElementRef;
    /**
     * @hidden @internal
     */
    fieldSelectOverlaySettings: OverlaySettings;
    /**
     * @hidden @internal
     */
    conditionSelectOverlaySettings: OverlaySettings;
    private destroy$;
    private _selectedField;
    private _clickTimer;
    private _dblClickDelay;
    private _preventChipClick;
    private _editingInputsContainer;
    private _addModeContainer;
    private _currentGroupButtonsContainer;
    private _fields;
    private _expressionTree;
    private _locale;
    private _resourceStrings;
    private _positionSettings;
    constructor(cdr: ChangeDetectorRef, iconService: IgxIconService, platform: PlatformUtil, _localeId: string, _displayDensityOptions?: IDisplayDensityOptions);
    /**
     * @hidden @internal
     */
    ngAfterViewInit(): void;
    /**
     * @hidden @internal
     */
    ngOnDestroy(): void;
    /**
     * @hidden @internal
     */
    set selectedField(value: FieldType);
    /**
     * @hidden @internal
     */
    get selectedField(): FieldType;
    /**
    * Returns the fields.
    */
    get fields(): FieldType[];
    /**
     * An @Input property that sets the fields.
     */
    set fields(fields: FieldType[]);
    /**
    * Returns the expression tree.
    */
    get expressionTree(): IExpressionTree;
    /**
     * An @Input property that sets the expression tree.
     */
    set expressionTree(expressionTree: IExpressionTree);
    /**
     * Gets the `locale` of the query builder.
     * If not set, defaults to application's locale.
     */
    get locale(): string;
    /**
     * Sets the `locale` of the query builder.
     * Expects a valid BCP 47 language tag.
     */
    set locale(value: string);
    /**
     * Sets the resource strings.
     * By default it uses EN resources.
     */
    set resourceStrings(value: IQueryBuilderResourceStrings);
    /**
     * Returns the resource strings.
     */
    get resourceStrings(): IQueryBuilderResourceStrings;
    /**
     * Event fired as the expression tree is changed.
     *
     * ```html
     *  <igx-query-builder (expressionTreeChange)='onExpressionTreeChange()'></igx-query-builder>
     * ```
     */
    expressionTreeChange: EventEmitter<any>;
    /**
     * @hidden @internal
     */
    overlaySettings: OverlaySettings;
    /**
     * @hidden @internal
     */
    setPickerOutlet(outlet?: IgxOverlayOutletDirective | ElementRef): void;
    /**
     * @hidden @internal
     */
    get isContextMenuVisible(): boolean;
    /**
     * @hidden @internal
     */
    get hasEditedExpression(): boolean;
    /**
     * @hidden @internal
     */
    addCondition(parent: ExpressionGroupItem, afterExpression?: ExpressionItem): void;
    /**
     * @hidden @internal
     */
    addAndGroup(parent?: ExpressionGroupItem, afterExpression?: ExpressionItem): void;
    /**
     * @hidden @internal
     */
    addOrGroup(parent?: ExpressionGroupItem, afterExpression?: ExpressionItem): void;
    /**
     * @hidden @internal
     */
    endGroup(groupItem: ExpressionGroupItem): void;
    /**
     * @hidden @internal
     */
    commitOperandEdit(): void;
    /**
     * @hidden @internal
     */
    cancelOperandAdd(): void;
    /**
     * @hidden @internal
     */
    cancelOperandEdit(): void;
    /**
     * @hidden @internal
     */
    operandCanBeCommitted(): boolean;
    /**
     * @hidden @internal
     */
    exitOperandEdit(): void;
    /**
     * @hidden @internal
     */
    isExpressionGroup(expression: ExpressionItem): boolean;
    /**
     * @hidden @internal
     */
    onChipRemove(expressionItem: ExpressionItem): void;
    /**
     * @hidden @internal
     */
    onChipClick(expressionItem: ExpressionOperandItem): void;
    /**
     * @hidden @internal
     */
    onChipDblClick(expressionItem: ExpressionOperandItem): void;
    /**
     * @hidden @internal
     */
    enterExpressionEdit(expressionItem: ExpressionOperandItem): void;
    /**
     * @hidden @internal
     */
    clearSelection(): void;
    /**
     * @hidden @internal
     */
    enterExpressionAdd(expressionItem: ExpressionOperandItem): void;
    /**
     * @hidden @internal
     */
    contextMenuClosed(): void;
    /**
     * @hidden @internal
     */
    onKeyDown(eventArgs: KeyboardEvent): void;
    /**
     * @hidden @internal
     */
    createAndGroup(): void;
    /**
     * @hidden @internal
     */
    createOrGroup(): void;
    /**
     * @hidden @internal
     */
    deleteFilters(): void;
    /**
     * @hidden @internal
     */
    onGroupClick(groupItem: ExpressionGroupItem): void;
    /**
     * @hidden @internal
     */
    ungroup(): void;
    /**
     * @hidden @internal
     */
    deleteGroup(): void;
    /**
     * @hidden @internal
     */
    selectFilteringLogic(event: IButtonGroupEventArgs): void;
    /**
     * @hidden @internal
     */
    getConditionFriendlyName(name: string): string;
    /**
     * @hidden @internal
     */
    isDate(value: any): boolean;
    /**
     * @hidden @internal
     */
    onExpressionsScrolled(): void;
    /**
     * @hidden @internal
     */
    invokeClick(eventArgs: KeyboardEvent): void;
    /**
     * @hidden @internal
     */
    openPicker(args: KeyboardEvent): void;
    /**
     * @hidden @internal
     */
    onOutletPointerDown(event: any): void;
    /**
     * @hidden @internal
     */
    getConditionList(): string[];
    /**
     * @hidden @internal
     */
    getFormatter(field: string): (value: any, rowData?: any) => any;
    /**
     * @hidden @internal
     */
    getFormat(field: string): string;
    /**
     * @hidden @internal
     */
    setAddButtonFocus(): void;
    /**
     * @hidden @internal
     */
    context(expression: ExpressionItem, afterExpression?: ExpressionItem): {
        $implicit: ExpressionItem;
        afterExpression: ExpressionItem;
    };
    /**
     * @hidden @internal
     */
    onChipSelectionEnd(): void;
    private setFormat;
    private setFilters;
    private onToggleExpression;
    private toggleExpression;
    private addGroup;
    private createExpressionGroupItem;
    /**
     * @hidden @internal
     */
    createExpressionTreeFromGroupItem(groupItem: ExpressionGroupItem): FilteringExpressionsTree;
    private toggleContextMenu;
    private findSingleSelectedGroup;
    private isInsideGroup;
    private deleteItem;
    private createGroup;
    private toggleGroup;
    private toggleGroupRecursive;
    private deselectParentRecursive;
    private calculateContextMenuTarget;
    private scrollElementIntoView;
    private init;
    private registerSVGIcons;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxQueryBuilderComponent, [null, null, null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IgxQueryBuilderComponent, "igx-query-builder", never, { "fields": "fields"; "expressionTree": "expressionTree"; "locale": "locale"; "resourceStrings": "resourceStrings"; }, { "expressionTreeChange": "expressionTreeChange"; }, ["headerContent"], ["igx-query-builder-header"], false>;
}
/**
 * @hidden
 */
export declare class IgxQueryBuilderModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxQueryBuilderModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<IgxQueryBuilderModule, [typeof IgxQueryBuilderComponent, typeof i1.IgxQueryBuilderHeaderComponent, typeof IgxFieldFormatterPipe], [typeof i2.CommonModule, typeof i3.FormsModule, typeof i4.IgxButtonModule, typeof i5.IgxButtonGroupModule, typeof i6.IgxDatePickerModule, typeof i7.IgxDateTimeEditorModule, typeof i8.IgxInputGroupModule, typeof i9.IgxTimePickerModule, typeof i10.IgxChipsModule, typeof i11.IgxDragDropModule, typeof i12.IgxIconModule, typeof i13.IgxSelectModule, typeof i14.IgxToggleModule], [typeof IgxQueryBuilderComponent, typeof i1.IgxQueryBuilderHeaderComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<IgxQueryBuilderModule>;
}
export {};
