import { PrismaService } from '../../prisma/prisma.service';
import { CreateProductDto } from './dto/create-product.dto';
import { UpdateProductDto } from './dto/update-product.dto';
export declare class ProductsService {
    private prisma;
    constructor(prisma: PrismaService);
    findAll(activeOnly?: boolean): Promise<({
        _count: {
            sales: number;
        };
    } & {
        name: string;
        description: string | null;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        isActive: boolean;
        slug: string;
        indication: string;
        argumentKey: string | null;
        whyItWorks: string | null;
        imageUrl: string | null;
        sortOrder: number;
        unitSaleRule: number | null;
        unitSaleRuleLabel: string | null;
        salePrice: number;
    })[]>;
    findActive(): Promise<{
        [x: string]: {
            id: string;
            createdAt: Date;
            vendorId: string;
            productId: string | null;
            productName: string;
            quantity: number;
            unitPrice: number;
            saleDate: Date;
            periodId: string | null;
        }[] | ({
            id: string;
            createdAt: Date;
            vendorId: string;
            productId: string | null;
            productName: string;
            quantity: number;
            unitPrice: number;
            saleDate: Date;
            periodId: string | null;
        } | {
            id: string;
            createdAt: Date;
            vendorId: string;
            productId: string | null;
            productName: string;
            quantity: number;
            unitPrice: number;
            saleDate: Date;
            periodId: string | null;
        })[];
        [x: number]: never;
        [x: symbol]: never;
    }[]>;
    findOne(id: string): Promise<{
        _count: {
            sales: number;
        };
    } & {
        name: string;
        description: string | null;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        isActive: boolean;
        slug: string;
        indication: string;
        argumentKey: string | null;
        whyItWorks: string | null;
        imageUrl: string | null;
        sortOrder: number;
        unitSaleRule: number | null;
        unitSaleRuleLabel: string | null;
        salePrice: number;
    }>;
    findByNameOrSlug(nameOrSlug: string): Promise<{
        name: string;
        description: string | null;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        isActive: boolean;
        slug: string;
        indication: string;
        argumentKey: string | null;
        whyItWorks: string | null;
        imageUrl: string | null;
        sortOrder: number;
        unitSaleRule: number | null;
        unitSaleRuleLabel: string | null;
        salePrice: number;
    }>;
    create(dto: CreateProductDto): Promise<{
        name: string;
        description: string | null;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        isActive: boolean;
        slug: string;
        indication: string;
        argumentKey: string | null;
        whyItWorks: string | null;
        imageUrl: string | null;
        sortOrder: number;
        unitSaleRule: number | null;
        unitSaleRuleLabel: string | null;
        salePrice: number;
    }>;
    update(id: string, dto: UpdateProductDto): Promise<{
        name: string;
        description: string | null;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        isActive: boolean;
        slug: string;
        indication: string;
        argumentKey: string | null;
        whyItWorks: string | null;
        imageUrl: string | null;
        sortOrder: number;
        unitSaleRule: number | null;
        unitSaleRuleLabel: string | null;
        salePrice: number;
    }>;
    remove(id: string): Promise<{
        name: string;
        description: string | null;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        isActive: boolean;
        slug: string;
        indication: string;
        argumentKey: string | null;
        whyItWorks: string | null;
        imageUrl: string | null;
        sortOrder: number;
        unitSaleRule: number | null;
        unitSaleRuleLabel: string | null;
        salePrice: number;
    }>;
    reorder(items: {
        id: string;
        sortOrder: number;
    }[]): Promise<({
        _count: {
            sales: number;
        };
    } & {
        name: string;
        description: string | null;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        isActive: boolean;
        slug: string;
        indication: string;
        argumentKey: string | null;
        whyItWorks: string | null;
        imageUrl: string | null;
        sortOrder: number;
        unitSaleRule: number | null;
        unitSaleRuleLabel: string | null;
        salePrice: number;
    })[]>;
    getProductStats(): Promise<{
        id: string;
        name: string;
        indication: string;
        isActive: boolean;
        totalTransactions: number;
        totalQuantitySold: number;
    }[]>;
}
