import { EventEmitter } from "../../stencil-public-runtime";
import { TFocusOptions } from "../ez-text-input/ez-text-input";
export declare class EzComboBox {
  private i18n;
  private _textInput;
  private _comboBoxList;
  private _popover;
  private _itemValueBasis;
  private _source;
  private _changeDeboucingTimeout;
  private _deboucingTime;
  private _maxWidthValue;
  private _tabPressed;
  private _lookupMode;
  private _resizeObserver;
  isOpen: boolean;
  private el;
  private _preSelection;
  private _visibleOptions;
  private _startLoading;
  private _showLoading;
  private _criteria;
  /**
   * Define o limite de caracteres mínimo para realizar uma pesquisa
   */
  limitCharsToSearch: number;
  /**
   * Define o valor do campo.
   */
  value: IOption | string;
  /**
   * Texto a ser apresentado como título do campo.
   */
  label: string;
  /**
   * Se false o usuário não pode interagir com o campo.
   */
  enabled: boolean;
  /**
   * Array com as opções do ez-combo-box. Os elementos devem obedecer
   * o formato: `{value: string, label: string}`.
   */
  options: Array<IOption>;
  /**
   * Define uma mensagem de orientação ao usuário, colocando o campo em modo inválido.
   */
  errorMessage: string;
  /**
   * Se true a opção selecionada exibe o `value` junto com `label`.
   */
  showSelectedValue: boolean;
  /**
   * Se true cada opção na lista exibe o `value` junto com `label`.
   */
  showOptionValue: boolean;
  /**
   * Se true desabilita a digitação dentro do componente.
   */
  suppressSearch: boolean;
  /**
   * Carrega as opções dinamicamente.
   */
  optionLoader: (argument: ISearchArgument) => Promise<Array<IOption>> | Array<IOption> | IOption;
  /**
   * Se true remove a opção vazia da lista.
   */
  suppressEmptyOption: boolean;
  /**
   * Se true, ineterrompe a propagação do evento de KeyDown da tecla enter
   */
  stopPropagateEnterKeyEvent: boolean;
  /**
   * Se false deixa de exibir a mensagem de erro dentro do campo.
   */
  canShowError: boolean;
  /**
   * Define o tamanho do campo.
   */
  mode: "slim" | "regular";
  /**
   * Quando verdadeiro deixa de exibir a mensagem de erro (se existente) quando focar em um elemento diferente.
   */
  hideErrorOnFocusOut: boolean;
  /**
   * Define um posicionamento fixo para a lista de opções do CheckBox.
   */
  listOptionsPosition: IEzCheckBoxListPosition;
  /**
   * Informa se a pesquisa é do tipo texto.
   */
  isTextSearch: boolean;
  /**
   * Se true o campo de texto receberá o foco ao ser renderizado.
   */
  autoFocus: boolean;
  /**
   * Se true, impede que o campo de texto receba foco automaticamente ao abrir as opções.
   */
  preventAutoFocus: boolean;
  /**
   * Texto alternativo a ser apresentado como título do campo.
   */
  alternativePlaceholder: string;
  /**
   * Texto a ser apresentado na opção de valor nulo.
   */
  textEmptyOption: string;
  /**
   * Emitido quando acontece a alteração de valor do campo.
   */
  ezChange: EventEmitter<IOption>;
  /**
   * Emitido quando acontece a alteração de visibilidade do popover.
   */
  ezVisibilityChange: EventEmitter<boolean>;
  observeErrorMessage(): void;
  observeValue(newValue: IOption | string, oldValue: IOption | string): void;
  observeOptions(newOptions: IOption[], oldOptions: IOption[]): void;
  getValueAsync(): Promise<unknown>;
  /**
   * Aplica o foco no campo.
   */
  setFocus(options?: TFocusOptions): Promise<void>;
  /**
   * Remove o foco do campo.
   */
  setBlur(): Promise<void>;
  /**
   * Retorna se o conteúdo é inválido.
   */
  isInvalid(): Promise<boolean>;
  /**
   * Limpa o valor do campo de pesquisa
   */
  clearValue(): Promise<void>;
  private isDifferentValues;
  private getFormattedText;
  private getText;
  private getSelectedOption;
  private updateVisibleOptions;
  private hasToAddEmptyoption;
  private getMaxWidthValue;
  private getWidthValue;
  private showOptions;
  private hideOptions;
  private updateSource;
  private selectOption;
  private loadOptions;
  private cancelPreselection;
  private setInputValue;
  private clearSearch;
  private resetOptions;
  private sanitizeValue;
  componentWillLoad(): Promise<void>;
  private setResizeObserver;
  connectedCallback(): void;
  componentDidLoad(): void;
  disconnectedCallback(): void;
  private handlerIconClick;
  private onTextInputChangeHandler;
  private clearDeboucingTimeout;
  private onTextInputClickHandler;
  private keyDownHandler;
  private onTextInputFocusOutHandler;
  private canShowListOptions;
  private openPopover;
  render(): any;
}
export interface IOption {
  value: string;
  label: string;
}
export interface ISearchArgument {
  mode: SearchMode;
  argument: string;
}
declare enum SearchMode {
  ADVANCED = "ADVANCED",
  PRELOAD = "PRELOAD",
  PREDICTIVE = "PREDICTIVE"
}
export interface IEzCheckBoxListPosition {
  hardPosition?: boolean;
  horizontalPosition?: number;
  verticalPosition?: number;
  fromRight?: boolean;
  fromBottom?: boolean;
  bottomLimit?: number;
}
export {};
