import { EventEmitter } from "../../stencil-public-runtime";
import { IFilterField, IFilterLink, FilterFieldsDataSource } from "./interfaces";
import { IBreadcrumbItem } from "@sankhyalabs/ezui/dist/types/components/ez-breadcrumb/ez-breadcrumb";
import { ListGroup } from "@sankhyalabs/ezui/dist/types/components/ez-list/ez-list";
import { IEzPopoverAnchorOptions } from "@sankhyalabs/ezui/dist/types/components/ez-popover/ez-popover";
export declare class SnkFilterFieldSearch {
  private _ezLinkList;
  private _ezFieldList;
  private _ezPopover;
  private _application;
  private _currentMetadata;
  private _currentLink;
  private _filterText;
  private _isLoading;
  /**
   * Define se o componente irá possuir um campo de pesquisa.
  */
  searchable: boolean;
  /**
   * Define a fonte de dados que o componente vai utilizar
   * para carregamento dos campos.
  */
  fieldsDataSource: FilterFieldsDataSource;
  breadcrumbItems: Array<IBreadcrumbItem>;
  linkItems: Array<ListGroup>;
  fieldItems: Array<ListGroup>;
  searchEmpty: boolean;
  groupEmpty: boolean;
  /**
   * Emitido sempre que um item da lista for selecionado
   * @type {EventEmitter<IFilterField | IFilterLink>}
  */
  ezSelectFilterItem: EventEmitter<IFilterField | IFilterLink>;
  /**
   * /**
   * Realiza a abertura do componente abaixo do elemento HTML informado
   * e faz a primeira carga de dados.
   *
   * @param {HTMLElement} element - Elemento HTML onde o snk-filter-field-search irá se posicionar abaixo.
   * @param {IEzPopoverAnchorOptions} options - opções para regular o posicionamento do componente.
   */
  show(element?: HTMLElement, options?: IEzPopoverAnchorOptions): Promise<void>;
  /**
   * Filtra a fonte de dados do componente.
   * @param {string} filterText - Texto para filtrar a fonte de dados.
   * @throws {Error} - Quando o componente estiver com a propriedade searchable como true.
  */
  applyFilter(filterText: string): Promise<void>;
  private loadData;
  private mapDataSourceToLinkItems;
  private mapDataSourceToFieldItems;
  private handleFilterChange;
  private handleSelectLink;
  private getEntityFromBreadCrumbItem;
  private handleSelectField;
  private getElementID;
  /**
   * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção
   * através de um pequeno modulo na estrutura da aplicação:
   * - Criar um arquivo no seguinte caminho: /messages/appmessages.msg.js.
   * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-filter-field-search.msg.ts"
  */
  private getMessage;
  componentWillLoad(): void;
  componentDidLoad(): void;
  disconnectedCallback(): void;
  render(): any;
}
