import { EventEmitter } from "../../stencil-public-runtime";
import { IEzCheckBoxListPosition } from '../ez-combo-box/ez-combo-box';
import { TFocusOptions } from "../ez-text-input/ez-text-input";
export declare class EzSearch {
  private _textInput;
  private _searchList;
  private _optionsList;
  private _ezPopOverPlusElement;
  private _itemValueBasis;
  private _source;
  private _changeDeboucingTimeout;
  private _limitCharsToSearch;
  private _deboucingTime;
  _maxWidthValue: number;
  private _tabPressed;
  private _resizeObserver;
  private _intersectionObserver;
  private _startHighlightTag;
  private _endHighlightTag;
  private _currentValue;
  private i18n;
  private el;
  private _preSelection;
  private _visibleOptions;
  private _startLoading;
  private _showLoading;
  private _showLoadingDescription;
  private _criteria;
  /**
   * 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;
  /**
   * Define uma mensagem de orientação ao usuário, colocando o campo em modo inválido.
   */
  errorMessage: string;
  /**
   * Carrega as opções dinamicamente.
   */
  optionLoader: (argument: ISearchArgument, ctxProperties?: any) => Promise<Array<IOption>> | Array<IOption> | IOption;
  /**
   * Propriedades de contexto da aplicação.
   */
  contextProperties?: any;
  /**
   * Se false a opção selecionada deve exibir somente o `label`.
   */
  showSelectedValue: boolean;
  /**
   * Se false cada opção na lista deve exibir somente o `label`.
   */
  showOptionValue: boolean;
  /**
   * 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;
  /**
   * Define o tamanho do campo.
   */
  mode: "slim" | "regular";
  /**
   * Se false deixa de exibir a mensagem de erro dentro do campo.
   */
  canShowError: boolean;
  /**
   * 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;
  /**
   * Define se deve ignorar o limite de caracteres mínimo para realizar uma pesquisa
   */
  ignoreLimitCharsToSearch: boolean;
  /**
   * Emitido quando acontece a alteração de valor do campo.
   */
  ezChange: EventEmitter<IOption>;
  /**
   * Array com as opções do ez-combo-box. Os elementos devem obedecer
   * o formato: `{value: string, label: string}`.
   */
  options: Array<IOption>;
  /**
   * Se true desabilita a digitação dentro do componente.
   */
  suppressSearch: boolean;
  /**
   * Garante que o botão de limpar pesquisa está sempre visível
   */
  ensureClearButtonVisible: boolean;
  /**
   * Se true, desabilita pré-load das opções ao carregar componente
   */
  suppressPreLoad: boolean;
  /**
   * Se true o campo de texto receberá o foco ao ser renderizado.
   */
  autoFocus: boolean;
  /**
   * Texto alternativo a ser apresentado como título do campo.
   */
  alternativePlaceholder: string;
  observeErrorMessage(): void;
  private getValue;
  private validateNewValue;
  observeValue(newValue: IOption | string, oldValue: IOption | string): Promise<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 handleValueAsString;
  private isDifferentValues;
  private getFormattedText;
  private getText;
  private getSelectedOption;
  private updateVisibleOptions;
  private getMaxWidthValue;
  private getWidthValue;
  private showOptions;
  private hideOptions;
  private isOptionsVisible;
  private selectCurrentOption;
  private updateSource;
  private clearSource;
  private selectOption;
  private loadOptions;
  private cancelPreselection;
  private setInputValue;
  private clearSearch;
  private controlListWithOnlyOne;
  private controlEmptySearch;
  private loadDescriptionValue;
  private setDescriptionValue;
  private setTextInputValue;
  private loadOptionValue;
  private showNoResultMessage;
  private getFieldLabel;
  private resetOptions;
  private handleInitialValue;
  componentWillLoad(): Promise<void>;
  componentDidRender(): void;
  componentDidLoad(): Promise<void>;
  disconnectedCallback(): void;
  private handlerIconClick;
  private buildNumberArgument;
  private onTextInputChangeHandler;
  private clearDeboucingTimeout;
  private keyDownHandler;
  private handleEventPropagation;
  private onTextInputFocusOutHandler;
  private canShowListOptions;
  private canShowLoadSpinDescription;
  private onChangePreSelection;
  render(): any;
}
export interface IOption {
  value: string;
  label: string;
  details?: any;
}
export interface ISearchArgument {
  mode: SearchMode;
  argument: string;
}
declare enum SearchMode {
  ADVANCED = "ADVANCED",
  PRELOAD = "PRELOAD",
  PREDICTIVE = "PREDICTIVE"
}
export {};
