import { UserRole } from '@prisma/client';
import { PrismaService } from '../../database/prisma.service';
import { CreateLoyaltyProgramDto } from './dto/create-loyalty-program.dto';
import { UpdateLoyaltyProgramDto } from './dto/update-loyalty-program.dto';
type RequestUser = {
    id: string;
    role: UserRole;
    shopId: string | null;
};
export declare class LoyaltyProgramsService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    private assertCanAccessShopPrograms;
    list(user: RequestUser, shopIdQuery?: string): Promise<{
        id: string;
        name: string;
        isActive: boolean;
        shopId: string;
        createdAt: Date;
        updatedAt: Date;
        type: import("@prisma/client").$Enums.LoyaltyProgramType;
        percentageRate: number | null;
        stepAmount: number | null;
        pointsPerStep: number | null;
    }[]>;
    create(user: RequestUser, dto: CreateLoyaltyProgramDto): Promise<{
        id: string;
        name: string;
        isActive: boolean;
        shopId: string;
        createdAt: Date;
        updatedAt: Date;
        type: import("@prisma/client").$Enums.LoyaltyProgramType;
        percentageRate: number | null;
        stepAmount: number | null;
        pointsPerStep: number | null;
    }>;
    update(user: RequestUser, id: string, dto: UpdateLoyaltyProgramDto): Promise<{
        id: string;
        name: string;
        isActive: boolean;
        shopId: string;
        createdAt: Date;
        updatedAt: Date;
        type: import("@prisma/client").$Enums.LoyaltyProgramType;
        percentageRate: number | null;
        stepAmount: number | null;
        pointsPerStep: number | null;
    }>;
    setActive(user: RequestUser, id: string, isActive: boolean): Promise<{
        id: string;
        name: string;
        isActive: boolean;
        shopId: string;
        createdAt: Date;
        updatedAt: Date;
        type: import("@prisma/client").$Enums.LoyaltyProgramType;
        percentageRate: number | null;
        stepAmount: number | null;
        pointsPerStep: number | null;
    }>;
    remove(user: RequestUser, id: string): Promise<{
        ok: boolean;
    }>;
}
export {};
