import { ElementRef, EventEmitter } from '@angular/core';
import { AfterViewInit, OnDestroy } from '@angular/core';
import { ControlValueAccessor, NgControl } from '@angular/forms';
import { LoggerService } from 'dotcms-js/dotcms-js';
export declare class Dropdown implements AfterViewInit, OnDestroy, ControlValueAccessor {
    private loggerService;
    name: string;
    placeholder: string;
    allowAdditions: boolean;
    minSelections: number;
    maxSelections: number;
    onDropDownChange: EventEmitter<any>;
    touch: EventEmitter<any>;
    enter: EventEmitter<boolean>;
    private _modelValue;
    private _optionsAry;
    private _options;
    private elementRef;
    private _$dropdown;
    onChange: Function;
    onTouched: Function;
    constructor(elementRef: ElementRef, control: NgControl, loggerService: LoggerService);
    value: string;
    focus(): void;
    writeValue(value: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    fireChange($event: any): void;
    fireTouch($event: any): void;
    hasOption(option: InputOption): boolean;
    addOption(option: InputOption): void;
    updateOption(option: InputOption): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    refreshDisplayText(label: string): void;
    initDropdown(): void;
    /**
   * Is called after a dropdown value changes. Receives the name and value of selection and the active menu element
   * @param value
   * @param text
   * @param $choice
   */
    onChangeSemantic(value: any, text: any, $choice: any): void;
    /**
   * Is called after a dropdown selection is added using a multiple select dropdown, only receives the added value
   * @param addedValue
   * @param addedText
   * @param $addedChoice
   */
    onAdd(addedValue: any, addedText: any, $addedChoice: any): void;
    /**
   * Is called after a dropdown selection is removed using a multiple select dropdown, only receives the removed value
   * @param removedValue
   * @param removedText
   * @param $removedChoice
   */
    onRemove(removedValue: any, removedText: any, $removedChoice: any): void;
    /**
   * Allows you to modify a label before it is added. Expects $label to be returned.
   * @param $label
   * @param value
   * @param text
   */
    onLabelCreate($label: any, value: any, text: any): void;
    /**
   * Is called after a label is selected by a user
   * @param $selectedLabels
   */
    onLabelSelect($selectedLabels: any): void;
    /**
   * Is called after a dropdown is searched with no matching values
   * @param searchValue
   */
    onNoResults(searchValue: any): void;
    /**
   * Is called before a dropdown is shown. If false is returned, dropdown will not be shown.
   */
    onShow(): void;
    /**
   * Is called before a dropdown is hidden. If false is returned, dropdown will not be hidden.
   */
    onHide(): void;
    private applyValue(value);
    /**
   * Fixes an issue with up and down arrows triggering a search in the dropdown, which auto selects the first result
   * after a short buffering period.
   * @param $dropdown The JQuery dropdown element, after calling #.dropdown(config).
   * @private
   */
    private _applyArrowNavFix($dropdown);
}
export declare class InputOption {
    value: string;
    label: string;
    icon: string;
    private _dropdown;
    private _isRegistered;
    constructor(dropdown: Dropdown);
    ngOnChanges(change: any): void;
}
