import { OnChanges, EventEmitter, ChangeDetectorRef, QueryList, AfterViewInit, ElementRef, OnDestroy, AfterContentInit, TemplateRef } from '@angular/core';
import { NgControl } from '@angular/forms';
import { ConnectedOverlayPositionChange } from '@angular/cdk/overlay';
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
import { I18nService } from '../i18n/i18n.service';
import { AutoCompleteConfig } from './interfaces/autocomplete.config';
import { DataSourceList } from '../core/classes/datasource-list';
import { TlItemSelectedDirective } from '../core/directives/itemSelected/item-selected.directive';
import { SelectedItemService } from './services/selected-item.service';
import { ValueAccessorBase } from '../input/core/value-accessor';
import { TlInput } from '../input/input';
import * as i0 from "@angular/core";
export declare class TlAutoComplete extends ValueAccessorBase<any> implements OnChanges, OnDestroy, AfterViewInit, AfterContentInit {
    private change;
    private i18n;
    private itemSelectedService;
    ngControl: NgControl;
    set data(value: any[]);
    get data(): any[];
    set control(item: import("@angular/forms").AbstractControl<any, any>);
    totalLength: number;
    filterOperator: string;
    rowsPage: number;
    lazyMode: boolean;
    rowHeight: number;
    template: TemplateRef<any>;
    debounceTime: number;
    keyText: string;
    keyValue: any;
    openFocus: boolean;
    chainFilter: boolean;
    loading: boolean;
    clearButton: boolean;
    clearOnSelect: boolean;
    disabled: boolean;
    required: boolean;
    color: string;
    labelPlacement: 'top' | 'left';
    textBefore: any;
    textAfter: any;
    iconBefore: any;
    iconAfter: any;
    labelSize: string;
    height: string;
    containerHeight: string;
    searchBy: string;
    label: string;
    identifier: any;
    placeholder: string;
    modelMode: 'string' | 'object';
    lazyLoad: EventEmitter<any>;
    selectItem: EventEmitter<any>;
    changeSelected: EventEmitter<any>;
    filter: EventEmitter<any>;
    clickAddon: EventEmitter<any>;
    input: ElementRef;
    cdkVirtualScroll: CdkVirtualScrollViewport;
    listItems: QueryList<TlItemSelectedDirective>;
    tlinput: TlInput;
    keyManager: ActiveDescendantKeyManager<TlItemSelectedDirective>;
    dataSource: DataSourceList;
    isOpen: boolean;
    focused: boolean;
    selected: any;
    description: string;
    trigger: any;
    positionOverlay: 'top' | 'bottom' | 'center';
    nothingFound: boolean;
    tempContainerHeight: any;
    messageLoading: string;
    nothingFoundMessage: string;
    private filtering;
    private modelInitialized;
    private lastItemScrolled;
    private subscription;
    private _data;
    private _control;
    constructor(autoCompleteConfig: AutoCompleteConfig, change: ChangeDetectorRef, i18n: I18nService, itemSelectedService: SelectedItemService, ngControl: NgControl);
    get control(): import("@angular/forms").AbstractControl<any, any>;
    setControl(): void;
    ngAfterContentInit(): void;
    ngAfterViewInit(): void;
    getNativeInput(): any;
    private validateKeyValue;
    private listenModelChanges;
    private handleItemSelected;
    private scrollToIndex;
    onScrollIndexChange($event: any): void;
    onInput(): void;
    close(): void;
    onBackdropClick(): void;
    private handleModelLazy;
    private setDescriptionValue;
    private handleModelCached;
    private getItemCompare;
    private handleKeyModelValue;
    private setOptions;
    private setSelected;
    stopEvent($event: any): void;
    handleKeyArrowDown($event: any): void;
    handleKeyArrowUp($event: any): void;
    handleKeyBackspace(): void;
    handleEventOpenList($event: any): void;
    handleKeyEscape($event: any): void;
    handleKeyEnter($event: any): void;
    handleFocus(): void;
    private isModelModeString;
    private getCompareModel;
    onSelectItem(value: any, item: TlItemSelectedDirective): void;
    handleClose($event?: any): void;
    private setUpData;
    setContainerHeight(data: any): void;
    private setFirstItemActive;
    private listenLoadData;
    onPositionChange($event: ConnectedOverlayPositionChange): void;
    private setIsOpen;
    getItemText(item: any): any;
    toggleIsOpen(): void;
    private getFilters;
    private setScrollVirtual;
    onFilter($event: any): void;
    private setFiltering;
    private setNotFound;
    ngOnChanges({ data, totalLength }: any): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TlAutoComplete, [{ optional: true; }, null, null, null, { optional: true; self: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TlAutoComplete, "tl-autocomplete", never, { "data": "data"; "control": "control"; "totalLength": "totalLength"; "filterOperator": "filterOperator"; "rowsPage": "rowsPage"; "lazyMode": "lazyMode"; "rowHeight": "rowHeight"; "template": "template"; "debounceTime": "debounceTime"; "keyText": "keyText"; "keyValue": "keyValue"; "openFocus": "openFocus"; "chainFilter": "chainFilter"; "loading": "loading"; "clearButton": "clearButton"; "clearOnSelect": "clearOnSelect"; "disabled": "disabled"; "required": "required"; "color": "color"; "labelPlacement": "labelPlacement"; "textBefore": "textBefore"; "textAfter": "textAfter"; "iconBefore": "iconBefore"; "iconAfter": "iconAfter"; "labelSize": "labelSize"; "height": "height"; "containerHeight": "containerHeight"; "searchBy": "searchBy"; "label": "label"; "identifier": "identifier"; "placeholder": "placeholder"; "modelMode": "modelMode"; }, { "lazyLoad": "lazyLoad"; "selectItem": "selectItem"; "changeSelected": "changeSelected"; "filter": "filter"; "clickAddon": "clickAddon"; }, never, never, false, never>;
}
//# sourceMappingURL=autocomplete.d.ts.map