import { PartialDataTransfer } from '../../reporters/PartialDataTransfer.js';
import { ExcelTemplateManager } from '../core/Template.js';
import { CellReportOptions, ReportOptions, ReportStreamOptions } from './report-template.type.js';
import 'stream';
import '../../reporters/IPartialDataHandler.js';
import './common-type.js';
import '../../reporters/SheetMeta.js';
import 'exceljs';

type ExporterOutputType = "csv" | "excel" | "html" | "pdf";
type ExporterStreamOutputType = "excel";
type ExporterMethodType = "full-load" | "stream";
type ExporterOptions = {
    templateManager?: ExcelTemplateManager<CellReportOptions>;
    templatePath?: string;
    action: "write" | "buffer" | "stream";
    reportPath?: string;
} & Partial<ReportOptions>;
type ExporterStreamOptions = {
    content: {
        header?: any;
        footer?: any;
        table: PartialDataTransfer;
    };
    templateManager?: ExcelTemplateManager<CellReportOptions>;
} & Omit<ExporterOptions, "templateManager"> & ReportStreamOptions;

export type { ExporterMethodType, ExporterOptions, ExporterOutputType, ExporterStreamOptions, ExporterStreamOutputType };
