/// <reference types="core-js" />
import { EventEmitter, OnInit, OnChanges, SimpleChange, TemplateRef, ElementRef, ChangeDetectorRef } from '@angular/core';
import { Observable, Subject } from 'rxjs';
import { services } from 'typescript-angular-utilities';
import __object = services.object;
import __array = services.array;
import __guid = services.guid;
import __transform = services.transform;
import __search = services.search;
import { ValidatedInputComponent } from '../validationInput';
import { ComponentValidator } from '../../../services/componentValidator/componentValidator.service';
import { FormComponent } from '../../form/form';
import { BusyComponent } from '../../busy/busy';
import { PopoutListComponent } from '../../popoutList/index';
export declare const DEFAULT_SERVER_SEARCH_DEBOUNCE: number;
export declare const DEFAULT_CLIENT_SEARCH_DEBOUNCE: number;
export interface ITypeaheadChanges {
    value: SimpleChange;
    [key: string]: SimpleChange;
}
export declare class TypeaheadComponent<T> extends ValidatedInputComponent<T> implements OnInit, OnChanges {
    transform: __transform.ITransform<T, string>;
    getItems: {
        (search?: string): Promise<T[]> | Observable<T[]>;
    };
    prefix: string;
    clientSearch: boolean;
    allowCollapse: boolean;
    create: {
        (value: string): T;
    };
    caseSensitiveSearching: boolean;
    selector: EventEmitter<T>;
    input: ElementRef;
    busy: BusyComponent;
    list: PopoutListComponent<T>;
    template: TemplateRef<any>;
    search: string;
    searchStream: Subject<string>;
    cachedItems: any[];
    getItemsRequest: Observable<T[]>;
    loading: boolean;
    loadDelay: number;
    placeholder: string;
    allowCustomOption: boolean;
    collapsed: boolean;
    cacheDisplayList: any[];
    private _visibleItems;
    transformService: __transform.ITransformService;
    searchUtility: __search.ISearchUtility;
    changeDetector: ChangeDetectorRef;
    readonly visibleItems$: Observable<T[]>;
    readonly canShowOptions: boolean;
    readonly hideFlowerup: boolean;
    constructor(transformService: __transform.TransformService, rlForm: FormComponent, componentValidator: ComponentValidator, object: __object.ObjectUtility, array: __array.ArrayUtility, guid: __guid.GuidService, searchService: __search.SearchUtility, changeDetector: ChangeDetectorRef);
    focus(): void;
    add(item: T): void;
    remove(item: T): void;
    clear(): void;
    selectItem(item: T): void;
    selectCustom(): void;
    refresh(search: string): void;
    ngOnInit(): void;
    ngOnChanges(changes: ITypeaheadChanges): void;
    getDisplayName(item: T): string;
    loadItems(search: string): Observable<T[]>;
    private getItemsClient();
    private showCustomSearch(search);
    private filter(list, search);
}
