import { DomListener } from './DomListener';
import { SearchHistory } from './SearchHistory';
import { SearchJSApp } from '..';
import { Theme } from '../themes';
export declare class SearchComponent {
    private app;
    private domListener;
    private searchHistory;
    private theme;
    /**
     * the entire search js element
     *
     * @var {HTMLElement} element
     */
    element: HTMLElement;
    /**
     * timer placeholder to handle search
     *
     * @var {number} searchTimer
     */
    private searchTimer?;
    /**
     * class constructor
     *
     * @param {SearchJSApp} app
     * @param {DomListener} domListener
     * @param {SearchHistory} searchHistory
     * @param {Theme} theme
     */
    constructor(app: SearchJSApp, domListener: DomListener, searchHistory: SearchHistory, theme: Theme);
    /**
     * handle search and show list on result
     *
     * @returns {void}
     */
    private handleOnSearch;
    /**
     * get list of items from config and filter with keyword from search input
     *
     * @param {string} keyword
     * @returns {Array<SearchJSItem> | null | undefined}
     */
    private getItems;
    /**
     * get parent element to append search-js element
     *
     * @returns {HTMLElement}
     */
    private getParentElement;
    private createElement;
    /**
     * show item lists
     *
     * @param {Array<SearchJSItem>} items
     * @returns {void}
     */
    private showSearchResult;
    /**
     * hide search result
     *
     * @returns {void}
     */
    private hideSearchResult;
    /**
     * show history list
     *
     * @param {Array<SearchJSItem>} items
     * @returns {void}
     */
    private showHistory;
    /**
     * hide history
     *
     * @returns {void}
     */
    private hideHistories;
    /**
     * listen on select and on remove event on item
     *
     * @return {void}
     */
    private handleItemClickListener;
    /**
     * show loading
     *
     * @returns {void}
     */
    private showLoading;
    /**
     * hide loading
     *
     * @returns {void}
     */
    private hideLoading;
}
