import { UserRole } from '@prisma/client';
import { CreateLuckyDrawDto } from './dto/create-lucky-draw.dto';
import { UpdateLuckyDrawDto } from './dto/update-lucky-draw.dto';
import { LuckyDrawService } from './lucky-draw.service';
import { BulkCreateLuckyDrawDto } from './dto/bulk-create-lucky-draw.dto';
import { RejectLuckyDrawDto } from './dto/reject-lucky-draw.dto';
type RequestWithUser = {
    user: {
        id: string;
        role: UserRole;
        shopId: string | null;
    };
};
export declare class LuckyDrawController {
    private readonly luckyDraw;
    constructor(luckyDraw: LuckyDrawService);
    list(req: RequestWithUser, shopId?: string): Promise<{
        id: string;
        name: string;
        shopId: string;
        createdAt: Date;
        updatedAt: Date;
        description: string | null;
        imageUrl: string | null;
        status: import("@prisma/client").$Enums.LuckyDrawStatus;
        rejectedAt: Date | null;
        rejectedReason: string | null;
        moderationStatus: import("@prisma/client").$Enums.ModerationStatus;
        submittedAt: Date | null;
        publishedAt: Date | null;
        design: import("@prisma/client/runtime/library").JsonValue | null;
        prize: string | null;
        startDate: Date;
        endDate: Date;
        participantsCount: number;
    }[]>;
    listPaged(req: RequestWithUser, page?: string, limit?: string, q?: string, status?: string, moderationStatus?: string, shopId?: string): Promise<{
        page: number;
        limit: number;
        total: number;
        items: {
            id: string;
            name: string;
            shopId: string;
            createdAt: Date;
            updatedAt: Date;
            description: string | null;
            imageUrl: string | null;
            status: import("@prisma/client").$Enums.LuckyDrawStatus;
            rejectedAt: Date | null;
            rejectedReason: string | null;
            moderationStatus: import("@prisma/client").$Enums.ModerationStatus;
            submittedAt: Date | null;
            publishedAt: Date | null;
            design: import("@prisma/client/runtime/library").JsonValue | null;
            prize: string | null;
            startDate: Date;
            endDate: Date;
            participantsCount: number;
        }[];
    }>;
    listAdmin(page?: string, limit?: string, q?: string, shopId?: string, status?: string, moderationStatus?: string): Promise<{
        page: number;
        limit: number;
        total: number;
        items: {
            id: string;
            name: string;
            shopId: string;
            createdAt: Date;
            updatedAt: Date;
            shop: {
                id: string;
                name: string;
                username: string | null;
                city: string;
                state: string;
            };
            description: string | null;
            imageUrl: string | null;
            status: import("@prisma/client").$Enums.LuckyDrawStatus;
            rejectedAt: Date | null;
            rejectedReason: string | null;
            moderationStatus: import("@prisma/client").$Enums.ModerationStatus;
            publishedAt: Date | null;
            prize: string | null;
            startDate: Date;
            endDate: Date;
            participantsCount: number;
        }[];
    }>;
    create(req: RequestWithUser, dto: CreateLuckyDrawDto): Promise<{
        id: string;
        name: string;
        shopId: string;
        createdAt: Date;
        updatedAt: Date;
        description: string | null;
        imageUrl: string | null;
        status: import("@prisma/client").$Enums.LuckyDrawStatus;
        rejectedAt: Date | null;
        rejectedReason: string | null;
        moderationStatus: import("@prisma/client").$Enums.ModerationStatus;
        submittedAt: Date | null;
        publishedAt: Date | null;
        design: import("@prisma/client/runtime/library").JsonValue | null;
        prize: string | null;
        startDate: Date;
        endDate: Date;
        participantsCount: number;
    }>;
    bulkCreate(req: RequestWithUser, dto: BulkCreateLuckyDrawDto): Promise<any[]>;
    update(req: RequestWithUser, id: string, dto: UpdateLuckyDrawDto): Promise<{
        id: string;
        name: string;
        shopId: string;
        createdAt: Date;
        updatedAt: Date;
        description: string | null;
        imageUrl: string | null;
        status: import("@prisma/client").$Enums.LuckyDrawStatus;
        rejectedAt: Date | null;
        rejectedReason: string | null;
        moderationStatus: import("@prisma/client").$Enums.ModerationStatus;
        submittedAt: Date | null;
        publishedAt: Date | null;
        design: import("@prisma/client/runtime/library").JsonValue | null;
        prize: string | null;
        startDate: Date;
        endDate: Date;
        participantsCount: number;
    }>;
    submit(req: RequestWithUser, id: string): Promise<{
        ok: boolean;
        luckyDraw: {
            id: string;
            moderationStatus: import("@prisma/client").$Enums.ModerationStatus;
            submittedAt: Date | null;
        };
    }>;
    publish(id: string): Promise<{
        ok: boolean;
        luckyDraw: {
            id: string;
            status: import("@prisma/client").$Enums.LuckyDrawStatus;
            moderationStatus: import("@prisma/client").$Enums.ModerationStatus;
            publishedAt: Date | null;
        };
    }>;
    reject(id: string, dto: RejectLuckyDrawDto): Promise<{
        ok: boolean;
        luckyDraw: {
            id: string;
            status: import("@prisma/client").$Enums.LuckyDrawStatus;
            rejectedAt: Date | null;
            rejectedReason: string | null;
            moderationStatus: import("@prisma/client").$Enums.ModerationStatus;
        };
    }>;
    remove(req: RequestWithUser, id: string): Promise<{
        ok: boolean;
    }>;
}
export {};
