import { EventEmitter } from '../../stencil-public-runtime';
import { ITreeItem } from './interfaces/ITreeItem';
import { UpdateItemConfig } from './types/UpdateItemConfig';
export declare class EzTree {
  private i18n;
  private _element;
  private _visibleItems;
  private _onItemClick;
  private _onIconClick;
  private _tree;
  private _waintingForLoad;
  /**
   * Define os itens apresentados na árvore.
   */
  items: Array<ITreeItem>;
  /**
   * Define o item selecionado na árvore.
   */
  value: ITreeItem;
  /**
   * Forma alternativa para atribuir o item selecionado por seu ID.
   */
  selectedId: string;
  /**
   * Define uma função que vai resolver o ícone daquele item. Retorna o nome do ícone da lib de icones do DS.
   */
  iconResolver: (item: ITreeItem, expanded: boolean, level: number) => string;
  /**
   * Define uma função que vai resolver o `tooltip` ou `title` daquele item.
   */
  tooltipResolver: (item: ITreeItem, enabled: boolean, level: number) => string;
  /**
   * Define se a árvore deve permitir a filtragem hierárquica.
   */
  enableHierarchicalFilter: boolean;
  /**
   * Define se os itens da árvore são selecionáveis.
   */
  selectable: boolean;
  /**
   * Emitido quando um item é selecionado na árvore.
   */
  ezChange: EventEmitter<ITreeItem>;
  /**
   * Emitido quando um item é aberto na árvore.
   */
  ezOpenItem: EventEmitter<ITreeItem>;
  /**
   * Emitido ao dar clique duplo em um item da árvore.
   */
  ezDbClickItem: EventEmitter<ITreeItem>;
  /**
   * Emitido ao remover um item da árvore.
   */
  ezRemoveItem: EventEmitter<string>;
  /**
   * Efetua a seleção de um item.
   */
  selectItem(id: string): Promise<void>;
  /**
   * Realiza a abertura de um item, incluindo a hieraquia acima.
   * Observação para carga dinâmica (Lazyload): O item solicitado já deve
   * estar carregado na lista. Nos casos onde o item ainda não esteja
   * carregado o id pode ser uma string no formato "id1>>id2>>id3",
   * tornando possível a carga a partir de um ponto já carregado.
   */
  openItem(id: string): Promise<void>;
  /**
   * Desabilita um ou mais itens.
   */
  disableItem(id: string | Array<string>): Promise<void>;
  /**
  * Habilita um ou mais itens.
  */
  enableItem(id: string | Array<string>): Promise<void>;
  /**
   * Adiciona um ou mais itens. Opcionalmente pode-se determinar a qual
   * item da árvore será anexado o item. Caso não informado parentId,
   * adiciona no item selecionado.
   * Observação para carga dinâmica (Lazyload): O parentId deve ser
   * um item carregado atualmente na árvore.
   */
  addChild(item: ITreeItem, parentId?: string): Promise<void>;
  /**
   * Efetua a seleção de um item.
   */
  applyFilter(pattern: string): Promise<void>;
  /**
   * Expande todos os itens da árvore.
   */
  expandAll(): Promise<void>;
  /**
   * Recolhe todos os itens da árvore.
   */
  collapseAll(): Promise<void>;
  /**
   * Atualiza um item
   */
  updateItem(item: ITreeItem | ITreeItem[], config?: Partial<UpdateItemConfig>): Promise<void>;
  /**
   * Remove um item da árvore pelo seu ID.
   * Se o item removido estiver selecionado, a seleção será limpa.
   */
  removeItem(id?: string): Promise<void>;
  /**
   * Obtem um item pelo id
   */
  getItem(id: string): Promise<ITreeItem>;
  /**
   * Obtem um array do caminho de itens da seleção atual.
   * @returns Retorna um array do caminho de itens da seleção atual.
   */
  getCurrentPath(): Promise<Array<ITreeItem>>;
  /**
   * Obtem o item pai a partir de um id
   */
  getParent(id: string): Promise<ITreeItem>;
  observeItems(newValue: Array<ITreeItem>, oldValue: Array<ITreeItem>): void;
  observeValue(): void;
  onKeyDownListener(event: KeyboardEvent): void;
  private getItemById;
  private addItemInIndexedList;
  private applyDefaultValues;
  private updateItemInIndexedList;
  private removeItemFromIndexedList;
  private getItemPathAttrs;
  private openClose;
  private previousLevel;
  private nextLevel;
  private indexOf;
  private selectNextItem;
  private nextItem;
  private previousItem;
  connectedCallback(): void;
  componentWillLoad(): Promise<void>;
  componentWillRender(): void;
  render(): any;
}
