import { Injector, OnDestroy, OnInit, QueryList, TemplateRef } from '@angular/core';
import { DateRange } from '@microsoft/windows-admin-center-sdk/core/base/date/date-range';
import { CoreBaseComponent } from '../common/base.component';
import { DataTableColumnComponent } from '../data-table/data-table-column.component';
import { DataTableComponent } from '../data-table/data-table.component';
import { ApplyMode, QueryData, QueryDataItem, QueryDataItemPresetOptionContent, QueryDataItemValueType, QueryDataOperand } from './query-editor-contract';
import * as i0 from "@angular/core";
export interface QueryEditorDataTableColumnListItem {
    label: string;
    value: string;
    queryEditorType: QueryDataItemValueType;
    presetOptions?: QueryDataItemPresetOptionContent[];
}
export interface QueryEditorColumnDropdownData {
    field: string;
    isDropdown: boolean;
    queryEditorType: QueryDataItemValueType;
    options?: string[];
    presetOptions?: QueryDataItemPresetOptionContent[];
}
export declare class QueryEditorComponent extends CoreBaseComponent implements OnInit, OnDestroy {
    queryEditor: QueryData;
    internalColumnList: QueryEditorDataTableColumnListItem[];
    operands: any[];
    columnsDropdownData: Array<QueryEditorColumnDropdownData>;
    columnDropdownData: Array<any>;
    columnDropdownField: string;
    isColumnDropdownBusy: boolean;
    currentModifyingIndex: number;
    resourceStrings: {
        ColumnFilter: string;
        Delete: string;
        New: string;
        Reset: string;
        Unset: string;
        Selected: string;
        ReadOnly: string;
        Irremovable: string;
        RemovableHint: string;
        SelectKey: string;
        SelectValue: string;
    };
    isLoading: boolean;
    selectedHtml: HTMLElement;
    postSelectedHtml: HTMLElement;
    get queryDataItemValueType(): typeof QueryDataItemValueType;
    get queryDataOperand(): typeof QueryDataOperand;
    get role(): string;
    get ariaLabel(): string;
    multiSelectTemplate: TemplateRef<QueryDataItem>;
    textTemplate: TemplateRef<QueryDataItem>;
    singleSelectTemplate: TemplateRef<QueryDataItem>;
    timespanSelectTemplate: TemplateRef<QueryDataItem>;
    private enableGetDataTableUniqueValues;
    private isFocusInsideComponent;
    private isComponentClicked;
    private selectedItem;
    private isEditing;
    private checkValueFieldTruncatedRecords;
    applyMode: ApplyMode;
    private internalPresetQueryEditor;
    set presetQueryEditor(input: QueryData);
    get presetQueryEditor(): QueryData;
    showAddButton: boolean;
    showResetButton: boolean;
    disableResetButton: boolean;
    dataTable: DataTableComponent;
    protected get logSourceName(): string;
    /**
     * Set disableResetButton value
     * disableResetButton = true if queryEditor.contents == 0
     */
    private setDisableResetButton;
    constructor(injector: Injector);
    ngOnInit(): void;
    getTemplate(item: QueryDataItem): TemplateRef<QueryDataItem>;
    getItemDisplayValue(item: QueryDataItem): any;
    getItemOperatorDisplayValue(item: QueryDataItem): string;
    private getUniqueTableValue;
    set columnList(columnList: QueryList<DataTableColumnComponent>);
    onQueryEditorChange(index: number, isColumnUpdate?: boolean, needsUpdateIsValid?: boolean, isOperatorUpdate?: boolean): void;
    private updateColumnDropdownData;
    mouseupInside(): void;
    mouseupOut(): void;
    onValueFieldEnterKeydown($event: any, index: any): void;
    private focusOnSelectedHtml;
    private focusOnSelectedHtmlHelper;
    onPillEnterTrap($event: any, item: QueryDataItem, index: number): void;
    private focusOnElementInTrap;
    onPillExitTrap($event: any): void;
    onPillClick(item: QueryDataItem, index: number): void;
    applyTmpTextValueToValue(doNotSetTemporaryToFalse?: boolean): void;
    private applyWorkflow;
    private validateQueryEditor;
    applyQueryEditorToDatatable(input?: QueryData): void;
    newQueryEditor($event: any, isKeyEnterPressed?: boolean): void;
    private focusOnNewQueryPill;
    getMenuItemLabel(index: number): string;
    protected createIdBag(): MsftSme.StringMap<string>;
    private setUnsetProperty;
    setSelectedHtml(): void;
    private setEditingItemValidProperty;
    private filterUnsetValueItemAndSetInvalid;
    removeQueryEditorItem($event: any, index: any, isFromKeyboardPress?: boolean): void;
    private focusOnTheNextPillAfterRemove;
    private findNextFocusablePill;
    resetQueryEditor(): void;
    private customDeepCloneQueryEditor;
    getTimerangeDisplayValue(value: DateRange): string;
    private initializeOperandsList;
    private updateQueryEditorLabel;
    private newQueryEditorHelper;
    private columnListConstructor;
    private columnListHelper;
    private setIsEditing;
    checkValueFieldTruncated(input: any): boolean;
    protected getInitialHostClasses(): string[];
    private setSelectedItemValue;
    onCustomLabelEmit(label: string): void;
    private updatePresetQueryEditorCustomLabels;
    static ɵfac: i0.ɵɵFactoryDeclaration<QueryEditorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<QueryEditorComponent, "sme-query-editor", never, { "applyMode": "applyMode"; "presetQueryEditor": "presetQueryEditor"; "showAddButton": "showAddButton"; "showResetButton": "showResetButton"; "dataTable": "dataTable"; "columnList": "columnList"; }, {}, never, never, false, never>;
}
