import { OnInit, OnChanges, SimpleChanges, ElementRef, Renderer2, EventEmitter } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { ControlValueAccessor, FormControl } from '@angular/forms';
import Fuse from 'fuse-js-next';
import { NGX_CHOICES_CONF, NGX_CHOICES_ERROR } from './ngx-choices.interface';
import { NGX_CHOICES_MODE } from './ngx-choices.enum';
export declare class NgxChoicesComponent implements OnInit, OnChanges, ControlValueAccessor {
    private elem;
    private renderer;
    private http;
    private multiple;
    _NGX_CHOICES_MODE: typeof NGX_CHOICES_MODE;
    inputElem: ElementRef;
    inputCtrl: FormControl;
    disabled: boolean;
    config: NGX_CHOICES_CONF;
    focused: boolean;
    values: Array<any>;
    items: any;
    filteredItems: any;
    userConfig: NGX_CHOICES_CONF;
    onChange: EventEmitter<any>;
    onType: EventEmitter<any>;
    onError: EventEmitter<NGX_CHOICES_ERROR>;
    fuse: Fuse;
    loading: boolean;
    highlightedItem: number;
    /*****************************************************/
    inputValue: string;
    readonly isInputValid: boolean;
    readonly isAtMaxSelections: boolean;
    readonly isSingleSelector: boolean;
    isItemSelected(item: any): boolean;
    readonly isFilterable: boolean;
    readonly isDropdownOpened: boolean;
    readonly isAbstractMode: boolean;
    /*****************************************************/
    constructor(elem: ElementRef, renderer: Renderer2, http: HttpClient, multiple: string);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    /*****************************************************/
    onKeyDown(event: any): boolean;
    onClickInside(event: any): void;
    onClickOutside(event: any): void;
    /*****************************************************/
    configInit(newConfig?: any): void;
    focus(): void;
    blur(): void;
    focusInput(): void;
    blurInput(): void;
    addValue(value: any, propagateChanges?: boolean): void;
    removeValue(value: any, index: any): void;
    itemClicked(item: any, event: any): boolean;
    onQueryType(): void;
    filterItems(query: string): void;
    getRemoteItems: any;
    resetFilteredItems(): any;
    emitChanges(values: any): void;
    /*****************************************************/
    propagateChange: (values: any) => void;
    writeValue(values: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState?(isDisabled: boolean): void;
}
