import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnDestroy, TemplateRef } from '@angular/core';
import { ControlValueAccessor, NgControl } from '@angular/forms';
import { Subject } from 'rxjs';
import { NgSelectComponent } from '@ng-select/ng-select';
import { EvoInputTheme } from '../../../evo-input';
import { EvoAutocompleteSize } from '../../types/evo-autocomplete-size';
import * as i0 from "@angular/core";
export declare type DropdownPosition = 'bottom' | 'top' | 'auto';
export declare type AddTagFn = (term: string) => any | Promise<any>;
export declare type SearchFn = (term: string, item: any) => boolean;
export declare type CompareWithFn = (a: any, b: any) => boolean;
export declare type GroupValueFn = (key: string | object, children: any[]) => string | object;
export declare class EvoAutocompleteComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {
    private readonly cdr;
    control: NgControl;
    theme: EvoInputTheme;
    size: EvoAutocompleteSize;
    isFocused: boolean;
    isSelectbox: boolean;
    isOpen: any;
    items: any[];
    bindLabel: string;
    bindValue: string;
    markFirst: boolean;
    placeholder: string;
    typeToSearchText: string;
    addTagText: string;
    loadingText: string;
    clearAllText: string;
    dropdownPosition: DropdownPosition;
    appendTo: string;
    loading: boolean;
    closeOnSelect: boolean;
    hideSelected: boolean;
    selectOnTab: boolean;
    openOnEnter: boolean;
    maxSelectedItems: number;
    groupBy: string | Function;
    groupValue: GroupValueFn;
    bufferAmount: number;
    virtualScroll: boolean;
    selectableGroup: boolean;
    selectableGroupAsModel: boolean;
    searchFn: SearchFn;
    clearOnBackspace: boolean;
    typeahead: Subject<string>;
    multiple: boolean;
    multipleInline: boolean;
    addTag: boolean | AddTagFn;
    clearable: boolean;
    errorsMessages: {
        [key: string]: string;
    };
    compareWith: CompareWithFn;
    _notFoundText: string;
    editQuery: boolean;
    blurEvent: EventEmitter<any>;
    focusEvent: EventEmitter<any>;
    changeEvent: EventEmitter<any>;
    openEvent: EventEmitter<any>;
    closeEvent: EventEmitter<any>;
    searchEvent: EventEmitter<{
        term: string;
        items: any[];
    }>;
    clearEvent: EventEmitter<any>;
    addEvent: EventEmitter<any>;
    removeEvent: EventEmitter<any>;
    scrollEvent: EventEmitter<{
        start: number;
        end: number;
    }>;
    scrollToEndEvent: EventEmitter<any>;
    ngSelectComponent: NgSelectComponent;
    labelTemp: TemplateRef<any>;
    multiLabelTemp: TemplateRef<any>;
    optionTemp: TemplateRef<any>;
    optgroupTemp: TemplateRef<any>;
    headerTemp: TemplateRef<any>;
    footerTemp: TemplateRef<any>;
    notFoundTemp: TemplateRef<any>;
    protected inputVal: string;
    protected readonly _destroy$: Subject<void>;
    protected _value: any;
    protected inputEl: HTMLInputElement;
    protected _searchable: any;
    get notFoundText(): string;
    constructor(cdr: ChangeDetectorRef, control: NgControl);
    set searchable(searchable: boolean);
    get searchable(): boolean;
    set setSelectbox(isSelectbox: boolean);
    set setTheme(theme: string | EvoInputTheme);
    get hasErrors(): boolean;
    get classes(): {
        [key: string]: boolean;
    };
    get value(): any;
    set value(value: unknown);
    getMultipleInlineItemsLabels(items: any[]): string;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    writeValue(value: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState(isDisabled: boolean): void;
    editQueryMode(): void;
    resetSearchQuery(): void;
    focus(): void;
    blur(): void;
    open(): void;
    close(): void;
    onFocusEvent(event: FocusEvent): void;
    onBlurEvent(event: FocusEvent): void;
    onChangeEvent(event: unknown): void;
    onClearClick(): void;
    protected _onChange: (_: any) => void;
    protected _onTouched: () => void;
    /**
     * Try to patch clear button icon
     */
    protected patchClearButtonIcon(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<EvoAutocompleteComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EvoAutocompleteComponent, "evo-autocomplete", never, { "size": "size"; "isOpen": "isOpen"; "items": "items"; "bindLabel": "bindLabel"; "bindValue": "bindValue"; "markFirst": "markFirst"; "placeholder": "placeholder"; "typeToSearchText": "typeToSearchText"; "addTagText": "addTagText"; "loadingText": "loadingText"; "clearAllText": "clearAllText"; "dropdownPosition": "dropdownPosition"; "appendTo": "appendTo"; "loading": "loading"; "closeOnSelect": "closeOnSelect"; "hideSelected": "hideSelected"; "selectOnTab": "selectOnTab"; "openOnEnter": "openOnEnter"; "maxSelectedItems": "maxSelectedItems"; "groupBy": "groupBy"; "groupValue": "groupValue"; "bufferAmount": "bufferAmount"; "virtualScroll": "virtualScroll"; "selectableGroup": "selectableGroup"; "selectableGroupAsModel": "selectableGroupAsModel"; "searchFn": "searchFn"; "clearOnBackspace": "clearOnBackspace"; "typeahead": "typeahead"; "multiple": "multiple"; "multipleInline": "multipleInline"; "addTag": "addTag"; "clearable": "clearable"; "errorsMessages": "errorsMessages"; "compareWith": "compareWith"; "_notFoundText": "notFoundText"; "editQuery": "editQuery"; "searchable": "searchable"; "setSelectbox": "isSelectbox"; "setTheme": "theme"; }, { "blurEvent": "blur"; "focusEvent": "focus"; "changeEvent": "change"; "openEvent": "open"; "closeEvent": "close"; "searchEvent": "search"; "clearEvent": "clear"; "addEvent": "add"; "removeEvent": "remove"; "scrollEvent": "scroll"; "scrollToEndEvent": "scrollToEnd"; }, ["labelTemp", "multiLabelTemp", "optionTemp", "optgroupTemp", "headerTemp", "footerTemp", "notFoundTemp"], never>;
}
