import { type WorkBook } from "xlsx";
import type { FdoCustomAttribute } from "@feedmepos/core/entity";
import { FdoMenuV4, FdoMenuV4Item, FdoItemOverriderV4 } from "@feedmepos/menu/entity";
import type { FdoGroupOverriderV4 } from "@feedmepos/menu/entity";
import { type ExportMenuDataRow, type TransformDataResult } from "@/helper/import-export-utils";
export declare class MenuExport {
    menu: FdoMenuV4;
    categoryMap: {
        [id: string]: number;
    };
    itemMap: {
        [id: string]: number;
    };
    groupMap: {
        [id: string]: number;
    };
    takeawayMap: {
        [id: string]: number;
    };
    subCategoryMap: {
        [id: string]: number;
    };
    attributeSettings: FdoCustomAttribute[];
    priceTierKeys: string[];
    constructor(menu: FdoMenuV4, attributeSettings: FdoCustomAttribute[]);
    transformData(): {
        rows: any[];
        combinationNameMapping: {
            [key: string]: {
                [combinationKey: string]: string;
            };
        };
    };
    transformOverrideData(data: FdoItemOverriderV4[], combinationNameMappings: {
        [itemId: string]: {
            [combinationKey: string]: string;
        };
    }): TransformDataResult;
    private getSubCategoryNames;
    transformProductToDataRow(item: FdoMenuV4Item, combinationNameMapping: {
        [key: string]: string;
    }, combinationKey?: string | null | undefined): any[];
    transformOverrideDataToRow(item: FdoMenuV4Item, itemOverrider: FdoItemOverriderV4, // base or variant
    combinationNameMapping: {
        [key: string]: string;
    }, combinationKey?: string | null | undefined): ExportMenuDataRow;
    transformAddonGroup(combinationNameMapping: {
        [key: string]: {
            [combinationKey: string]: string;
        };
    }): any[];
    transformOverrideAddonGroup(data: FdoGroupOverriderV4[], combinationNameMappings: {
        [itemId: string]: {
            [combinationKey: string]: string;
        };
    }): any[];
    private mapCatalogAddonGroup;
    private mapAddonGroup;
    transformItemsLinkWithGroup(): {
        id: string;
        name: string;
        items: {
            itemId: string;
            itemName: string;
            defaultCatalog: string;
        }[];
    }[];
    /**
     * @deprecated Use {@link exportToExcelStreaming} instead.
     * This method builds all 3 workbooks in memory simultaneously, which causes
     * out-of-memory errors for large menus (e.g. 262 catalogs × 923 items).
     * It also duplicates catalog data via intermediate workbook copying.
     */
    exportToExcel(): any[];
    exportCatalogToExcelExcelJS(combinationNameMapping: {
        [itemId: string]: {
            [combinationKey: string]: string;
        };
    }, workbook: WorkBook): void;
    exportCatalogAddonToExcelExcelJS(combinationNameMappings: {
        [itemId: string]: {
            [combinationKey: string]: string;
        };
    }, workbook: WorkBook): void;
    exportToExcelStreaming(onWorkbook: (workbook: WorkBook) => Promise<void>): Promise<void>;
}
