export declare enum ItemType { PRODUCT = "PRODUCT", COMBO = "COMBO" } export type ItemOptions = { id: number | string; warehouseId: number; name: string; stock: number; image: string; packagingType: string; minQuantity?: number; multipleQuantity?: number; }; export declare abstract class Item { readonly id: number | string; readonly warehouseId: number; readonly type: ItemType; readonly name: string; protected _quantity: number; readonly _stock: number; readonly image: string; readonly packagingType: string; readonly minQuantity: number; readonly multipleQuantity: number; constructor(type: ItemType, { stock, multipleQuantity, name, image, id, warehouseId, packagingType, minQuantity, }: ItemOptions); get stock(): number; abstract clone(): Item; set quantity(quantity: number); get quantity(): number; /** `discount` is the difference between `regularPrice` and `discountedPrice` in %*/ get discount(): number; abstract get maxQuantity(): number | undefined; abstract get regularPrice(): number; abstract get discountedPrice(): number | undefined; abstract get total(): number; abstract get subtotal(): number; toJSON(): { id: string | number; warehouseId: number; type: ItemType; name: string; stock: number; quantity: number; image: string; medium: string; packagingType: string; minQuantity: number; multipleQuantity: number; total: number; subtotal: number; maxQuantity: number | undefined; maximumQuantity: number | undefined; regularPrice: number; discountedPrice: number | undefined; }; }