import { EventEmitter } from "../../stencil-public-runtime";
import { ISearchOption, SearchMode } from "../../utils";
import { TFocusOptions } from "../ez-text-input/ez-text-input";
import { IEzCheckBoxListPosition } from "../ez-combo-box/ez-combo-box";
export declare class EzSearchPlus {
  private readonly SEARCH_DESCRIPTION_TIMEOUT;
  private readonly INTERVAL_TO_RETRY_ASYNC_VALUE;
  private _textInputDescriptionValue;
  private _textInputCodeValue;
  private _popover;
  private _searchList;
  private _debounceSearch;
  private _latestFocusedInputElement;
  private _keyboardManager;
  private i18n;
  private el;
  /**
  * Emitido quando acontece a alteração de valor do campo.
  */
  ezChange: EventEmitter<IOption>;
  /**
   * Define o valor do campo.
   */
  value: IOption | string;
  /**
   * Se false o usuário não pode interagir com o campo.
   */
  enabled: boolean;
  /**
   * Se true o campo de código ficara desabilitado.
   */
  disableCodeInput: boolean;
  /**
   * Se true o campo de de apresentação ficara desabilitado.
   */
  disableDescriptionInput: boolean;
  /**
   * Texto a ser apresentado como título do campo.
   */
  label: string;
  /**
  * Texto a ser apresentado no input de código.
  */
  codLabel: string;
  /**
   * Se true o campo de de apresentação não será exibido.
   */
  hideDescriptionInput: boolean;
  /**
   * Se false deixa de exibir a mensagem de erro dentro do campo.
   */
  canShowError: boolean;
  /**
   * Define uma mensagem de orientação ao usuário, colocando o campo em modo inválido.
   */
  errorMessage: string;
  /**
  * Define o tamanho do campo.
  */
  mode: "slim" | "regular";
  /**
  * Propriedades de contexto da aplicação.
  */
  contextProperties?: any;
  /**
   * Carrega as opções dinamicamente.
   */
  optionLoader: OptionLoaderFunction;
  /**
   * Se false cada opção na lista deve exibir somente o `label`.
   */
  showOptionValue: boolean;
  /**
   * Se true, interrompe a propagação do evento de KeyDown da tecla enter
   */
  stopPropagateEnterKeyEvent: boolean;
  /**
  * Se true o campo de texto receberá o foco ao ser renderizado.
  */
  autoFocus: boolean;
  /**
  * Propriedade depreciada na nova versão do componente de pesquisa.
  */
  showSelectedValue: boolean;
  /**
  * Propriedade depreciada na nova versão do componente de pesquisa.
  */
  suppressEmptyOption: boolean;
  /**
   * Propriedade depreciada na nova versão do componente de pesquisa.
   */
  hideErrorOnFocusOut: boolean;
  /**
   * Propriedade depreciada na nova versão do componente de pesquisa.
   */
  listOptionsPosition: IEzCheckBoxListPosition;
  /**
   * Propriedade depreciada na nova versão do componente de pesquisa.
   */
  isTextSearch: boolean;
  /**
   * Propriedade depreciada na nova versão do componente de pesquisa.
   */
  ignoreLimitCharsToSearch: boolean;
  /**
   * Propriedade depreciada na nova versão do componente de pesquisa.
   */
  suppressSearch: boolean;
  /**
  * Propriedade depreciada na nova versão do componente de pesquisa.
  */
  suppressPreLoad: boolean;
  /**
  * Garante que o botão de limpar pesquisa está sempre visível
  */
  ensureClearButtonVisible: boolean;
  private descriptionValue;
  private codeValue;
  private isLoadingDescription;
  private searchDescriptionIsOpen;
  private visibleOptions;
  private showLoading;
  observeValue(newValue: IOption | string, oldValue: IOption | string): Promise<void>;
  private canShowLoadSpinDescription;
  /**
   * Aplica o foco no campo.
   */
  setFocus(options?: TFocusOptions): Promise<void>;
  /**
  * Obtém o valor do componente só após a compo de apresentação
  * ter sido resolvido pelo option loader quando necessário
  */
  getValueAsync(): Promise<IOption>;
  /**
  * Limpa o valor do campo de pesquisa
  */
  clearValue(): Promise<void>;
  /**
  * Remove o foco do campo.
  */
  setBlur(): Promise<void>;
  /**
  * Retorna se o conteúdo é inválido.
  */
  isInvalid(): Promise<boolean>;
  componentWillLoad(): Promise<void>;
  componentDidLoad(): void;
  connectedCallback(): void;
  private clearSearch;
  private getCodLabel;
  private normalizeCodeToDescriptionValue;
  private normalizeValueToCodeValue;
  private loadDescriptionValueByCode;
  private handleCodeInputFocusOut;
  private handleSearchClick;
  private loadAdvancedSearch;
  private buildCurrentValue;
  private handleTextInputChangeHandler;
  private debounceLoaderOptions;
  private updateKeyOption;
  private parseSearchOptions;
  private processOptionsLoader;
  private handleSelectItem;
  private handleArrowUp;
  private handleArrowDown;
  private selectCurrentItem;
  private cancelSelection;
  private handleInputTab;
  private handleInputEsc;
  private initKeyboardManager;
  disconnectedCallback(): void;
  private isOptionsVisible;
  private setLatestFocusedInputElement;
  private handleCodeInputFocus;
  private handleDescriptionInputFocus;
  private getRightIconElement;
  private getLeftIconElement;
  private handleOnEzVisibilityChange;
  render(): any;
}
export interface IOption {
  value: string;
  label: string;
}
export interface ISearchArgument {
  mode: SearchMode;
  argument: string;
}
export type OptionLoaderFunction = (argument: ISearchArgument, ctxProperties?: any) => Promise<Array<IOption | ISearchOption> | IOption | ISearchOption> | Array<ISearchOption | IOption> | IOption | ISearchOption;
