import * as exceljs from 'exceljs';
import { CellReportOptions } from '../../../common/types/report-template.type.cjs';
import { ExcelTemplateManager } from '../../../common/core/Template.cjs';
import { EventRegister } from '../../../common/core/ListEvents.cjs';
import '../../../common/types/common-type.cjs';

type ExcelProcessorOptions = {
    workBook: exceljs.Workbook;
    template: ExcelTemplateManager<CellReportOptions>;
    event: EventRegister;
    header?: any;
    style?: "no-style" | "no-style-no-header" | "use-style";
    footer?: any;
};
declare class ExcelProcessor {
    protected template: ExcelTemplateManager<CellReportOptions>;
    protected workBook: exceljs.Workbook;
    protected headerData?: any;
    protected footerData?: any;
    protected event: EventRegister;
    protected style: "no-style" | "no-style-no-header" | "use-style";
    private titlesTable;
    private columnKeys?;
    constructor(opts: ExcelProcessorOptions);
    private createColumnKey;
    protected getOrCreateWorksheet(name: string): exceljs.Worksheet;
    protected setHeader(headerData: any, sheet: exceljs.Worksheet): void;
    protected setHeader(headerData: any, sheetName: string): void;
    pushData(sheetName: string, batches: any[] | any, isFinish?: boolean): void;
    protected setFooter(footerData: any, sheetName: string): void;
    protected setFooter(footerData: any, sheet: exceljs.Worksheet): void;
    finalizeWorksheet(sheetName: string): void;
    protected addRowWithoutStyle(rowdata: any, workSheet: exceljs.Worksheet): void;
    protected addRow(data: any, workSheet: exceljs.Worksheet, cellDesc: CellReportOptions[]): exceljs.Row;
    protected setCell(rowData: any, cellOpt: CellReportOptions, cell: exceljs.Cell): exceljs.Cell;
    protected mergeCells(sheet: exceljs.Worksheet): void;
    protected setWidthsAndHeights(sheet: exceljs.Worksheet): void;
}
declare class ExcelStreamProcessor extends ExcelProcessor {
    finalizeWorksheet(sheetName: string): void;
    protected addRow(data: any, workSheet: exceljs.Worksheet, cellDesc: CellReportOptions[]): exceljs.Row;
    finalizeWorkbook(): Promise<void>;
}

export { ExcelProcessor, ExcelStreamProcessor };
