import { IProductVariantWithInventoryAttr } from '../../interfaces/product-variant-with-inventory-attr.interface';
import { ProductVariant } from '../variant-product/variant-product';
import { YN } from '../../enum/yn.enum';
import { ProductVariantStatus, ProductVariantType } from '../../enum/product-variant.enum';
import { LoginUser } from '@tomei/sso';
import { IProductVariantWithInventoryUpdate } from '../../interfaces/product-variant-with-inventory-update.interface';
export declare class ProductVariantWithInventory extends ProductVariant {
    ObjectType: string;
    protected _TotalUnitsAvailable: number;
    protected _TotalUnitsInCurrentOrder: number;
    protected _TotalUnitsSold: number;
    protected _TotalUnitsReserved: number;
    protected _TotalUnitsInTransit: number;
    protected _TotalUnitsOnConsignment: number;
    protected _TotalUnitsBackOrdered: number;
    protected _TotalUnitsPreOrdered: number;
    StockLowAlertLevel: number;
    StockReorderLevel: number;
    BufferStockLevel: number;
    private static _Repository;
    get TotalUnitsAvailable(): number;
    get TotalUnitsInCurrentOrder(): number;
    get TotalUnitsSold(): number;
    get TotalUnitsReserved(): number;
    get TotalUnitsInTransit(): number;
    get TotalUnitsOnConsignment(): number;
    get TotalUnitsBackOrdered(): number;
    get TotalUnitsPreOrdered(): number;
    get CreatedAt(): Date;
    get UpdatedAt(): Date;
    get CreatedById(): string;
    get UpdatedById(): string;
    get UpdatedSSYN(): YN;
    get SKU(): string;
    get Size(): string;
    get Colour(): string;
    get MinWeight(): number;
    get MaxWeight(): number;
    get MinWidth(): number;
    get MaxWidth(): number;
    get MinHeight(): number;
    get MaxHeight(): number;
    get MinLength(): number;
    get MaxLength(): number;
    get ParentId(): string | null;
    get Status(): ProductVariantStatus;
    get VariantId(): string;
    set VariantId(variantId: string);
    get ProductId(): string;
    set ProductId(productId: string);
    get Name(): string;
    set Name(name: string);
    get Description(): string;
    set Description(description: string);
    get Type(): ProductVariantType;
    set Type(type: ProductVariantType);
    get Level(): number;
    set Level(level: number);
    setSKU(SKU: string): Promise<void>;
    setSize(size: string): Promise<void>;
    setColour(colour: string): Promise<void>;
    protected constructor(variant?: IProductVariantWithInventoryAttr);
    static init(dbTransaction?: any, variantId?: string): Promise<ProductVariantWithInventory>;
    create(loginUser: LoginUser, dbTransaction: any): Promise<this>;
    update(payload: IProductVariantWithInventoryUpdate, loginUser: LoginUser, dbTransaction?: any): Promise<this>;
    delete(loginUser: LoginUser, dbTransaction?: any): Promise<{
        MessageCode: string;
        Message: string;
    }>;
}
