import * as exceljs from 'exceljs';
import { Writable } from 'stream';
import { EventRegister } from '../../common/core/ListEvents.js';
import { ExcelTemplateManager } from '../../common/core/Template.js';
import { TableData } from '../../common/types/common-type.js';
import { CellReportOptions } from '../../common/types/report-template.type.js';
import { PartialDataTransfer } from '../PartialDataTransfer.js';
import { IExporter } from './IExporter.js';
import '../IPartialDataHandler.js';
import '../SheetMeta.js';

type ExcelExporterOptions = {
    useSharedStrings?: boolean;
    zip?: Partial<exceljs.stream.xlsx.ArchiverZipOptions>;
    style?: "no-style" | "no-style-no-header" | "use-style";
};
type TableDataPartialDataTransfer = {
    header?: any;
    footer?: any;
    table: PartialDataTransfer;
};
declare class ExcelExporter implements IExporter {
    private templatePath;
    private template;
    private event;
    private opts;
    private excelProcessor;
    constructor(templatePath: string);
    get Template(): ExcelTemplateManager<CellReportOptions>;
    get Event(): EventRegister;
    write(reportPath: string, data: TableData, opts?: ExcelExporterOptions): Promise<void>;
    write(reportPath: string, data: TableDataPartialDataTransfer, opts?: ExcelExporterOptions): Promise<void>;
    toBuffer(data: TableData, opts?: ExcelExporterOptions): Promise<Buffer>;
    toBuffer(data: TableDataPartialDataTransfer, opts?: ExcelExporterOptions): Promise<Buffer>;
    streamTo(filePath: string, data: TableDataPartialDataTransfer, opts?: ExcelExporterOptions): void;
    streamTo(stream: Writable, data: TableDataPartialDataTransfer, opts?: ExcelExporterOptions): void;
    private execute;
    private createTask;
}

export { ExcelExporter };
