import { UserRole } from '@prisma/client';
import { PrismaService } from '../../database/prisma.service';
import { UpsertLoyaltySettingsDto } from './dto/upsert-loyalty-settings.dto';
type RequestUser = {
    id: string;
    role: UserRole;
    shopId: string | null;
};
export declare class LoyaltySettingsService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    private assertCanAccessShop;
    private defaultsForShop;
    getForCurrentShop(user: RequestUser): Promise<{
        shopId: string;
        minOrderFirstPoint: number;
        minOrderApplyPoint: number;
        validityMonths: number;
        maxEarnablePoints: number;
        maxRedeemPercent: number;
        earnType: "INCREMENTAL";
        percentageRate: null;
        stepAmount: number;
        pointsPerStep: number;
        welcomeBonus: number;
        referralBonus: number;
    } | {
        id: string;
        shopId: string;
        createdAt: Date;
        updatedAt: Date;
        percentageRate: number | null;
        stepAmount: number | null;
        pointsPerStep: number | null;
        minOrderFirstPoint: number;
        minOrderApplyPoint: number;
        validityMonths: number;
        maxEarnablePoints: number;
        maxRedeemPercent: number;
        earnType: import("@prisma/client").$Enums.LoyaltyEarnType;
        welcomeBonus: number;
        referralBonus: number;
    }>;
    getByShopId(user: RequestUser, shopId: string): Promise<{
        shopId: string;
        minOrderFirstPoint: number;
        minOrderApplyPoint: number;
        validityMonths: number;
        maxEarnablePoints: number;
        maxRedeemPercent: number;
        earnType: "INCREMENTAL";
        percentageRate: null;
        stepAmount: number;
        pointsPerStep: number;
        welcomeBonus: number;
        referralBonus: number;
    } | {
        id: string;
        shopId: string;
        createdAt: Date;
        updatedAt: Date;
        percentageRate: number | null;
        stepAmount: number | null;
        pointsPerStep: number | null;
        minOrderFirstPoint: number;
        minOrderApplyPoint: number;
        validityMonths: number;
        maxEarnablePoints: number;
        maxRedeemPercent: number;
        earnType: import("@prisma/client").$Enums.LoyaltyEarnType;
        welcomeBonus: number;
        referralBonus: number;
    }>;
    upsertForCurrentShop(user: RequestUser, dto: UpsertLoyaltySettingsDto): Promise<{
        id: string;
        shopId: string;
        createdAt: Date;
        updatedAt: Date;
        percentageRate: number | null;
        stepAmount: number | null;
        pointsPerStep: number | null;
        minOrderFirstPoint: number;
        minOrderApplyPoint: number;
        validityMonths: number;
        maxEarnablePoints: number;
        maxRedeemPercent: number;
        earnType: import("@prisma/client").$Enums.LoyaltyEarnType;
        welcomeBonus: number;
        referralBonus: number;
    }>;
    upsertByShopId(user: RequestUser, shopId: string, dto: UpsertLoyaltySettingsDto): Promise<{
        id: string;
        shopId: string;
        createdAt: Date;
        updatedAt: Date;
        percentageRate: number | null;
        stepAmount: number | null;
        pointsPerStep: number | null;
        minOrderFirstPoint: number;
        minOrderApplyPoint: number;
        validityMonths: number;
        maxEarnablePoints: number;
        maxRedeemPercent: number;
        earnType: import("@prisma/client").$Enums.LoyaltyEarnType;
        welcomeBonus: number;
        referralBonus: number;
    }>;
}
export {};
