import { ChangeDetectorRef, EventEmitter } from '@angular/core';
import { Router } from '@angular/router';
import { IManagedObject, InventoryService, IResultList } from '@c8y/client';
import { Observable, UnaryFunction } from 'rxjs';
import { ManagedObjectType } from '../common/managed-object-type';
import { InventorySearchService } from './inventory-search.service';
import * as i0 from "@angular/core";
export declare class SearchInputComponent {
    private router;
    private inventory;
    private inventorySearchService;
    private cd;
    mode: 'search' | 'select';
    /**
     * Unlocks the ability to place a custom template under the search input.
     */
    enableCustomTemplatePlaceholder: boolean;
    /**
     * A custom placeholder in the search bar.
     */
    customPlaceholder: string;
    /**
     * Event, which is used to set a new external term. Passing null will re-execute the query to BE.
     * This allows new filters to be applied to the currently selected term.
     */
    externalTerm: EventEmitter<string>;
    /**
     * A custom query setter used to override the standard query. In order to obtain data.
     */
    set customDataQuery(query: UnaryFunction<string, Observable<IResultList<IManagedObject>>>);
    container: '' | 'body';
    groupsOnly: boolean;
    filter: EventEmitter<string>;
    search: EventEmitter<string>;
    reset: EventEmitter<IManagedObject>;
    onClick: EventEmitter<IManagedObject>;
    deviceType: typeof ManagedObjectType;
    term: string;
    defaultPlaceholder: "Search for groups or assets…";
    selected: any;
    customQuery: (text: string) => Observable<IResultList<IManagedObject>>;
    results$: Observable<IResultList<IManagedObject>>;
    recentSearchResults: IManagedObject[];
    recentlyRegisteredResults$: Observable<IResultList<IManagedObject>>;
    isLoading: boolean;
    noMatch: boolean;
    private readonly RECENT_SEARCH_STORAGE_KEY;
    private readonly MAX_RECENT_SEARCH_RESULTS;
    private readonly DEFAULT_FILTER;
    private readonly KEYCODE_ENTER;
    private readonly KEYCODE_ESC;
    private onDestroy$;
    private typeahead;
    private dropdown;
    constructor(router: Router, inventory: InventoryService, inventorySearchService: InventorySearchService, cd: ChangeDetectorRef);
    ngOnInit(): Promise<void>;
    onKeydownHandler(event: KeyboardEvent): void;
    onOpenChange(isOpen: boolean): void;
    open(event: Event, mo: IManagedObject, term?: any): void;
    onReset(status: {
        icon: string;
        $event: MouseEvent;
    }): void;
    keyDown(event: KeyboardEvent): void;
    onSearch(search: string): void;
    onFilter(search: string): void;
    onOpenAssetTable(): void;
    ngOnDestroy(): void;
    private hideDropdown;
    private subscribeOnSearch;
    private mergeRequest;
    private handleQuery;
    private onLoadingDone;
    private onTypingStarted;
    static ɵfac: i0.ɵɵFactoryDeclaration<SearchInputComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SearchInputComponent, "c8y-search-input", never, { "mode": { "alias": "mode"; "required": false; }; "enableCustomTemplatePlaceholder": { "alias": "enableCustomTemplatePlaceholder"; "required": false; }; "customPlaceholder": { "alias": "customPlaceholder"; "required": false; }; "externalTerm": { "alias": "externalTerm"; "required": false; }; "customDataQuery": { "alias": "customDataQuery"; "required": false; }; "container": { "alias": "container"; "required": false; }; "groupsOnly": { "alias": "groupsOnly"; "required": false; }; }, { "filter": "filter"; "search": "search"; "reset": "reset"; "onClick": "onClick"; }, never, ["*"], false, never>;
}
//# sourceMappingURL=search-input.component.d.ts.map