import { TDeleteManyInput, TFilteredProductList, TPagedList, TPagedParams, TProduct, TProductFilter, TProductInput, TProductRating, TProductReview } from '@cromwell/core'; import { SelectQueryBuilder } from 'typeorm'; import { AttributeToProduct } from '../models/entities/attribute-product.entity'; import { ProductReview } from '../models/entities/product-review.entity'; import { ProductVariant } from '../models/entities/product-variant.entity'; import { Product } from '../models/entities/product.entity'; import { AttributeInstance } from '../models/objects/attribute-instance.object'; import { BaseRepository } from './base.repository'; declare type TGetProductOptions = { withRating?: boolean; withAttributes?: boolean; withCategories?: boolean; withVariants?: boolean; }; export declare class ProductRepository extends BaseRepository { constructor(); applyGetProductRating(qb: SelectQueryBuilder): void; applyAndGetPagedProducts(qb: SelectQueryBuilder, params?: TPagedParams): Promise>; getProducts(params?: TPagedParams): Promise>; getProductById(id: number, options?: TGetProductOptions): Promise; getProductBySlug(slug: string, options?: TGetProductOptions): Promise; private applyGetProductOptions; handleProductInput(product: Product, input: TProductInput, action: 'update' | 'create'): Promise; createProduct(createProduct: TProductInput, id?: number | null): Promise; updateProduct(id: number, updateProduct: TProductInput): Promise; deleteProduct(id: number): Promise; getProductsFromCategory(categoryId: number, params?: TPagedParams): Promise>; getReviewsOfProduct(productId: number, params?: TPagedParams): Promise>; getProductRating(productId: number): Promise; applyProductFilter(qb: SelectQueryBuilder, filterParams?: TProductFilter): void; getFilteredProducts(pagedParams?: TPagedParams, filterParams?: TProductFilter): Promise; deleteManyFilteredProducts(input: TDeleteManyInput, filterParams?: TProductFilter): Promise; attributeRecordsToProductAttributeInstances(records?: AttributeToProduct[] | null): AttributeInstance[] | undefined; getProductAttributes(productId: number): Promise; getProductVariantsOfProduct(productId: number): Promise; } export {}; //# sourceMappingURL=product.repository.d.ts.map