import { OnInit, OnDestroy, ElementRef, OnChanges, ChangeDetectorRef, EventEmitter, SimpleChanges, QueryList, Renderer2, AfterViewInit, TemplateRef, DoCheck } from '@angular/core';
import { FormControl, ControlValueAccessor, NgControl } from '@angular/forms';
import { BehaviorSubject, Observable } from 'rxjs';
import { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';
import { MatChipInputEvent, MatChipList } from '@angular/material/chips';
import { CdkDropList } from '@angular/cdk/drag-drop';
import { BaseDirective } from '../../base.directive';
import { EuiAutoCompleteItem } from './models/eui-autocomplete-item.model';
import { EuiChip } from '../eui-chip/models/eui-chip.model';
import { EuiChipDragDrop, EuiChipListComponent } from '../eui-chip-list';
import { EuiTemplateDirective } from '../../directives';
import * as i0 from "@angular/core";
export declare class EuiAutocompleteComponent extends BaseDirective implements OnInit, OnDestroy, ControlValueAccessor, OnChanges, AfterViewInit, DoCheck {
    private cd;
    protected _renderer: Renderer2;
    private control;
    get hasChips(): boolean;
    set hasChips(value: boolean);
    _hasChips: boolean;
    get async(): boolean;
    set async(value: boolean);
    _async: boolean;
    autocompleteData: EuiAutoCompleteItem[];
    autocompleteDataSelected: EuiAutoCompleteItem[];
    get addOnBlur(): boolean;
    set addOnBlur(value: boolean);
    _addOnBlur: boolean;
    get isFreeValueAllowed(): boolean;
    set isFreeValueAllowed(value: boolean);
    _isFreeValueAllowed: boolean;
    get isDuplicateValueAllowed(): boolean;
    set isDuplicateValueAllowed(value: boolean);
    _isDuplicateValueAllowed: boolean;
    chipsSortOrder: ('ASC' | 'DESC');
    itemsSortOrder: ('ASC' | 'DESC');
    placeholder: string;
    matching: ('startWith' | 'contains');
    chipsPosition: ('top' | 'bottom' | 'inside');
    panelWidth: number;
    classList: string;
    groupBy: string;
    get isLoading(): boolean;
    set isLoading(value: boolean);
    _isLoading: boolean;
    get isChipsRemovable(): boolean;
    set isChipsRemovable(value: boolean);
    _isChipsRemovable: boolean;
    get maxVisibleChipsCount(): any;
    set maxVisibleChipsCount(value: any);
    _maxVisibleChipsCount: any;
    get chipsLabelTruncateCount(): any;
    set chipsLabelTruncateCount(value: any);
    _chipsLabelTruncateCount: any;
    get isMaxVisibleChipsOpened(): boolean;
    set isMaxVisibleChipsOpened(value: boolean);
    _isMaxVisibleChipsOpened: boolean;
    get readonly(): boolean;
    set readonly(value: boolean);
    _readonly: boolean;
    toggleLinkMoreLabel: string;
    toggleLinkLessLabel: string;
    get isChipsSorted(): boolean;
    set isChipsSorted(value: boolean);
    _isChipsSorted: boolean;
    get isItemsSorted(): boolean;
    set isItemsSorted(value: boolean);
    _isItemsSorted: boolean;
    get isChipsDragAndDrop(): boolean;
    set isChipsDragAndDrop(value: boolean);
    _isChipsDragAndDrop: boolean;
    dragAndDropSourceName: string;
    dragAndDropConnectedTo: string[];
    closed: EventEmitter<any>;
    opened: EventEmitter<any>;
    selectionChanged: EventEmitter<EuiAutoCompleteItem[]>;
    itemAdded: EventEmitter<EuiAutoCompleteItem>;
    itemRemoved: EventEmitter<EuiAutoCompleteItem>;
    inputChanged: EventEmitter<string>;
    chipDragStarted: EventEmitter<EuiChipDragDrop>;
    chipDragReleased: EventEmitter<EuiChipDragDrop>;
    chipDropped: EventEmitter<EuiChipDragDrop>;
    clear: EventEmitter<any>;
    get cssClasses(): string;
    euiAutocompletePrependContent: QueryList<EuiAutocompletePrependContentDirective>;
    euiAutocompleteAppendContent: QueryList<EuiAutocompleteAppendContentDirective>;
    templates: QueryList<EuiTemplateDirective>;
    autocompleteInput: ElementRef<HTMLInputElement>;
    autocompleteInputTrigger: MatAutocompleteTrigger;
    matAutocomplete: MatAutocomplete;
    chipList: EuiChipListComponent;
    autocompleteOptionTemplate: TemplateRef<any>;
    autocompleteOptGroupTemplate: TemplateRef<any>;
    separatorKeysCodes: number[];
    autocompleteControl: FormControl;
    autocompleteOptions: BehaviorSubject<EuiAutoCompleteItem[]>;
    chips: EuiChip[];
    chipsListComponent: MatChipList;
    placeholderValue: string;
    isDisabled: boolean;
    distinctOptionGroups: string[];
    groupedItems: {
        [id: string]: Observable<EuiAutoCompleteItem[]>;
    };
    private destroy$;
    private nbClick;
    private ignoreOpenCloseEvents;
    private value;
    private fieldValue;
    constructor(cd: ChangeDetectorRef, _renderer: Renderer2, control: NgControl);
    ngOnChanges(c: SimpleChanges): void;
    ngOnInit(): void;
    ngDoCheck(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    addOnBlurHandler(event: FocusEvent): void;
    add(event: MatChipInputEvent): void;
    onOptionSelected(event: MatAutocompleteSelectedEvent): void;
    onChipRemove(e: {
        chips: EuiChip[];
        removed: EuiChip | {
            chip: EuiChip;
            event: Event;
        };
    }): void;
    chipsInit(e: {
        chipList: MatChipList;
        chipsListDragAndDropItems: CdkDropList;
    }): void;
    onClick(e: Event): void;
    resetNbClick(e: FocusEvent): void;
    trackByFn(index: number, item: EuiAutoCompleteItem): number;
    onClose(): void;
    onOpen(): void;
    onChipListFocus(): void;
    onKeyDownBackspace(): void;
    updatePosition(): void;
    writeValue(value: any): void;
    setDisabledState(isDisabled: boolean): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    clearInput(): void;
    onChipDropped(e: any): void;
    onChipDragStarted(e: any): void;
    onChipDragReleased(e: any): void;
    private inputValueHandler;
    private onChange;
    private onTouch;
    private readonlyHandler;
    private _filter;
    private mapAsChip;
    private generateId;
    private orderItems;
    private groupingHandler;
    static ɵfac: i0.ɵɵFactoryDef<EuiAutocompleteComponent, [null, null, { optional: true; self: true; }]>;
    static ɵcmp: i0.ɵɵComponentDefWithMeta<EuiAutocompleteComponent, "eui-autocomplete, input[euiAutocomplete]", never, { "hasChips": "hasChips"; "async": "async"; "autocompleteData": "autocompleteData"; "autocompleteDataSelected": "autocompleteDataSelected"; "addOnBlur": "addOnBlur"; "isFreeValueAllowed": "isFreeValueAllowed"; "isDuplicateValueAllowed": "isDuplicateValueAllowed"; "chipsSortOrder": "chipsSortOrder"; "itemsSortOrder": "itemsSortOrder"; "placeholder": "placeholder"; "matching": "matching"; "chipsPosition": "chipsPosition"; "panelWidth": "panelWidth"; "classList": "classList"; "groupBy": "groupBy"; "isLoading": "isLoading"; "isChipsRemovable": "isChipsRemovable"; "maxVisibleChipsCount": "maxVisibleChipsCount"; "chipsLabelTruncateCount": "chipsLabelTruncateCount"; "isMaxVisibleChipsOpened": "isMaxVisibleChipsOpened"; "readonly": "readonly"; "toggleLinkMoreLabel": "toggleLinkMoreLabel"; "toggleLinkLessLabel": "toggleLinkLessLabel"; "isChipsSorted": "isChipsSorted"; "isItemsSorted": "isItemsSorted"; "isChipsDragAndDrop": "isChipsDragAndDrop"; "dragAndDropSourceName": "dragAndDropSourceName"; "dragAndDropConnectedTo": "dragAndDropConnectedTo"; }, { "closed": "closed"; "opened": "opened"; "selectionChanged": "selectionChanged"; "itemAdded": "itemAdded"; "itemRemoved": "itemRemoved"; "inputChanged": "inputChanged"; "chipDragStarted": "chipDragStarted"; "chipDragReleased": "chipDragReleased"; "chipDropped": "chipDropped"; "clear": "clear"; }, ["euiAutocompletePrependContent", "euiAutocompleteAppendContent", "templates"], ["euiAutocompletePrependContent", "euiAutocompleteAppendContent"]>;
}
export declare class EuiAutocompletePrependContentDirective {
    static ɵfac: i0.ɵɵFactoryDef<EuiAutocompletePrependContentDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDefWithMeta<EuiAutocompletePrependContentDirective, "euiAutocompletePrependContent", never, {}, {}, never>;
}
export declare class EuiAutocompleteAppendContentDirective {
    static ɵfac: i0.ɵɵFactoryDef<EuiAutocompleteAppendContentDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDefWithMeta<EuiAutocompleteAppendContentDirective, "euiAutocompleteAppendContent", never, {}, {}, never>;
}
