import { PrismaService } from '../../prisma/prisma.service';
import { SalesService } from '../sales/sales.service';
import { CommissionsService } from '../commissions/commissions.service';
import { PeriodsService } from '../periods/periods.service';
import { PaymentsService } from '../payments/payments.service';
declare class AddSaleDto {
    productName: string;
    quantity: number;
}
declare class UpdateProfileDto {
    name?: string;
    email?: string;
    phone?: string;
    ccp?: string;
    ccpKey?: string;
    rip?: string;
}
export declare class ClientAuthController {
    private prisma;
    constructor(prisma: PrismaService);
    verify(cardNumber: string): Promise<{
        authenticated: boolean;
        message: string;
        card_number?: undefined;
        role?: undefined;
        profile?: undefined;
    } | {
        authenticated: boolean;
        card_number: string;
        role: string;
        profile: {
            id: string;
            name: string;
            phone: string;
            email: string;
            pharmacyName: string;
            registrationBonus: boolean;
            region?: undefined;
            sector?: undefined;
        };
        message?: undefined;
    } | {
        authenticated: boolean;
        card_number: string;
        role: string;
        profile: {
            id: string;
            name: string;
            phone: string;
            email: string;
            region: import("@prisma/client/runtime/client").JsonValue;
            sector: string;
            pharmacyName?: undefined;
            registrationBonus?: undefined;
        };
        message?: undefined;
    }>;
}
export declare class ClientProfileController {
    private prisma;
    constructor(prisma: PrismaService);
    getProfile(req: any): {
        id: any;
        name: any;
        email: any;
        phone: any;
        ccp: any;
        ccpKey: any;
        rip: any;
        pharmacy: any;
        status: any;
        actionDate: any;
        registrationBonus: number;
        uniqueCardNumber: any;
    };
    updateProfile(req: any, dto: UpdateProfileDto): Promise<{
        pharmacy: {
            name: string;
        };
    } & {
        name: string | null;
        phone: string | null;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        uniqueCardNumber: string;
        email: string | null;
        ccp: string | null;
        ccpKey: string | null;
        rip: string | null;
        pharmacyId: string | null;
        status: string;
        actionDate: Date;
        registrationBonus: boolean;
    }>;
}
export declare class ClientSalesController {
    private salesService;
    private commissionsService;
    private prisma;
    constructor(salesService: SalesService, commissionsService: CommissionsService, prisma: PrismaService);
    addSale(req: any, dto: AddSaleDto): 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;
        };
    }>;
    getHistory(req: any, 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;
    })[]>;
    getProducts(): 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;
    }[]>;
    deleteSale(saleId: string, req: any): Promise<{
        success: boolean;
    }>;
}
export declare class ClientDashboardController {
    private prisma;
    private commissionsService;
    private periodsService;
    private paymentsService;
    constructor(prisma: PrismaService, commissionsService: CommissionsService, periodsService: PeriodsService, paymentsService: PaymentsService);
    getDashboard(req: any): Promise<{
        vendor: {
            id: any;
            name: any;
            registrationBonus: number;
        };
        currentPeriod: {
            currentQuantity: number;
            nextTier: {
                nextTier: number | null;
                remaining: number | null;
                nextCommission: number | null;
                message: string;
            };
            daysRemaining: number;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            status: string;
            vendorId: string;
            periodType: string;
            startDate: Date;
            endDate: Date;
            totalSales: number;
            totalCommission: number;
            paidAmount: number;
            paidAt: Date | null;
        };
        monthlyPeriod: {
            daysRemaining: number;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            status: string;
            vendorId: string;
            periodType: string;
            startDate: Date;
            endDate: Date;
            totalSales: number;
            totalCommission: number;
            paidAmount: number;
            paidAt: Date | null;
        };
        totals: {
            allTimeSalesQuantity: number;
            allTimeSalesCount: number;
            totalCommissionEarned: number;
            paidCommission: number;
            pendingCommission: number;
        };
        recentPayments: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            status: string;
            vendorId: string;
            periodType: string;
            startDate: Date;
            endDate: Date;
            totalSales: number;
            totalCommission: number;
            paidAmount: number;
            paidAt: Date | null;
        }[];
    }>;
}
export declare class ClientNotificationsController {
    private prisma;
    constructor(prisma: PrismaService);
    getNotifications(req: any): Promise<({
        notification: {
            type: string;
            title: string;
            id: string;
            createdAt: Date;
            message: string;
            targetType: string;
        };
    } & {
        id: string;
        notificationId: string;
        isRead: boolean;
        readAt: Date | null;
        delegueId: string;
    })[] | ({
        notification: {
            type: string;
            title: string;
            id: string;
            createdAt: Date;
            message: string;
            targetType: string;
        };
    } & {
        id: string;
        vendorId: string;
        notificationId: string;
        isRead: boolean;
        readAt: Date | null;
    })[]>;
    getUnreadCount(req: any): Promise<{
        count: number;
    }>;
    markRead(req: any, id: string): Promise<{
        success: boolean;
    }>;
    markAllRead(req: any): Promise<{
        success: boolean;
    }>;
}
export declare class ClientDelegueController {
    private prisma;
    constructor(prisma: PrismaService);
    getDelegueStats(req: any): Promise<{
        delegue: {
            id: any;
            name: any;
            region: any;
            sector: any;
        };
        summary: {
            activeVendors: number;
            pharmacies: number;
            monthlySales: number;
            totalCommissions: number;
        };
        topVendors: {
            id: string;
            name: string;
            phone: string;
            status: string;
            pharmacy: {
                name: string;
                id: string;
                region: string;
            };
            currentPeriodQty: number;
            pendingCommission: number;
        }[];
        vendors: {
            id: string;
            name: string;
            phone: string;
            status: string;
            pharmacy: {
                name: string;
                id: string;
                region: string;
            };
            currentPeriodQty: number;
            pendingCommission: number;
        }[];
        pharmacyStats: {
            vendorCount: number;
            name: string;
            id: string;
            region: string;
        }[];
    }>;
}
export declare class ClientModule {
}
export {};
