import Component from './utils/component';
export default class BulmaTagsInput extends Component {
    private _items;
    private _selected;
    private _isSelect;
    private _isMultiple;
    private _objectItems;
    private _input;
    private _manualInputAllowed;
    private _filterInputAllowed;
    private source;
    private container;
    private dropdown;
    private dropdownEmptyOption;
    constructor(element: any, options?: {});
    /**
     * Initiate all DOM element corresponding to selector
     *
     * @method
     * @return Array of all Plugin instances
     */
    static attach(selector?: string, options?: {}, container?: any): any[];
    /**
     * Initiate plugin
     *
     * @method init
     * @return
     */
    _init(): void;
    /**
     * Build TagsInput DOM elements
     */
    _build(): void;
    /**
     * Bind all events listener
     */
    _bindEvents(): void;
    /**
     * Check if caret is at the beginning of the input value
     */
    _caretAtStart(): boolean;
    /**
     * Check value length constraint if option activated
     *
     * @param item
     */
    _checkLength(item: any): boolean;
    /**
     * Close dropdown
     */
    _closeDropdown(): void;
    /**
     * Create a new dropdown item based on given item data
     *
     * @param item
     */
    _createDropdownItem(item: any): void;
    /**
     * Create a new tag and add it to the DOM
     *
     * @param string value
     */
    _createTag(item: any): void;
    /**
     * Remove all dropdown items except the empty title
     */
    _emptyDropdown(): void;
    /**
     * Find needle into a string and wrap it with <mark> HTML tag
     *
     * @param string
     * @param needle
     */
    _highlightMatchesInString(string: any, needle: any): any;
    /**
     * Open dropdown
     */
    _openDropdown(): void;
    /**
     * Propagate internal input changes to the original input
     */
    _propagateChange(): void;
    /**
     * Trim value if option activated
     *
     * @param item
     */
    _trim(item: any): any;
    /**
     * Filter Dropdown items to be compliant with already selected items and current input value
     * Filtering is made on Text by default (can be changed with option)
     */
    _filterDropdownItems(value?: any): boolean;
    /**
     * Update original select option based on given item
     *
     * @param item
     */
    _updateSelectOptions(item: any): void;
    /**
     * Add given item
     * item = 'john'
     * item = 'john,jane'
     * item = ['john', 'jane']
     * item = [{
     *  "value": "1",
     *  "text": "John"
     * }, {
     *  "value": "2",
     *  "text": "Jane"
     * }]
     *
     * @param item
     * @param silently Should the change be propagated to the original element
     */
    add(items: any, silently?: boolean): this;
    /**
     * Unselect the selected item
     */
    clearSelection(): this;
    /**
     * Shortcut to removeAll method
     */
    flush(): this;
    /**
     * Sets focus on the input
     */
    focus(): this;
    /**
     * Check if given item is present
     *
     * @param item
     */
    has(item: any): boolean;
    /**
     * Check if given text is present
     *
     * @param value
     */
    hasText(value: any): boolean;
    /**
     * Check if given value is present
     *
     * @param value
     */
    hasValue(value: any): boolean;
    /**
     * Get index of given item
     *
     * @param item
     */
    indexOf(item: any): number;
    /**
     * Returns the internal input element
     */
    input(): any;
    /**
     * Get items
     */
    items(): any[];
    /**
     * Remove given item
     * item = 'john'
     * item = 'john,jane'
     *
     * @param String item
     */
    remove(items: any): this;
    /**
     * Remove all tags at once
     */
    removeAll(): this;
    /**
     * Remove item at given index
     *
     * @param Integer index
     */
    removeAtIndex(index: any, clearSelection?: boolean): this;
    /**
     * Select given item
     *
     * @param item
     */
    select(items: any): this;
    /**
     * Select tag at given index
     *
     * @param Integer index
     */
    selectAtIndex(index: any): this;
    /**
     * Get selected item
     */
    get selected(): any;
    /**
     * Get selected item index
     */
    get selectedIndex(): any;
    /**
     * Get value
     */
    get value(): string | any[];
    /**
     * Set value
     */
    set value(string: string | any[]);
    /**
     * Document click event handler
     *
     * @param e
     */
    _onDocumentClick(e: any): void;
    /**
     * Input focus lost event handler
     *
     * @param e
     */
    _onDropdownItemClick(e: any): void;
    /**
     * Input change event handler
     *
     * @param e
     */
    _onInputChange(e: any): void;
    /**
     * Input click event handler
     *
     * @param e
     */
    _onInputClick(e: any): void;
    /**
     * Input focus event handler
     *
     * @param e
     */
    _onInputFocusIn(e: any): boolean;
    /**
     * Input focus lost event handler
     *
     * @param e
     */
    _onInputFocusOut(e: any): void;
    /**
     * Input Keydown event handler
     *
     * @param e
     */
    _onInputKeyDown(e: any): void;
    /**
     * Input Keypress event handler
     *
     * @param e
     */
    _onInputKeyPress(e: any): boolean;
    /**
     * Original input change event handler
     * CAUTION: because original input is now hidden the change event must be triggered manually on change
     * Example how to trigger change event manually
     * var changeEvent = new Event('change');
     * input.dispatchEvent(changeEvent);
     *
     * @param e
     */
    _onOriginalInputChange(e: any): void;
    /**
     * Tag click event handler
     *
     * @param e
     */
    _onTagClick(e: any): boolean;
    /**
     * Delete tag button click event handler
     *
     * @param e
     */
    _onTagDeleteClick(e: any): boolean;
}
