import { PrismaService } from '../../prisma/prisma.service';
import { CommissionsService } from '../commissions/commissions.service';
import { PeriodsService } from '../periods/periods.service';
import { ProductsService } from '../products/products.service';
import { NotificationsService } from '../notifications/notifications.module';
export declare class SalesService {
    private prisma;
    private commissionsService;
    private periodsService;
    private productsService;
    private notificationsService;
    constructor(prisma: PrismaService, commissionsService: CommissionsService, periodsService: PeriodsService, productsService: ProductsService, notificationsService: NotificationsService);
    addSale(vendorId: string, productIdentifier: string, quantity: number): Promise<{
        sale: {
            product: {
                name: string;
                indication: string;
                imageUrl: string;
            };
        } & {
            id: string;
            createdAt: Date;
            vendorId: string;
            productId: string | null;
            productName: string;
            quantity: number;
            unitPrice: number;
            saleDate: Date;
            periodId: string | null;
        };
        period: {
            id: string;
            totalSales: number;
            effectiveUnits: number;
            commission: number;
            commissionPerProduct: number;
            tier: string;
        };
        monthlyBonus: {
            quantity: number;
            bonus: number;
            tier: string;
        };
        nextTier: {
            nextTier: number | null;
            remaining: number | null;
            nextCommission: number | null;
            message: string;
        };
    }>;
    getVendorSalesHistory(vendorId: string, limit?: number): Promise<({
        product: {
            name: string;
            indication: string;
            imageUrl: string;
        };
        period: {
            status: string;
            periodType: string;
            startDate: Date;
            endDate: Date;
            totalCommission: number;
        };
    } & {
        id: string;
        createdAt: Date;
        vendorId: string;
        productId: string | null;
        productName: string;
        quantity: number;
        unitPrice: number;
        saleDate: Date;
        periodId: string | null;
    })[]>;
    getAdminSalesHistory(query?: {
        vendorId?: string;
        pharmacyId?: string;
        productName?: string;
        productId?: string;
        from?: string;
        to?: string;
    }): Promise<({
        vendor: {
            pharmacy: {
                name: string;
            };
            name: string;
            phone: string;
            id: string;
        };
        product: {
            name: string;
            indication: string;
        };
        period: {
            status: string;
            periodType: string;
            startDate: Date;
            endDate: Date;
        };
    } & {
        id: string;
        createdAt: Date;
        vendorId: string;
        productId: string | null;
        productName: string;
        quantity: number;
        unitPrice: number;
        saleDate: Date;
        periodId: string | null;
    })[]>;
    getAvailableProducts(): 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;
    }[]>;
}
