import { TextFormatParams } from '../../../../../../types/src/table';
import { default as Cell } from '../../core/cell/Cell';
import { default as CellComponent } from '../../core/cell/CellComponent';
import { default as Column } from '../../core/column/Column';
import { default as Module } from '../../core/Module';
import { default as Tabulator } from '../../core/Tabulator';
import { FormatterFn } from './formatter-lookup';

type FormatterConfig = {
    formatter: (cell: CellComponent, params: any, onRendered: (callback: () => void) => void) => any;
    params: any;
    textFormatParams: TextFormatParams;
};
export type { FormatterFn };
export default class Format extends Module {
    static readonly moduleName = "format";
    static formatters: Record<string, FormatterFn>;
    constructor(table: Tabulator);
    initialize(): void;
    /**
     * Initialize the column formatter
     * @param column - The column to initialize the formatter for
     * @returns void
     */
    initializeColumn(column: Column): void;
    lookupTypeFormatter(column: Column, type: string): FormatterConfig;
    static lookupFormatter(formatter: string | ((cell: any, params: any, onRendered: (callback: () => void) => void) => any) | undefined): FormatterFn;
    cellRendered(cell: Cell): void;
    /**
     * Format the header of a column
     * @param column - The column to format the header for
     * @param title - The title of the column
     * @param el - The element to format the header for
     * @returns The formatted header
     */
    formatHeader(column: Column, title: string, el: HTMLElement): any;
    formatValue(cell: Cell): any;
    formatExportValue(cell: Cell, type: 'print' | 'clipboard' | 'htmlOutput'): any;
}
