import { IOption } from '@sankhyalabs/ezui/dist/types/components/ez-combo-box/ez-combo-box';
import { EventEmitter } from '../../../../../stencil-public-runtime';
import { SnkFilterItemConfig } from '../../snk-filter-item';
import { SnkApplication } from '../../../../snk-application/snk-application';
import { EPresentationMode } from '../enum/presentationMode';
import { SnkMessageBuilder } from '../../../../../lib/message/SnkMessageBuilder';
import { IPersonalizedFilter } from '../../../../snk-personalized-filter/interfaces/IPersonalizedFilter';
import { IParameter } from '../../../../snk-personalized-filter/interfaces/IParameter';
export declare class SnkFilterPersonalized {
  _element: HTMLElement;
  originalItems: Array<SnkFilterItemConfig>;
  _application: SnkApplication;
  /**
   * Responsável por flexibilizar e padronizar o uso de mensagens nos blocos de construção.
   */
  messagesBuilder: SnkMessageBuilder;
  /**
   * Controla o modo de apresentação do componente, que pode ser configurado como modal ou chip.
   */
  presentationMode: EPresentationMode;
  /**
   * Configuração que define as opções e comportamento do componente.
   */
  config: SnkFilterItemConfig;
  /**
   * Controla o valor do componente.
   */
  value: Array<IOption | boolean | string | number | Date>;
  items: Array<SnkFilterItemConfig>;
  deleteFilter: EventEmitter<IPersonalizedFilter>;
  editFilter: EventEmitter<string>;
  addFilter: EventEmitter<void>;
  /**
   * Emitido quando o valor do filtro é alterado.
   */
  valueChanged: EventEmitter<any>;
  /**
   * Apresenta o componente
   */
  show(): Promise<void>;
  configWatcher(newConfig: SnkFilterItemConfig): void;
  /**
   * 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-personalized-filter.msg.ts"
   */
  private getMessage;
  getItemContent(item: SnkFilterItemConfig): any;
  buildModalListActions(item: SnkFilterItemConfig, isVariable: boolean): any;
  isModalMode(): boolean;
  doSearch(mode: string, argument: string, param: IParameter): Promise<Array<IOption> | IOption>;
  getFormField(parentItem: SnkFilterItemConfig): Array<HTMLElement>;
  parseDate(objValue: string | Date): Date;
  getVisibleCount(items: Array<SnkFilterItemConfig>): number;
  handleItemChange(visible: boolean, itemId: string): void;
  handleSearchFilterList({ detail: query }: CustomEvent<string>): void;
  handleFilterItemChange(value: any, formProp: any): void;
  handleClearFilters(): void;
  emitChange(clear?: boolean): void;
  handleDeleteFilter(item: SnkFilterItemConfig): void;
  componentDidLoad(): void;
  componentWillLoad(): void;
  buildModeModalHeader(): any;
  buildModeModalFooter(): any;
  buildContainerFiltersCreated(): any;
  render(): any;
}
