import { DataUnit, DataUnitInMemoryLoader, Record, RECORD_DATE_FORMAT, UnitMetadata } from '@sankhyalabs/core';
import { ICustomRender } from '../../utils';
import { EzGridColumn } from '../ez-grid/controller/EzGridController';
import { ICustomFormatter } from '../ez-grid/interfaces';
export declare class EzGridView {
  private _gridRef;
  inMemoryLoader: DataUnitInMemoryLoader;
  /**
   * Metadados que definem a estrutura da grade.
   */
  metadata: UnitMetadata;
  /**
   * Registros a serem exibidos na grade.
   */
  records: Record[];
  /**
   * Configuração de exibição da grade.
   */
  columnsConfig?: ColumnConfig[];
  /**
   * Quantidade de registros por página.
   */
  pageSize: number;
  /**
   * Formato dos campos data dos registros.
   */
  recordDateFormat?: RECORD_DATE_FORMAT;
  /**
   * Habilita a seleção de várias linhas.
   */
  multipleSelection: boolean;
  /**
   * Define se a grid será focada ao ser carregada.
   */
  autoFocus?: boolean;
  /**
   * Define a forma como a paginação irá se comportar.
   */
  paginationCounterMode?: 'show' | 'hidden' | 'auto';
  /**
   * 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;
  /**
   * Obtém o DataUnit da grade.
   */
  getDataUnit(): Promise<DataUnit>;
  /**
   * Recarrega os registros da grade.
   */
  refresh(): Promise<void>;
  /**
   * Obtém as linhas selecionadas.
   */
  getSelection(): Promise<Array<any>>;
  /**
   * 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 por label
   */
  filterColumns(search: string): Promise<Array<EzGridColumn>>;
  /**
   * Adiciona item de menu nas colunas.
   */
  addColumnMenuItem(label: string, name: string, action: Function, icon: HTMLElement | 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>;
  /**
   * Registra um render customizado para colunas da grid.
   */
  addGridCustomRender(fieldName: string, customRender: ICustomRender, detailContext?: string): Promise<void>;
  /**
   * Atribui o foco para a grade.
   */
  setFocus(): Promise<void>;
  handleMetadataChanged(): Promise<void>;
  handleRecordsChanged(): Promise<void>;
  handlePageSizeChanged(): Promise<void>;
  handleRecordDateFormatChanged(): Promise<void>;
  private configGrid;
  private updateDURecords;
  private refreshFilterColumnDataSource;
  private hasValidDependencies;
  private buildGridConfig;
  private parseColumnConfig;
  private ensureInMemoryLoaderExists;
  private buildInMemoryLoader;
  private clearInMemoryLoader;
  private buildInMemoryLoaderConfig;
  componentDidLoad(): Promise<void>;
  render(): any;
}
export interface ColumnConfig {
  /**
   * ID da coluna. Em cada linha do array de dados, esse ID deve coincidir com
   * o nome do atributo que a coluna representa.
   */
  name: string;
  /**
   * Largura padrão da coluna em pixels absolutos.
   */
  width: number;
}
