import { EventSender } from "../event";
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;
    quantity?: number;
    measurement: {
        unit: string;
        quantity: number;
    };
};
export declare abstract class Item extends EventSender {
    readonly id: number | string;
    readonly warehouseId: number;
    readonly type: ItemType;
    readonly name: string;
    protected _quantity?: number;
    protected _stock: number;
    readonly image: string;
    readonly packagingType: string;
    readonly minQuantity: number;
    readonly multipleQuantity: number;
    readonly rate: number;
    private isBackend;
    private isOffline;
    constructor(type: ItemType, { stock, multipleQuantity, name, image, id, warehouseId, packagingType, minQuantity, measurement }: ItemOptions, rate: number, isBackend?: boolean, isOffline?: boolean);
    get stock(): number;
    set stock(stock: number);
    abstract clone(): Item;
    set quantity(quantity: number | undefined);
    get quantity(): number | undefined;
    /** `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 | null;
    abstract get subtotal(): number | null;
    abstract get chiperPrice(): number;
    abstract get price(): number;
    abstract get totalDollars(): number | null;
    abstract get regularPriceDolar(): number;
    toJSON(): {
        id: string | number;
        warehouseId: number;
        type: ItemType;
        name: string;
        stock: number;
        quantity: number | undefined;
        image: string;
        medium: string;
        packagingType: string;
        minQuantity: number;
        multipleQuantity: number;
        total: number | null;
        subtotal: number | null;
        maxQuantity: number | undefined;
        maximumQuantity: number | undefined;
        regularPrice: number;
        discountedPrice: number | undefined;
        totalDollars: number | null;
        regularPriceDolar: number;
    };
}
