import { EventEmitter } from '../../stencil-public-runtime';
import Sortable from 'sortablejs';
import { SlotBuilder } from '../ez-list/ez-list';
export interface ListItem {
  label: string;
  id: string;
  selected?: boolean;
  sort?: string;
}
export declare class EzSortableList {
  private i18n;
  el: HTMLElement;
  _sortableInstance: Sortable;
  filterTerm: string;
  /**
   * Define o título da lista.
   */
  title: string;
  /**
   * Define se o cabeçalho deve ficar oculto.
   */
  hideHeader: boolean;
  /**
   * Define se o totalizador deve ser escondido.
   */
  hideTotalizer: boolean;
  /** Grupo ao qual o ez-sortable-list pertence */
  group: string;
  /** Lista de itens para serem renderizados */
  dataSource: Array<ListItem>;
  /** ID do sortable list */
  idSortableList: string;
  /**
   * Nome da entidade listada.
   * Exemplo: "Campo", "Item", "Empresa".
   */
  entityLabel: string;
  /**
   * Variação plural do nome da entidade listada.
   * Exemplo: "Campos", "Itens", "Empresas".
   */
  entityLabelPlural: string;
  /** Mensagem exibida quando a lista está vazia */
  emptyMessage: string;
  /** Quando verdadeiro, ativa o feedback visual ao efetuar hover nos itens da lista */
  hoverFeedback: boolean;
  /** Habilita seleção de múltiplos itens utilizando as teclas 'Ctrl/Command' ou 'Shift' */
  enableMultipleSelection: boolean;
  /** Remove itens arrastados de uma lista para outra */
  removeItensMoved: boolean;
  /**
   * Função builder que possibilita alterar como o item da lista vai ser apresentado.
   * Observação: No react ele se transforma em VNode e não como HTMLElement.
   */
  itemRightSlotBuilder: SlotBuilder;
  /**
   * Função builder que possibilita gerar conteúdo dinâmico à esquerda do item da lista.
   * * Observação: No react ele se transforma em VNode e não como HTMLElement.
   */
  itemLeftSlotBuilder: SlotBuilder;
  /** Evento emitido quando a ordem dos itens muda */
  itemsReordered: EventEmitter<any>;
  /** Emitido sempre que um ou vários itens da lista forem selecionados */
  ezSelectItens: EventEmitter<ListItem[] | ListItem>;
  /** Emitido quando ocorre um duplo clique em um item da lista */
  ezDoubleClick?: EventEmitter<ListItem>;
  /** Emitido quando ocorre a escolha de um item da lista */
  ezChoose?: EventEmitter<ListItem[] | ListItem>;
  /** Remove a seleção de todos os itens da lista */
  clearSelection(): Promise<void>;
  selectedItems: Set<string>;
  componentWillLoad(): Promise<void>;
  componentDidLoad(): void;
  componentDidRender(): void;
  private initSortable;
  private selectPredefinedItens;
  private handleSortItem;
  private removeDuplicateElements;
  private handleSelect;
  private handleDeselect;
  private updateSelection;
  private emitSelectedItems;
  private handleReorderEvent;
  private handleDoubleClick;
  getContainerItemBuilder(slotPosition: 'left' | 'right', item: ListItem, className?: string): HTMLElement;
  disconnectedCallback(): void;
  private buildTotalizer;
  private renderItems;
  private handleFilterChanged;
  private renderTotalizer;
  private renderHeader;
  render(): any;
}
