import { UserRole } from '@prisma/client';
import { RegisterSaleDto } from './dto/register-sale.dto';
import { SalesService } from './sales.service';
type RequestWithUser = {
    user: {
        id: string;
        role: UserRole;
        shopId: string | null;
    };
};
export declare class SalesController {
    private readonly sales;
    constructor(sales: SalesService);
    list(req: RequestWithUser, shopId?: string): Promise<any[]>;
    listPaged(req: RequestWithUser, page?: string, limit?: string, q?: string, customerId?: string, status?: string, from?: string, to?: string, minAmount?: string, maxAmount?: string, shopId?: string): Promise<{
        page: number;
        limit: number;
        total: number;
        items: any[];
    }>;
    register(req: RequestWithUser, dto: RegisterSaleDto): Promise<{
        customer: any;
        availableCoupons: {
            id: string;
            shopId: string;
            title: string;
            imageUrl: string | null;
            expiresAt: Date | null;
            valueType: import("@prisma/client").$Enums.CouponValueType;
            valueFixed: number | null;
            valuePercent: number | null;
            minOrderValue: number | null;
        }[];
        cashiCoins: {
            earned: any;
        };
        cashiPoints: {
            available: number;
            redeemed: number;
            earned: any;
        };
        distributedCoupons: {
            couponId: string;
            shopId: string;
            couponTitle: string;
            shopName: string;
        }[];
        id: string;
        shopId: string;
        createdAt: Date;
        amount: number;
        status: import("@prisma/client").$Enums.SaleStatus;
        originalAmount: number | null;
        discountAmount: number;
        appliedCouponId: string | null;
        loyaltyPointsRedeemed: number;
        loyaltyPointsEarned: number;
        cashiCoinsEarned: number;
        notes: string | null;
    }>;
}
export {};
