import { DataUnit, Filter } from '@sankhyalabs/core';
import { EventEmitter } from '../../stencil-public-runtime';
import { IRecordValidator } from '../../utils/form/interfaces';
import { IMultiSelectionListDataSource } from '../ez-multi-selection-list/interfaces/IMultiSelectionListDataSource';
import { EzGridColumStateEvent, EzGridColumn, EzGridColumnConfig, IGridConfig, IStatusResolver, StatusResolverFunction } from './controller/EzGridController';
import { ICustomFormatter, IGridMode, ISelection, ISelectionToastConfig } from './interfaces';
import { ICustomEditor } from '../../utils/customEditor/interfaces/ICustomEditor';
import { ICustomRender } from '../../utils/customRender/interfaces/ICustomRender';
export declare class EzGrid {
  private i18n;
  private _container;
  private _ezPopoverSearchColumn;
  private _cancelPaginationPopoverElement;
  private _refPaginationControl;
  private _gridController;
  private _gridSelectionCounter;
  private _resizeObserver;
  private _filterColumn;
  private _refPaginationLabel;
  private _refPaginationLabelTooltip;
  private _headerOverflowWatcher;
  private _customEditor;
  private _customRenders;
  private _keyboardManager;
  private _columnSearch;
  _element: HTMLElement;
  private _paginationInfo;
  private _paginationChangedByKeyboard;
  private _showSelectionCounter;
  private _isAllSelection;
  private _currentPageSelected;
  private _selectionCount;
  private _hasLeftButtons;
  private _customFormatters;
  /**
   * Emitido quando acontece a alteração de estado das colunas do grid: Ordenação, largura, etc.
   */
  ezColumnStateChange: EventEmitter<EzGridColumStateEvent>;
  /**
   * Emitido a página atual é alterada.
   */
  ezPageChangedChanged: EventEmitter<void>;
  /**
   * Emitido quando acontece a alteração de filtro de colunas.
   */
  ezColumnFilterChanged: EventEmitter<Array<Filter>>;
  /**
   * Emitido quando acontece a alteração de seleção de linhas.
   */
  ezSelectionChange: EventEmitter<ISelection>;
  /**
   * Emitido com o duplo clique de uma linha
   */
  ezDoubleClick: EventEmitter<any>;
  /**
   * Emitido quando acontece a alteração de configuração do grade.
   */
  configChange: EventEmitter<IGridConfig>;
  /**
   * Emitido quando o componente estiver completamente carregado.
   */
  componentReady: EventEmitter<void>;
  /**
   * Define se o componente deve usar o LockManager para controle de carregamento da aplicação
   */
  enableLockManagerLoadingComp?: boolean;
  /**
   * Ativa inserção de registros no modo grade pela Taskbar.
   */
  enableLockManagerTaskbarClick?: boolean;
  /**
   * Habilita a seleção de várias linhas.
   */
  multipleSelection: boolean;
  /**
   * Configuração de exibição da grade.
   */
  config: IGridConfig;
  /**
   * Configuração da seleção de grade no toast.
   */
  selectionToastConfig: ISelectionToastConfig;
  /**
   * Endereço do servidor para obtenção dos dados.
   */
  serverUrl: string;
  /**
   * Unidade de dados. Responsável pelo controle de edição de registros e
   * informações pertinentes aos campos.
   */
  dataUnit: DataUnit;
  /**
   * Define um `IStatusResolver` responsável pelo estado da coluna de status.
   */
  statusResolver: IStatusResolver | StatusResolverFunction;
  /**
   * Define um `IMultiSelectionListDataSource` responsável por alimentar o filtro de colunas.
   */
  columnfilterDataSource: IMultiSelectionListDataSource;
  /**
   * Quando verdadeiro, o ENTER fará a navegação como se fosse a tecla TAB na grade.
  */
  useEnterLikeTab: boolean;
  /**
   * Define um validador responsável pela integridade dos registros.
   */
  recordsValidator: IRecordValidator;
  /**
   * Define se a edição está habilitada na grid.
   */
  canEdit: boolean;
  /**
   * Define se a grid será focada ao ser carregada.
   */
  autoFocus?: boolean;
  /**
  * Define se a grid será focada ao ser carregada.
  */
  paginationCounterMode?: 'show' | 'hidden' | 'auto';
  /**
   * Ativa inserção de registros no modo grade.
   */
  enableGridInsert?: boolean;
  /**
   * Ativa/desativa a inserção continua na grade
   * Só funciona quando a prop enableGridInsert está ativa
   */
  enableContinuousInsert?: boolean;
  /**
   * Informa se a coluna de chechbox deve ser suprimida
   */
  suppressCheckboxColumn?: boolean;
  /**
   * Informa se a grade deve suprimir o filtro de coluna.
   */
  suppressFilterColumn?: boolean;
  /**
   * Altera visualmente as sombras e bordas do componente
   * Quando false, aplica o padrão de sombras ao componente (Utilizar quando for o elemento principal do layout)
   * Quando true, aplica o padrão de outline ao componente (Utilizar quando estiver contido em outro elemento como um painel ou pop-up)
   */
  outlineMode?: boolean;
  /**
   * Ativa modo de linhas com cores alternadas.
   */
  enableRowTableStriped?: boolean;
  /**
   * Define se a grade deve ser exibida em modo compacto
   */
  compact?: boolean;
  /**
   * Define se a grade deve exibir um buscador de coluna com uso do Ctrl+F
   */
  useSearchColumn: boolean;
  /**
   * Define se a grade deve suprimir o scroll horizontal.
   */
  suppressHorizontalScroll: boolean;
  /**
   * Define o modo de uso da grade
   */
  mode: IGridMode;
  /**
   * Aplica a definição de colunas.
   */
  setColumnsDef(cols: Array<EzGridColumn>): Promise<void>;
  /**
   * Retorna os filtros aplicados.
   */
  getAppliedColumnFilters(): Promise<Array<Filter>>;
  refreshColumnFilterDataSource(): Promise<void>;
  /**
   * Adiciona item de menu nas colunas.
   */
  addColumnMenuItem(label: string, name: string, action: Function, icon: HTMLElement | string): Promise<void>;
  /**
   * Aplica o estado das colunas.
   */
  setColumnsState(state: Array<EzGridColumnConfig>): Promise<void>;
  /**
   * Insere os registros no ez-grid.
   */
  setData(data: Array<any>): Promise<void>;
  /**
   * Obtém as linhas selecionadas.
   */
  getSelection(): Promise<Array<any>>;
  /**
   * Obtém o estado atual das colunas.
   */
  getColumnsState(): Promise<Array<EzGridColumn>>;
  /**
   * Obtém a lista de definição de colunas.
   */
  getColumns(): Promise<Array<EzGridColumn>>;
  /**
   * Aplica um filtro rápido.
   */
  quickFilter(term: string): Promise<void>;
  /**
   * Localiza determinada coluna tornando-a visível.
   */
  locateColumn(columnName: string): Promise<void>;
  /**
   * Usa um argumento para filtrar as colunas po label
   */
  filterColumns(search: string): Promise<Array<EzGridColumn>>;
  /**
   * Registra um editor customizado para campos da grade e formulário.
   */
  addCustomEditor(fieldName: string, customEditor: ICustomEditor, detailContext?: string): Promise<void>;
  /**
   * Registra um render customizado para colunas da grid.
   */
  addGridCustomRender(fieldName: string, customRender: ICustomRender, detailContext?: string): Promise<void>;
  /**
   * Registra um formatador de valores para uma coluna da grid.
   */
  addCustomValueFormatter(columnName: string, customFormatter: ICustomFormatter): Promise<void>;
  /**
   * Remove o formatador de valores de uma coluna da grid.
   */
  removeCustomValueFormatter(columnName: string): Promise<void>;
  /**
   * Atualiza linhas da grade.
   */
  refreshSelectedRows(): Promise<void>;
  /**
   * Retorna o formatador customizado da coluna caso exista.
   */
  getCustomValueFormatter(columnName: string): Promise<ICustomFormatter | undefined>;
  /**
   * Atribui o foco para a grade.
   */
  setFocus(): Promise<void>;
  /**
   * Para a edição da grade.
   */
  stopEdit(): Promise<void>;
  checkStopEditOutsideClick(event: MouseEvent): Promise<void>;
  observeConfig(config: IGridConfig): void;
  updatePaginationTooltip(): void;
  observePaginationCounterMode(newValue: any): void;
  observeModeChange(newMode?: IGridMode): Promise<void>;
  handleApplyFilterColumn(): Promise<void>;
  onSelectionChange(evt: CustomEvent): void;
  handleClick(event: MouseEvent): Promise<void>;
  private setSelection;
  private onSelectAllRecords;
  private onSelectPageRecords;
  private onClearSelectedRecords;
  private createConfigFromState;
  private positionSelectionCounter;
  private calculatePositionLeft;
  private setEvents;
  private resizeSelectionCounter;
  private configSelectionCounter;
  private onColumnStateChange;
  private buildDataElementId;
  private handlePageChange;
  private previousPage;
  private nextPage;
  private nextRecord;
  private previousRecord;
  private resetPaginationState;
  private resolvePaginationClassMode;
  private handleCancelPagination;
  private renderCancelPagination;
  private handleShowCancelPagination;
  private getPaginationControl;
  private shouldPresentPaginationLabel;
  componentDidLoad(): void;
  private handlePaginationChange;
  private _getActualPageLabel;
  private _getRemainingPageLabel;
  private _hasToShowCancelPagination;
  private _getPaginationTooltip;
  private _initHeaderOverflowWatcher;
  private buildOverFlowWatcherParams;
  private handleOverFlow;
  private _getPaginationDescriptionWidth;
  private _getElementMargins;
  private _hidePaginationDescription;
  private _showPaginationDescription;
  disconnectedCallback(): void;
  connectedCallback(): void;
  componentWillRender(): void;
  componentDidRender(): void;
  componentWillLoad(): Promise<void>;
  componentDidUpdate(): void;
  private getDataSource;
  private hideHeader;
  private resolveLeftHeaderClass;
  private initKeyboardManager;
  private removeShortcuts;
  private renderFieldSearchColumn;
  render(): any;
}
