import { ProductsService } from './products.service';
import { CreateProductDto } from './dto/create-product.dto';
import { UpdateProductDto } from './dto/update-product.dto';
import { CacheInvalidationService } from '../cache-utils/cache-invalidation.service';
export declare class ProductsController {
    private readonly productsService;
    private readonly cacheInvalidation;
    constructor(productsService: ProductsService, cacheInvalidation: CacheInvalidationService);
    create(createProductDto: CreateProductDto): Promise<{
        category: {
            name: string;
            id: string;
            image: string | null;
            createdAt: Date;
            updatedAt: Date;
            slug: string;
            description: string | null;
            parentId: string | null;
            isActive: boolean;
        };
        brand: {
            name: string;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            slug: string;
            description: string | null;
            isActive: boolean;
            logo: string | null;
        };
        tags: {
            name: string;
            id: string;
        }[];
    } & {
        name: string;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        slug: string;
        description: string | null;
        isActive: boolean;
        shortDescription: string | null;
        type: import(".prisma/client").$Enums.ProductType;
        categoryId: string | null;
        brandId: string | null;
    }>;
    findAll(): Promise<{
        variants: {
            stock: number;
            id: string;
            image: string | null;
            createdAt: Date;
            updatedAt: Date;
            isActive: boolean;
            productId: string;
            sku: string;
            barcode: string | null;
            price: import("@prisma/client/runtime/library").Decimal;
            salePrice: import("@prisma/client/runtime/library").Decimal | null;
            weight: import("@prisma/client/runtime/library").Decimal | null;
            attributes: import("@prisma/client/runtime/library").JsonValue | null;
        }[];
        category: {
            name: string;
            id: string;
            image: string | null;
            createdAt: Date;
            updatedAt: Date;
            slug: string;
            description: string | null;
            parentId: string | null;
            isActive: boolean;
        };
        brand: {
            name: string;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            slug: string;
            description: string | null;
            isActive: boolean;
            logo: string | null;
        };
        tags: {
            name: string;
            id: string;
        }[];
        name: string;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        slug: string;
        description: string | null;
        isActive: boolean;
        shortDescription: string | null;
        type: import(".prisma/client").$Enums.ProductType;
        categoryId: string | null;
        brandId: string | null;
    }[]>;
    findOne(id: string): Promise<{
        variants: {
            stock: number;
            id: string;
            image: string | null;
            createdAt: Date;
            updatedAt: Date;
            isActive: boolean;
            productId: string;
            sku: string;
            barcode: string | null;
            price: import("@prisma/client/runtime/library").Decimal;
            salePrice: import("@prisma/client/runtime/library").Decimal | null;
            weight: import("@prisma/client/runtime/library").Decimal | null;
            attributes: import("@prisma/client/runtime/library").JsonValue | null;
        }[];
        category: {
            name: string;
            id: string;
            image: string | null;
            createdAt: Date;
            updatedAt: Date;
            slug: string;
            description: string | null;
            parentId: string | null;
            isActive: boolean;
        };
        brand: {
            name: string;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            slug: string;
            description: string | null;
            isActive: boolean;
            logo: string | null;
        };
        tags: {
            name: string;
            id: string;
        }[];
        name: string;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        slug: string;
        description: string | null;
        isActive: boolean;
        shortDescription: string | null;
        type: import(".prisma/client").$Enums.ProductType;
        categoryId: string | null;
        brandId: string | null;
    }>;
    update(id: string, updateProductDto: UpdateProductDto): Promise<{
        category: {
            name: string;
            id: string;
            image: string | null;
            createdAt: Date;
            updatedAt: Date;
            slug: string;
            description: string | null;
            parentId: string | null;
            isActive: boolean;
        };
        brand: {
            name: string;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            slug: string;
            description: string | null;
            isActive: boolean;
            logo: string | null;
        };
        tags: {
            name: string;
            id: string;
        }[];
    } & {
        name: string;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        slug: string;
        description: string | null;
        isActive: boolean;
        shortDescription: string | null;
        type: import(".prisma/client").$Enums.ProductType;
        categoryId: string | null;
        brandId: string | null;
    }>;
    remove(id: string): Promise<{
        name: string;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        slug: string;
        description: string | null;
        isActive: boolean;
        shortDescription: string | null;
        type: import(".prisma/client").$Enums.ProductType;
        categoryId: string | null;
        brandId: string | null;
    }>;
}
