import { type WorkBook, type WorkSheet } from "xlsx";
import { FdoCustomAttribute, FdoDinero } from "@feedmepos/core/entity";
import { FdoMenuV4, F_ORDER_FROM } from "@feedmepos/menu/entity";
import type { GroupItem } from "@/manager/menu/group";
export interface ExportMenuDataRow {
    _id: string;
    code: string | undefined;
    name: string | undefined;
    variantKey: string | undefined;
    variantName: string | undefined;
    category: string | undefined;
    subCategories: string | undefined;
    orderFrom: string | undefined;
    perXUnit: number | string | undefined;
    unit: string | undefined;
    openPrice: boolean | string | undefined;
    price: number | string | undefined;
    priceTier: Record<string, FdoDinero> | undefined;
    trackingCost: number | string | undefined;
    minPrice: number | string | undefined;
    groupByParent: boolean | string | undefined;
    takeawayName: string | undefined;
    takeawayPrice: number | string | undefined;
    tag: Record<string, any>;
}
export interface ExportAddonGroupRow {
    id: string;
    name: string;
    min: number;
    max: number;
    stackable: string;
    itemId: string;
    itemCode: string;
    itemName: string;
    itemNameOverrider: string;
    combinationKey: string;
    combinationName: string;
    price: number;
    priceTier: Record<string, FdoDinero>;
    orderFrom: string;
    isDefault: string;
    index: number;
}
export interface TransformDataResult {
    rows: ExportMenuDataRow[];
    metaData: {
        priceTiers: string[];
    };
}
export interface GroupedItemVariant {
    combinationKey: string;
    name: string;
    code: string | null | undefined;
    takeawayUsed: string | null | undefined;
    orderFrom: F_ORDER_FROM | null | undefined;
    price: FdoDinero | null | undefined;
}
export interface GroupedItem {
    _id: string;
    code: string;
    name: string;
    variants: GroupedItemVariant[];
    category: string | null | undefined;
    subCategories: string[] | null | undefined;
    orderFrom: F_ORDER_FROM;
    perXUnit: number | null | undefined;
    unit: string | null | undefined;
    openPrice: boolean;
    price: FdoDinero;
    trackingCost: FdoDinero | null | undefined;
    minPrice: FdoDinero | null | undefined;
    groupByParent: boolean | null | undefined;
    takeawayId: string | null | undefined;
    customAttributes: Record<string, any> | null;
    priceTiers: Record<string, FdoDinero> | null;
}
export interface GroupedAddon {
    _id: string;
    name: string;
    min: number;
    max: number;
    stackable: boolean;
    itemId: string;
    itemName: string;
    itemCode: string;
    combinationKey: string;
    combinationName: string;
    price: number;
    orderFrom: F_ORDER_FROM;
    isDefault: boolean;
    priceTiers: Record<string, FdoDinero> | null;
    index: number;
}
export interface itemsLinkWithGroup {
    itemId: string;
    itemName: string;
    defaultCatalog: string;
}
export declare const ADDON = "ADDON";
export declare function mapVariant(menu: FdoMenuV4, variantGroupIds: string[]): {
    [key: string]: string;
};
export declare function generateHeaderRow(attributeSettings: FdoCustomAttribute[], priceTierKeys: string[], isCatalog?: boolean): string[];
export declare function generateAddonHeaderRow(priceTierKeys: string[], isCatalog?: boolean): string[];
export declare function toDinero(price: number): {
    currency: "ALL" | "AED" | "AFN" | "AMD" | "ANG" | "AOA" | "ARS" | "AUD" | "AWG" | "AZN" | "BAM" | "BBD" | "BDT" | "BGN" | "BHD" | "BIF" | "BMD" | "BND" | "BOB" | "BOV" | "BRL" | "BSD" | "BTN" | "BWP" | "BYN" | "BZD" | "CAD" | "CDF" | "CHE" | "CHF" | "CHW" | "CLF" | "CLP" | "CNY" | "COP" | "COU" | "CRC" | "CUC" | "CUP" | "CVE" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "ERN" | "ETB" | "EUR" | "FJD" | "FKP" | "GBP" | "GEL" | "GHS" | "GIP" | "GMD" | "GNF" | "GTQ" | "GYD" | "HKD" | "HNL" | "HRK" | "HTG" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KGS" | "KHR" | "KMF" | "KPW" | "KRW" | "KWD" | "KYD" | "KZT" | "LAK" | "LBP" | "LKR" | "LRD" | "LSL" | "LYD" | "MAD" | "MDL" | "MGA" | "MKD" | "MMK" | "MNT" | "MOP" | "MRU" | "MUR" | "MVR" | "MWK" | "MXN" | "MXV" | "MYR" | "MZN" | "NAD" | "NGN" | "NIO" | "NOK" | "NPR" | "NZD" | "OMR" | "PAB" | "PEN" | "PGK" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SBD" | "SCR" | "SDG" | "SEK" | "SGD" | "SHP" | "SLL" | "SOS" | "SRD" | "SSP" | "STN" | "SVC" | "SYP" | "SZL" | "THB" | "TJS" | "TMT" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "USD" | "USN" | "UYI" | "UYU" | "UYW" | "UZS" | "VES" | "VND" | "VUV" | "WST" | "XAF" | "XAG" | "XAU" | "XBA" | "XBB" | "XBC" | "XBD" | "XCD" | "XDR" | "XOF" | "XPD" | "XPF" | "XPT" | "XSU" | "XTS" | "XUA" | "XXX" | "YER" | "ZAR" | "ZMW" | "ZWL";
    amount: number;
    precision: number;
};
export declare function formatDinero(dinero?: FdoDinero | null): string;
export declare function compareDinero(dinero1: FdoDinero, dinero2: FdoDinero | null | undefined): boolean;
export declare function getUpdatedPrice(elementPrice: any, itemPrice: any, variantCombinationPrice?: any): any;
export declare function getUpdatedMinPrice(elementMinPrice: string, catalogItem: any): any;
export declare function extractExcelDataGeneric<T>(workbook: WorkBook): T[][];
export declare function extractExcelData(workbook: WorkBook): ExportMenuDataRow[][];
export declare function extractAddonExcelData(workbook: WorkBook): ExportAddonGroupRow[][];
export declare function extractItemsGroupExcelData(workbook: WorkBook): itemsLinkWithGroup[][];
export declare function transformValue<T>(v: T): NonNullable<T> | null;
export declare function generateId(key: string, length: number): string;
export declare function processGroupItem(newItem: GroupedAddon, index: number, originalItem?: GroupedAddon[] | null, combinationKey?: string | null, baseSelection?: string | null): GroupItem;
export declare function normalizeSheetName(name: string): string;
export declare function getPriceTierKeys(row: ExportMenuDataRow | ExportAddonGroupRow): Record<string, string>;
export declare function validateInputData(row: Record<string, any>, fileMap: Record<string, string>, isCatalog?: boolean, catalogName?: string): void;
export declare function validateAddonInputData(row: Record<string, any>, addonFile: Record<string, string>, catalogName?: string): void;
export declare function stripWorkbookFormatting(sheet: WorkSheet): void;
