import * as excelJS from "exceljs";
import { BaseService } from "../../common/classes/base.service";
export type ExporterMapper<T = any> = (items: T) => any;
export type ExportItemsConfig<D> = {
    exportDataCallback: (items: D[], edge: Record<string, any>, { tLabel, tSystem, }: {
        tLabel: (string: string) => string;
        tSystem: (string: string) => string;
    }) => Promise<Exporter>;
};
export default class Exporter extends BaseService {
    private _createdAt;
    private _workbook;
    private _sheets;
    private _last_sheet;
    private _mapper?;
    private _data;
    creator: string;
    lastModifiedBy: string;
    constructor();
    setWorksheet(name: string, options?: Partial<excelJS.AddWorksheetOptions>): this;
    addData<T extends string, D = any>(columns: {
        [K in T]: Partial<excelJS.Column> & {
            key?: K;
        };
    } | (() => {
        [K in T]: Partial<excelJS.Column> & {
            key?: K;
        };
    }), data: D[], mapper: (item: D) => {
        [Key in T]: unknown;
    }): void;
    setLabels(sheetName: string, labels: {
        [f: string]: {
            label: string;
            value: any;
        };
    }): void;
    saveToFile(filename: string): Promise<void>;
}
