import { Element } from '../../../../../client/element';
import { System } from '../../../../../system';
import { Specs } from '../../../../../types';
import { Dict } from '../../../../../types/Dict';
import { IHTMLDivElement } from '../../../../../types/global/dom';
import MicrophoneButton from '../../../component/app/MicrophoneButton/Component';
import Div from '../../Div/Component';
import SearchInput from '../SearchInput/Component';
export interface Props {
    className?: string;
    style?: Dict<string>;
    selected?: string;
    selectedColor?: string;
    filter?: (u: string) => boolean;
}
export declare const SEARCH_ITEM_HEIGHT: number;
export declare type ListItem = {
    id: string;
    name: string;
    tags: string[];
    icon: string;
    fuzzyName: string;
};
export declare const SHAPE_TO_ICON: {
    rect: string;
    circle: string;
};
export declare function isSpecVisible(specs: Specs, id: string): boolean;
export default class Search extends Element<IHTMLDivElement, Props> {
    private _input_value;
    _search: Div;
    _list: Div;
    _input: SearchInput;
    _microphone: MicrophoneButton;
    private _shape;
    private _shape_button;
    private _id_list;
    private _ordered_id_list;
    private _filtered_id_list;
    private _item;
    private _filtered_list_item;
    private _list_item_div;
    private _list_item_content;
    private _list_item_name;
    private _list_hidden;
    private _selected_id;
    private _selected_index;
    private _scrollTop;
    constructor($props: Props, $system: System);
    private _refresh_ordered_list;
    private _set_list_item_color;
    onPropChanged(prop: string, current: any): void;
    private _add_list_item;
    private _refresh_list_item;
    focus(options?: FocusOptions | undefined): void;
    blur(): void;
    private _on_microphone_transcript;
    private _on_input_keydown;
    private _on_input_focus_in;
    private _select_all;
    private _on_input_click;
    private _on_input_focus_out;
    private _show_list;
    private _dispatch_item_selected;
    private _dispatch_shape;
    private _dispatch_item_pick;
    private _dispatch_list_shown;
    private _dispatch_list_hidden;
    private _dispatch_list_empty;
    private _select_first_list_item;
    private _hide_list;
    private _on_list_item_pointer_enter;
    private _on_list_item_click;
    set_selected_item_id: (id: string) => void;
    private _set_selected_item_id;
    select_next: (offset: number) => void;
    private _scroll_into_item;
    private _filter_list;
    private _on_input_input;
    private _on_arrow_down_keydown;
    private _on_arrow_up_keydown;
    private _on_ctrl_p_keydown;
    private _on_escape_keydown;
    private _on_enter_keydown;
    getValue: () => string;
    getShape: () => string;
    getList(): string[];
    setValue: (value: string) => void;
    _setValue: (value: string) => void;
    toggleShape: () => void;
    setShape: (shape: 'rect' | 'circle') => void;
    onMount(): void;
    onConnected(): void;
}
