import { AfterViewInit, EventEmitter, TemplateRef } from '@angular/core';
import { ChangeDetectorRef, QueryList, ElementRef, OnDestroy } from '@angular/core';
import { IgxChipComponent } from '../chips/chip.component';
import { IQueryBuilderResourceStrings } from '../core/i18n/query-builder-resources';
import { PlatformUtil, trackByIdentity } from '../core/utils';
import { IExpressionTree, IFilteringExpressionsTree } from '../data-operations/filtering-expressions-tree';
import { IgxOverlayOutletDirective } from '../directives/toggle/toggle.directive';
import { FieldType, EntityType } from '../grids/common/grid.interface';
import { IgxSelectComponent } from '../select/select.component';
import { OverlaySettings } from '../services/overlay/utilities';
import { IComboSelectionChangingEventArgs } from "../combo/combo.component";
import { IChangeCheckboxEventArgs } from '../checkbox/checkbox-base.directive';
import { ISelectionEventArgs } from '../drop-down/drop-down.common';
import { IgxQueryBuilderSearchValueTemplateDirective } from './query-builder.directives';
import { IgxQueryBuilderComponent } from './query-builder.component';
import { IgxQueryBuilderDragService } from './query-builder-drag.service';
import { ExpressionGroupItem, ExpressionItem, ExpressionOperandItem } from './query-builder.common';
import * as i0 from "@angular/core";
/** @hidden */
export declare class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
    cdr: ChangeDetectorRef;
    dragService: IgxQueryBuilderDragService;
    protected platform: PlatformUtil;
    private elRef;
    protected _localeId: string;
    /**
     * @hidden @internal
     */
    _expressionTree: IExpressionTree;
    /**
     * @hidden @internal
     */
    _expressionTreeCopy: IExpressionTree;
    /**
     * @hidden @internal
     */
    get getClass(): string;
    /**
     * Sets/gets the entities.
     */
    entities: EntityType[];
    /**
     * Sets/gets the parent query builder component.
     */
    queryBuilder: IgxQueryBuilderComponent;
    /**
     * Sets/gets the search value template.
     */
    searchValueTemplate: TemplateRef<IgxQueryBuilderSearchValueTemplateDirective>;
    /**
    * Returns the parent expression operand.
    */
    get parentExpression(): ExpressionOperandItem;
    /**
     * Sets the parent expression operand.
     */
    set parentExpression(value: ExpressionOperandItem);
    /**
    * Returns the fields.
    */
    get fields(): FieldType[];
    /**
     * Sets the fields.
     */
    set fields(fields: FieldType[]);
    /**
    * Returns the expression tree.
    */
    get expressionTree(): IExpressionTree;
    /**
     * 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;
    /**
     * Gets/sets the expected return field.
     */
    expectedReturnField: string;
    /**
     * Event fired as the expression tree is changed.
     */
    expressionTreeChange: EventEmitter<IExpressionTree>;
    /**
     * Event fired if a nested query builder tree is being edited.
     */
    inEditModeChange: EventEmitter<ExpressionOperandItem>;
    protected entitySelect: IgxSelectComponent;
    private editingInputs;
    private returnFieldsCombo;
    protected returnFieldSelect: IgxSelectComponent;
    private fieldSelect;
    private conditionSelect;
    private searchValueInput;
    private picker;
    private addRootAndGroupButton;
    private addConditionButton;
    private entityChangeDialog;
    private addExpressionItemDropDown;
    private groupContextMenuDropDown;
    /**
     * @hidden @internal
     */
    expressionsChips: QueryList<IgxChipComponent>;
    protected set editingInputsContainer(value: ElementRef);
    /** @hidden */
    protected get editingInputsContainer(): ElementRef;
    protected set currentGroupButtonsContainer(value: ElementRef);
    /** @hidden */
    protected get currentGroupButtonsContainer(): ElementRef;
    private expressionsContainer;
    private overlayOutlet;
    private innerQueries;
    /**
     * @hidden @internal
     */
    innerQueryNewExpressionTree: IExpressionTree;
    /**
     * @hidden @internal
     */
    rootGroup: ExpressionGroupItem;
    /**
     * @hidden @internal
     */
    selectedExpressions: ExpressionOperandItem[];
    /**
     * @hidden @internal
     */
    currentGroup: ExpressionGroupItem;
    /**
     * @hidden @internal
     */
    contextualGroup: ExpressionGroupItem;
    /**
     * @hidden @internal
     */
    filteringLogics: any;
    /**
     * @hidden @internal
     */
    selectedCondition: string;
    /**
     * @hidden @internal
     */
    searchValue: {
        value: any;
    };
    /**
     * @hidden @internal
     */
    pickerOutlet: IgxOverlayOutletDirective | ElementRef;
    /**
     * @hidden @internal
     */
    prevFocusedExpression: ExpressionOperandItem;
    /**
     * @hidden @internal
     */
    initialOperator: number;
    /**
     * @hidden @internal
     */
    returnFieldSelectOverlaySettings: OverlaySettings;
    /**
     * @hidden @internal
     */
    entitySelectOverlaySettings: OverlaySettings;
    /**
     * @hidden @internal
     */
    fieldSelectOverlaySettings: OverlaySettings;
    /**
     * @hidden @internal
     */
    conditionSelectOverlaySettings: OverlaySettings;
    /**
     * @hidden @internal
     */
    addExpressionDropDownOverlaySettings: OverlaySettings;
    /**
     * @hidden @internal
     */
    groupContextMenuDropDownOverlaySettings: OverlaySettings;
    private destroy$;
    private _timeoutId;
    private _lastFocusedChipIndex;
    private _focusDelay;
    private _parentExpression;
    private _selectedEntity;
    private _selectedReturnFields;
    private _selectedField;
    private _editingInputsContainer;
    private _currentGroupButtonsContainer;
    private _addModeExpression;
    private _editedExpression;
    private _preventInit;
    private _prevFocusedContainer;
    private _expandedExpressions;
    private _fields;
    private _locale;
    private _entityNewValue;
    private _resourceStrings;
    /**
     * Returns if the select entity dropdown at the root level is disabled after the initial selection.
     */
    get disableEntityChange(): boolean;
    /**
     * Returns if the fields combo at the root level is disabled.
     */
    get disableReturnFieldsChange(): boolean;
    /**
     * Returns the current level.
     */
    get level(): number;
    private _positionSettings;
    private _overlaySettings;
    /** @hidden */
    protected isAdvancedFiltering(): boolean;
    /** @hidden */
    protected isHierarchicalNestedQuery(): boolean;
    /** @hidden */
    protected isSearchValueInputDisabled(): boolean;
    constructor(cdr: ChangeDetectorRef, dragService: IgxQueryBuilderDragService, platform: PlatformUtil, elRef: ElementRef, _localeId: string);
    /**
     * @hidden @internal
     */
    ngAfterViewInit(): void;
    /**
     * @hidden @internal
     */
    ngOnDestroy(): void;
    /**
     * @hidden @internal
     */
    set selectedEntity(value: string);
    /**
     * @hidden @internal
     */
    get selectedEntity(): EntityType;
    /**
     * @hidden @internal
     */
    onEntitySelectChanging(event: ISelectionEventArgs): void;
    /**
     * @hidden
     */
    onShowEntityChangeDialogChange(eventArgs: IChangeCheckboxEventArgs): void;
    /**
     * @hidden
     */
    onEntityChangeCancel(): void;
    /**
     * @hidden
     */
    onEntityChangeConfirm(): void;
    /**
     * @hidden @internal
     */
    set selectedReturnFields(value: string[]);
    /**
     * @hidden @internal
     */
    get selectedReturnFields(): string[];
    /**
     * @hidden @internal
     */
    set selectedField(value: FieldType);
    /**
     * @hidden @internal
     */
    get selectedField(): FieldType;
    /**
     * @hidden @internal
     *
     * used by the grid
     */
    setPickerOutlet(outlet?: IgxOverlayOutletDirective | ElementRef): void;
    /**
     * @hidden @internal
     *
     * used by the grid
     */
    get isContextMenuVisible(): boolean;
    /**
     * @hidden @internal
     */
    get hasEditedExpression(): boolean;
    /**
     * @hidden @internal
     */
    addCondition(parent: ExpressionGroupItem, afterExpression?: ExpressionOperandItem, isUIInteraction?: boolean): void;
    /**
     * @hidden @internal
     */
    addReverseGroup(parent?: ExpressionGroupItem, afterExpression?: ExpressionItem): void;
    /**
     * @hidden @internal
     */
    endGroup(groupItem: ExpressionGroupItem): void;
    /**
     * @hidden @internal
     */
    commitExpression(): void;
    /**
     * @hidden @internal
     */
    discardExpression(expressionItem?: ExpressionOperandItem): void;
    /**
     * @hidden @internal
     */
    commitOperandEdit(): void;
    /**
     * @hidden @internal
     */
    cancelOperandAdd(): void;
    /**
     * @hidden @internal
     */
    deleteItem: (expressionItem: ExpressionItem, skipEmit?: boolean) => void;
    /**
     * @hidden @internal
     */
    cancelOperandEdit(): void;
    /**
     * @hidden @internal
     */
    operandCanBeCommitted(): boolean;
    /**
     * @hidden @internal
     */
    canCommitCurrentState(): boolean;
    /**
     * @hidden @internal
     */
    commitCurrentState(): void;
    /**
     * @hidden @internal
     */
    exitEditAddMode(shouldPreventInit?: boolean): void;
    /**
     * @hidden @internal
     *
     * used by the grid
     */
    exitOperandEdit(): void;
    /**
     * @hidden @internal
     */
    isExpressionGroup(expression: ExpressionItem): boolean;
    /**
     * @hidden @internal
     */
    onExpressionFocus(expressionItem: ExpressionOperandItem): void;
    /**
     * @hidden @internal
     */
    onExpressionBlur(event: any, expressionItem: ExpressionOperandItem): void;
    /**
     * @hidden @internal
     */
    onChipRemove(expressionItem: ExpressionItem): void;
    /**
     * @hidden @internal
     */
    focusChipAfterDrag: (index: number) => void;
    /**
     * @hidden @internal
     */
    addExpressionBlur(): void;
    /**
     * @hidden @internal
     */
    onChipClick(expressionItem: ExpressionOperandItem, chip: IgxChipComponent): void;
    /**
     * @hidden @internal
     */
    enterExpressionEdit(expressionItem: ExpressionOperandItem, chip?: IgxChipComponent): void;
    /**
     * @hidden @internal
     */
    clickExpressionAdd(targetButton: HTMLElement, chip: IgxChipComponent): void;
    /**
     * @hidden @internal
     */
    openExpressionAddDialog(targetButton: HTMLElement): void;
    /**
     * @hidden @internal
     */
    enterExpressionAdd(event: ISelectionEventArgs, expressionItem: ExpressionOperandItem): void;
    /**
     * @hidden @internal
     */
    enterEditMode(expressionItem: ExpressionOperandItem): void;
    /**
     * @hidden @internal
     */
    onConditionSelectChanging(event: ISelectionEventArgs): void;
    /**
     * @hidden @internal
     */
    onKeyDown(eventArgs: KeyboardEvent): void;
    /**
     * @hidden @internal
     */
    onGroupClick(groupContextMenuDropDown: any, targetButton: HTMLButtonElement, groupItem: ExpressionGroupItem): void;
    /**
     * @hidden @internal
     */
    getOperator(expressionItem: any): any;
    /**
     * @hidden @internal
     */
    getSwitchGroupText(expressionItem: any): string;
    /**
     * @hidden @internal
     */
    onGroupContextMenuDropDownSelectionChanging(event: ISelectionEventArgs): void;
    /**
     * @hidden @internal
     */
    ungroup(): void;
    /**
     * @hidden @internal
     */
    selectFilteringLogic(index: number): void;
    /**
     * @hidden @internal
     */
    getConditionFriendlyName(name: string): string;
    /**
     * @hidden @internal
     */
    isDate(value: any): value is Date;
    /**
     * @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
     *
     * used by the grid
     */
    setAddButtonFocus(): void;
    /**
     * @hidden @internal
     */
    context(expression: ExpressionItem, afterExpression?: ExpressionItem): {
        $implicit: ExpressionItem;
        afterExpression: ExpressionItem;
    };
    formatReturnFields(innerTree: IFilteringExpressionsTree): string;
    isInEditMode(): boolean;
    onInEditModeChanged(expressionItem: ExpressionOperandItem): void;
    getExpressionTreeCopy(expressionTree: IExpressionTree, shouldAssignInnerQueryExprTree?: boolean): IExpressionTree;
    onSelectAllClicked(): void;
    onReturnFieldSelectChanging(event: IComboSelectionChangingEventArgs | ISelectionEventArgs): void;
    initExpressionTree(selectedEntityName: string, selectedReturnFields: string[]): void;
    getSearchValueTemplateContext(defaultSearchValueTemplate: any): any;
    private getPipeArgs;
    private selectDefaultCondition;
    private getFilters;
    private addGroup;
    private createExpressionGroupItem;
    private createExpressionTreeFromGroupItem;
    private scrollElementIntoView;
    private focusEditedExpressionChip;
    private init;
    /** rootGroup is recreated after clicking Apply, which sets new expressionTree and calls init()*/
    protected trackExpressionItem: typeof trackByIdentity;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxQueryBuilderTreeComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IgxQueryBuilderTreeComponent, "igx-query-builder-tree", never, { "entities": { "alias": "entities"; "required": false; }; "queryBuilder": { "alias": "queryBuilder"; "required": false; }; "searchValueTemplate": { "alias": "searchValueTemplate"; "required": false; }; "parentExpression": { "alias": "parentExpression"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "expressionTree": { "alias": "expressionTree"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "resourceStrings": { "alias": "resourceStrings"; "required": false; }; "expectedReturnField": { "alias": "expectedReturnField"; "required": false; }; }, { "expressionTreeChange": "expressionTreeChange"; "inEditModeChange": "inEditModeChange"; }, never, never, true, never>;
}
