import { ProductWithInventoryBase } from '../../base/product-with-inventory/product-with-inventory.base';
import { IJewelleryProductAttr } from '../../interfaces/product-jewellery-attr.interface';
import { ProductJewelleryModel } from '../../entities/product-jewellery.entity';
import { LoginUser } from '@tomei/sso';
import { IProductVariantCreate } from '../../interfaces/product-variant-create.interface';
import { ProductVariantType } from '../../enum/product-variant.enum';
interface IProductJewelleryInitParam {
    productId?: string;
    productInfo?: IJewelleryProductAttr;
}
export declare class ProductJewellery extends ProductWithInventoryBase {
    ObjectType: string;
    private _ProfileId;
    private _Surface;
    private _Uniqueness;
    private _HasCertificateYN;
    private static _ProductJewelleryRepository;
    get ProductId(): string;
    set ProductId(productId: string);
    get ProfileId(): string;
    private set ProfileId(value);
    get Surface(): string;
    set Surface(surface: string);
    get Uniqueness(): string;
    set Uniqueness(uniqueness: string);
    get HasCertificateYN(): string;
    set HasCertificateYN(hasCertificateYN: string);
    get UOM(): string;
    get TotalUnits(): number;
    get TotalUnitsAvailable(): number;
    get TotalUnitsInCurrentOrder(): number;
    get TotalUnitsSold(): number;
    get TotalUnitsReserved(): number;
    get TotalUnitsOnConsignment(): number;
    get TotalUnitsUnderMaintenance(): number;
    get TotalUnitsVoid(): number;
    get TotalUnitsInTransit(): number;
    get TotalUnitsBackOrdered(): number;
    get TotalUnitsPreOrdered(): number;
    get StockLowAlertLevel(): number;
    get StockReorderLevel(): number;
    get BufferStockLevel(): number;
    protected constructor(productJewelleryAttr: any);
    static init(options: IProductJewelleryInitParam): Promise<ProductJewellery>;
    create(loginUser: LoginUser, dbTransaction: any, profileId?: string): Promise<any>;
    static findAll(loginUser: LoginUser, dbTransaction?: any, searchOptions?: {
        page: any;
        rows: any;
        search: any;
    }): Promise<ProductJewelleryModel[] | {
        rows: ProductJewelleryModel[];
        count: number;
    }>;
    update(loginUser: LoginUser, productInfo?: IJewelleryProductAttr, dbTransaction?: any): Promise<any>;
    deactivate(loginUser: LoginUser, dbTransaction?: any): Promise<void>;
    verify(loginUser: LoginUser, dbTransaction?: any): Promise<void>;
    delete(loginUser: LoginUser, dbTransaction?: any): Promise<void>;
    activate(loginUser: LoginUser, dbTransaction?: any): Promise<void>;
    static findOne(options: any, dbTransaction?: any): Promise<ProductJewelleryModel>;
    addVariant(addVariantInfo: IProductVariantCreate, loginUser: LoginUser, dbTransaction?: any): Promise<{
        VariantId: string;
        ProductId: string;
        Name: string;
        Description: string;
        SKU: string;
        Size: string;
        Colour: string;
        Type: ProductVariantType;
        Level: number;
        ParentId: string;
        MinWeight: number;
        MaxWeight: number;
        MinWidth: number;
        MaxWidth: number;
        MinHeight: number;
        MaxHeight: number;
        MinLength: number;
        MaxLength: number;
        Status: import("../../enum/product-variant.enum").ProductVariantStatus;
        CreatedById: string;
        CreatedAt: Date;
        UpdatedById: string;
        UpdatedAt: Date;
        UpdatedSSYN: import("../../enum/yn.enum").YN;
        TotalUnitsAvailable: number;
        TotalUnitsInCurrentOrder: number;
        TotalUnitsSold: number;
        TotalUnitsReserved: number;
        TotalUnitsInTransit: number;
        TotalUnitsOnConsignment: number;
        TotalUnitsBackOrdered: number;
        TotalUnitsPreOrdered: number;
        StockLowAlertLevel: number;
        StockReorderLevel: number;
        BufferStockLevel: number;
    }>;
}
export {};
