import { UserRole } from '@prisma/client';
import { PrismaService } from '../../database/prisma.service';
export declare class DashboardService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    private assertCanAccessShop;
    private parseDateOnly;
    shopAnalytics(requester: {
        id: string;
        role: UserRole;
        shopId?: string | null;
    }, args: {
        from?: string;
        to?: string;
        shopId?: string;
    }): Promise<{
        shopId: string;
        range: {
            from: Date;
            to: Date;
        };
        prevRange: {
            from: Date;
            to: Date;
        };
        kpis: {
            revenue: {
                current: number;
                prev: number;
            };
            customers: {
                total: number;
                new: number;
                newPrev: number;
            };
            cashiPointsCredited: {
                current: number;
                prev: number;
            };
            cashiCoinsRewarded: {
                current: any;
                prev: any;
            };
            couponsRedeemed: {
                current: number;
                prev: number;
            };
        };
    }>;
    summary(): Promise<{
        shops: {
            total: number;
            approved: number;
            pending: number;
            rejected: number;
            active: number;
            inactive: number;
        };
        users: {
            total: number;
            active: number;
            inactive: number;
            customers: number;
            admins: number;
            subadmins: number;
            superadmins: number;
        };
        sales: {
            completedCount: number;
            amountTotal: number;
            discountTotal: number;
            loyaltyEarnedTotal: number;
            loyaltyRedeemedTotal: number;
        };
        coupons: {
            total: number;
            draft: number;
            active: number;
            expired: number;
            customerCouponsTotal: number;
            customerCouponsAssigned: number;
            customerCouponsRedeemed: number;
            customerCouponsExpired: number;
            customersWithCoupons: number;
            salesWithCoupon: number;
        };
    }>;
}
