import { Filter, Sort } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
import { IRecordID } from './IRecordID';
import IExporterColumnMetadata from "../../../lib/http/data-fetcher/fetchers/fetchDataExporter/interfaces/IExporterColumnMetadata";
import { DataExporterOption } from '../../../lib/@types';
import { DataUnit } from '@sankhyalabs/core';
import { EzGridColumn } from '@sankhyalabs/ezui/dist/types/components/ez-grid/controller/EzGridController';
import { IExportType } from '../../../lib/http/data-fetcher/fetchers/fetchDataExporter/interfaces/IFetchDataExporterParams';
export interface IExporterProvider {
  getFilters?(): Array<Filter>;
  getColumnsMetadata(): Array<IExporterColumnMetadata> | Promise<Array<IExporterColumnMetadata>>;
  getOrders?(): Array<Sort>;
  getResourceURI?(): string;
  getSelectedNumber(): number;
  getTotalRecords(): number;
  getOffset?(): number;
  getPageSize?(): number;
  getExportLimit?(): number;
  getSelectedIDs?(): Array<IRecordID>;
  getRecordID?(): string;
  getRecords?(exportType?: IExportType): Promise<Array<{
    [key: string]: any;
  }>>;
  getHiddenOptions?(): Array<DataExporterOption>;
  formatValue?(record: {
    [key: string]: any;
  }, column: IExporterColumnMetadata): string;
}
export declare class CommonsExporter {
  dataUnit: DataUnit;
  grid: HTMLEzGridElement;
  private columnsState;
  private readonly MAX_WIDTH_COD;
  private readonly MIN_WIDTH_COD;
  private readonly DEFAULT_FONT_SIZE;
  constructor(dataUnit: DataUnit, grid: HTMLEzGridElement);
  getColumnsMetadata(): Promise<Array<IExporterColumnMetadata>>;
  getColumnsState(): EzGridColumn[];
  private buildColumnsMetadata;
  private collectSearchPlusDescriptionIds;
  /**
   * TODO: Analisar e criar uma melhor forma de tratar essa validação do "RECDESP".
   */
  private isHiddenColumn;
  private isSearchUserInterface;
  private buildDescriptionColumnId;
  private buildDescriptionColumn;
  getWidthByMetaData(maxWidth: number, widthCod: number, widthDescription: number): {
    codWidth: number;
    descWidth: number;
  };
}
