import { Overlay } from '@angular/cdk/overlay';
import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnDestroy, OnInit, Renderer2, ViewContainerRef } from '@angular/core';
import { NgControl } from '@angular/forms';
import { Observable } from 'rxjs';
import { BaseTooltip } from '../tooltip';
import { AnimationType } from '../tooltip/animations';
import { AutocompleteComponent } from './autocomplete.component';
import { AutoCompleteContext, SuggestionFilterFn } from './autocomplete.types';
import * as i0 from "@angular/core";
export declare class AutoCompleteDirective extends BaseTooltip<AutoCompleteContext> implements OnInit, OnDestroy, AfterViewInit {
    private readonly ngControl;
    get autocomplete(): AutocompleteComponent;
    set autocomplete(val: AutocompleteComponent);
    get filterFn(): (inputValue: string, suggestion: string) => boolean;
    set filterFn(val: (inputValue: string, suggestion: string) => boolean);
    defaultFirstSuggestion: boolean;
    suggestionTrigger: 'auto' | 'input';
    innerSelector: string;
    visibleChange: EventEmitter<boolean>;
    selected: EventEmitter<string>;
    autoPatch: boolean;
    animationType: AnimationType;
    private _autocomplete;
    private focusedSuggestion;
    private readonly inputValue$$;
    private readonly filterFn$$;
    private readonly unsubscribe$;
    inputValue$: Observable<string>;
    filterFn$: Observable<SuggestionFilterFn>;
    get input(): HTMLInputElement;
    constructor(overlay: Overlay, viewContainerRef: ViewContainerRef, elRef: ElementRef<HTMLInputElement>, renderer: Renderer2, cdr: ChangeDetectorRef, ngZone: NgZone, ngControl: NgControl);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    onFocus(): void;
    onInput(event: Event): void;
    onKeyDown(event: KeyboardEvent): void;
    updateSuggestionsContext(): void;
    onSuggestionClick(value: string): void;
    show(): void;
    autoFocusFirstSuggestion(): void;
    private focusSuggestionDir;
    private resetFocusedSuggestion;
    private scrollToSuggestion;
    protected selectFocusedOption(): void;
    private _filterFn;
    static ɵfac: i0.ɵɵFactoryDeclaration<AutoCompleteDirective, [null, null, null, null, null, null, { optional: true; host: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AutoCompleteDirective, "input[auiAutocomplete],textarea[auiAutocomplete]", ["auiAutocomplete"], { "class": { "alias": "auiAutocompleteClass"; "required": false; }; "autocomplete": { "alias": "auiAutocomplete"; "required": false; }; "filterFn": { "alias": "auiAutocompleteFilterFn"; "required": false; }; "defaultFirstSuggestion": { "alias": "auiAutocompleteDefaultFirstSuggestion"; "required": false; }; "suggestionTrigger": { "alias": "auiAutocompleteTrigger"; "required": false; }; "autoPatch": { "alias": "auiAutocompleteAutoPatch"; "required": false; }; }, { "visibleChange": "auiAutocompleteVisibleChange"; "selected": "auiAutocompleteSelected"; }, never, never, true, never>;
}
export declare class CustomAutoCompleteDirective extends AutoCompleteDirective {
    innerSelector: string;
    static ɵfac: i0.ɵɵFactoryDeclaration<CustomAutoCompleteDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<CustomAutoCompleteDirective, "[auiAutocomplete]:not(input):not(textarea)", ["auiAutocomplete"], { "class": { "alias": "auiAutocompleteClass"; "required": false; }; "innerSelector": { "alias": "auiAutocompleteInnerSelector"; "required": false; }; }, {}, never, never, true, never>;
}
