import { ElementRef, OnInit, EventEmitter } from '@angular/core';
import { CfCoreComponent } from '../core/core.component';
import { AutocompleteModel } from '../../models/autocomplete/autocomplete.model';
import { AutocompleteStylingModel } from '../../models/autocomplete/autocomplete-styling.model';
import { AutocompleteService } from '../../services/autocomplete-service/autocomplete.service';
import { TemplateService } from '../../services/template-service/template.service';
/**
 * <p>CF Autocomplete Component</p>
 * <pre>
 * import { AutocompleteModel } from 'cedrus-fusion'
 * import { AutocompleteStylingModel } from 'cedrus-fusion'
 * <code><</code>cf-autocomplete [properties]="myAutocomplete" [styling]="myAutocompleteStyles"<code>></code><code><</code><code>/</code>cf-autocomplete<code>></code>
 * </pre>
 */
export declare class CfAutocompleteComponent extends CfCoreComponent implements OnInit {
    elementRef: ElementRef;
    autocompleteService: AutocompleteService;
    /** @hidden
     * <p>It is Object of type AutocompleteModel with data to be rendered in component template.
     */
    cfAutocomplete: AutocompleteModel;
    /**
     * <p>It is input property with AutocompleteModel data.
     * <h4>Model properties:</h4>
     * <pre><b>displayField</b>: string = '';</pre>
     * <p>Name of item property to be used as item label and selected value. Required.</p>
     * <pre><b>source</b>: any[] = [];</pre>
     * <p>Array with items. Optional. Has lower priority then 'serverUrl'.</p>
     * <pre><b>serverUrl</b>: string = '';</pre>
     * <p>Server url to be called for to take items. Optional. Has highter priority then 'source'.</p>
     * <pre><b>useChips</b>: boolean = false;</pre>
     * <p>Using chips for selected items. Optional. Default: false.</p>
     * <pre><b>chipsReadOnly</b>: boolean = false;</pre>
     * <p>If chips can't be removed after selection. Optional. Default: false.</p>
     * <pre><b>multiselection</b>: boolean = false;</pre>
     * <p>Search items with using comma inside search input field. Optional. Default: false.</p>
     * <pre><b>stayOpenedOnClick</b>: boolean = false;</pre>
     * <p>If dropdown must be opened on selecting items. Optional. Default: false.</p>
     * <pre><b>highlighting</b>: boolean = false;</pre>
     * <p>If to highlight search value in items labels. Optional. Default: false.</p>
     */
    properties: AutocompleteModel;
    /**
     * <p>It is input property with AutocompleteStylingModel data.
     * <h4>Model properties:</h4>
     * <pre><b>container</b>: StylingModel</pre>
     * <p>StylingModel for styling component container</p>
     * <pre><b>chipsContainer</b>: StylingModel</pre>
     * <p>StylingModel for styling chips container</p>
     * <pre><b>chips</b>: StylingModel</pre>
     * <p>StylingModel for styling chips item</p>
     * <pre><b>searchContainer</b>: StylingModel</pre>
     * <p>StylingModel for styling search container with input and dropdown</p>
     * <pre><b>inputContainer</b>: StylingModel</pre>
     * <p>StylingModel for styling input container</p>
     * <pre><b>input</b>: StylingModel</pre>
     * <p>StylingModel for styling input element</p>
     * <pre><b>dropdownContainer</b>: StylingModel</pre>
     * <p>StylingModel for styling dropdown container</p>
     * <pre><b>dropdownItem</b>: StylingModel</pre>
     * <p>StylingModel for styling dropdown item</p>
     */
    styling: AutocompleteStylingModel;
    /**
     * It is output event, which send search value.
     */
    onSearch: EventEmitter<any>;
    /**
     * It is output event, which send array with selected item/items.
     */
    onSelect: EventEmitter<any>;
    /** @hidden
     * User template for items in dropdown
     */
    dropdownItemTemplate: any;
    /** @hidden
     * User template for selected chips
     */
    selectedItemTemplate: any;
    /** @hidden
     * Array for default init items from user or server
     */
    itemsToBeFiltered: any[];
    /** @hidden
     * Temprorary array with filtered items during filtering execution and after to be passed to filteredItems
     */
    tempFiltered: any[];
    /** @hidden
     * Array with filtered items which is using inside dropdown in html
     */
    filteredItems: any[];
    /** @hidden
     * Means if user focused search input field or is working with opened dropdown list items
     */
    inputIsFocused: boolean;
    /** @hidden
     * This is state of autocomplete to check from where search value was changed
     */
    selectedByUser: boolean;
    /** @hidden
     * This is autocomplete search value
     */
    searchValue: string;
    /** @hidden
     * It is array with selected items as chips
     */
    selectedItems: any[];
    /** @hidden
     * It is array with selected items as multiselection by comma inside search input
     */
    selection: any[];
    /** @hidden
     * Means selected items as labels inside search input separated by comma
     */
    multipleSelected: string;
    /** @hidden
     * It is letter with which last server call was done
     */
    lastServerSearchValue: string;
    /** @hidden
     * Constructor to upgrade component and register click events to close dropdown if needed
     */
    constructor(elementRef: ElementRef, /**@hidden */ templateService: TemplateService, autocompleteService: AutocompleteService);
    /** @hidden
     * Initializing component data
     */
    ngOnInit(): void;
    /** @hidden
     * Function to check if to close dropdown
     * @param e  click event object
     */
    checkIfToCloseDropdown(e: any): void;
    /** @hidden
     * Function to start searching mechanism
     */
    searchFocused(): void;
    /** @hidden
     * Function to set filtering system parameters
     * @param inputValue  string value by which items will be filtered
     */
    search(inputValue: string): void;
    /** @hidden
     * Function run filtering system
     * @param term  string value by which items will be filtered
     */
    filterItems(term: string): void;
    /** @hidden
     * Function for multiselection filtering
     * @param term  string value by which items will be filtered
     */
    checkDelimited(term: string): void;
    /** @hidden
     * Function for highlighting search value in items labels
     * @param label  item label
     */
    highlight(label: string): string;
    /** @hidden
     * Function for selecting items in dropdown list
     * @param item  item json object
     */
    selectItem(item: any): void;
    /** @hidden
     * Function for deleting items from chips array
     * @param item  item json object
     * @param i  item index in chips array
     */
    removeSelectedItem(item: any, i: number): void;
    /** @hidden
     * Function to call AutocompleteService function to make request to remote server
     * @param value  one single letter
     */
    takeData(value: string): void;
}
