import IDatabase from "../../interfaces/database";
import IModel from "../../interfaces/model";
import type { TProduct } from "../../types/product";
import ProductAttributeModel from "./product-attribute";
import ProductDescriptionModel from "./product-description";
import ProductImageModel from "./product-image";
import ProductOptionModel from "./product-option";
import ProductSpecialModel from "./product-special";
export default class ProductModel implements IModel<TProduct> {
    private database;
    constructor(database: IDatabase);
    private table;
    description: ProductDescriptionModel;
    option: ProductOptionModel;
    attribute: ProductAttributeModel;
    special: ProductSpecialModel;
    image: ProductImageModel;
    select(criteria: Partial<TProduct>): Promise<any[]>;
    insert(data: Partial<TProduct>): Promise<import("../../types").TResponseHeaders>;
    update(criteria: Partial<TProduct>, data: Partial<TProduct>): Promise<import("../../types").TResponseHeaders>;
    delete(criteria: Partial<TProduct>): Promise<import("../../types").TResponseHeaders>;
    toCategory(productId: number, categoryId: number, mainCategory?: number): Promise<import("../../types").TResponseHeaders>;
    toStore(productId: number, storeId: number): Promise<import("../../types").TResponseHeaders>;
}
