import { ProductModel } from '../../entities/product.entity';
import { ProductRepository } from './product.repository';
import { IJewelleryProductAttr, IProductAttrBase } from '../../interfaces';
import { LoginUser } from '@tomei/sso';
import { ProductBrandModel } from '../../entities/product-brand.entity';
import { ObjectBase } from '@tomei/general';
export declare abstract class ProductBase extends ObjectBase {
    ObjectId: string;
    ObjectName: string;
    TableName: string;
    ObjectType: string;
    private _ProductId;
    private _Name;
    private _SKU;
    private _PreviousSKU;
    private _Description;
    private _Type;
    private _Remark;
    private _IsTaxableYN;
    private _TaxCode;
    private _IsPriceInclusiveTaxYN;
    private _Status;
    private _VerifiedYN;
    private _VerifiedById;
    private _VerifiedAt;
    private _VariantLevels;
    private _VariantTypeLevel1;
    private _VariantTypeLevel2;
    private _VariantTypeLevel3;
    private _CreatedById;
    private _CreatedAt;
    private _UpdatedById;
    private _UpdatedAt;
    private _UpdatedSSYN;
    protected static _Repository: ProductRepository;
    constructor(product?: IProductAttrBase);
    get ProductId(): string;
    set ProductId(value: string);
    get Name(): string;
    set Name(value: string);
    get Description(): string;
    set Description(value: string);
    get SKU(): string;
    set SKU(value: string);
    get PreviousSKU(): string;
    set PreviousSKU(value: string);
    get Type(): string;
    set Type(value: string);
    get Remark(): string;
    set Remark(value: string);
    get IsTaxableYN(): string;
    set IsTaxableYN(value: string);
    get TaxCode(): string;
    set TaxCode(value: string);
    get IsPriceInclusiveTaxYN(): string;
    set IsPriceInclusiveTaxYN(value: string);
    get Status(): string;
    set Status(value: string);
    get VerifiedYN(): string;
    set VerifiedYN(value: string);
    get VerifiedById(): string;
    set VerifiedById(value: string);
    get VerifiedAt(): Date;
    set VerifiedAt(value: Date);
    get VariantLevels(): number;
    set VariantLevels(value: number);
    get VariantTypeLevel1(): string;
    set VariantTypeLevel1(value: string);
    get VariantTypeLevel2(): string;
    set VariantTypeLevel2(value: string);
    get VariantTypeLevel3(): string;
    set VariantTypeLevel3(value: string);
    get CreatedById(): string;
    set CreatedById(value: string);
    get CreatedAt(): Date;
    set CreatedAt(value: Date);
    get UpdatedById(): string;
    set UpdatedById(value: string);
    get UpdatedAt(): Date;
    set UpdatedAt(value: Date);
    get UpdatedSSYN(): string;
    set UpdatedSSYN(value: string);
    create(loginUser: LoginUser, dbTransaction?: any): Promise<ProductModel | any>;
    static findOne(searchOptions: any, dbTransaction?: any): Promise<any>;
    static findAll(loginUser: LoginUser): Promise<any>;
    findAllWithPagination(searchOptions: any, dbTransaction?: any): Promise<{
        rows: ProductModel[];
        count: number;
    }>;
    update(loginUser: LoginUser, productInfo: IJewelleryProductAttr, dbTransaction?: any): Promise<ProductModel | any>;
    deactivate(loginUser: LoginUser, dbTransaction?: any): Promise<void>;
    verify(loginUser: LoginUser, dbTransaction?: any): Promise<void>;
    activate(loginUser: LoginUser, dbTransaction?: any): Promise<void>;
    discontinue(loginUser: LoginUser, dbTransaction?: any): Promise<void>;
    delete(loginUser: LoginUser, dbTransaction?: any): Promise<void>;
    addTag(name: string, loginUser: LoginUser, dbTransaction?: any): Promise<void>;
    getBrand(loginUser: LoginUser, dbTransaction?: any): Promise<{
        rows: ProductBrandModel[];
        count: number;
    }>;
    assignBrand(brand: string, loginUser: LoginUser, dbTransaction?: any): Promise<any>;
    unassignBrand(brand: string, loginUser: LoginUser, dbTransaction?: any): Promise<any>;
    getVariants(loginUser: LoginUser, dbTransaction?: any, page?: number, row?: number): Promise<{
        count: any;
        rows: any;
    }>;
}
