import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { Prisma, MeetingStatus } from '@prisma/client';
export declare class SeriesRepository {
    private readonly prisma;
    constructor(prisma: PrismaService);
    listSeries(): Prisma.PrismaPromise<({
        creator: {
            displayName: string;
            email: string;
            departmentMemberships: ({
                department: {
                    code: string;
                    id: string;
                    name: string;
                };
                position: {
                    id: string;
                    name: string;
                    level: number;
                } | null;
            } & {
                title: string | null;
                id: string;
                createdAt: Date;
                userId: string;
                updatedAt: Date;
                organizationId: string;
                departmentId: string;
                positionId: string | null;
                managerId: string | null;
                isPrimary: boolean;
                joinedAt: Date;
                leftAt: Date | null;
            })[];
        };
        meetings: {
            location: string | null;
            title: string;
            id: string;
            status: import("@prisma/client").$Enums.MeetingStatus;
            startTime: Date;
            endTime: Date;
            qrCodeOnline: string | null;
            qrCodeOffline: string | null;
            instanceNumber: number | null;
        }[];
    } & {
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        startDate: Date;
        endDate: Date | null;
        updatedAt: Date;
        description: string | null;
        isActive: boolean;
        timezone: string;
        frequency: number;
        creatorId: string;
        city: string | null;
        enforceCheckinMode: boolean;
        pattern: import("@prisma/client").$Enums.RecurrencePattern;
        maxOccurrences: number | null;
    })[]>;
    findSeriesById(id: string): Prisma.Prisma__MeetingSeriesClient<{
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        startDate: Date;
        endDate: Date | null;
        updatedAt: Date;
        description: string | null;
        isActive: boolean;
        timezone: string;
        frequency: number;
        creatorId: string;
        city: string | null;
        enforceCheckinMode: boolean;
        pattern: import("@prisma/client").$Enums.RecurrencePattern;
        maxOccurrences: number | null;
    } | null, null, import("@prisma/client/runtime/library").DefaultArgs, Prisma.PrismaClientOptions>;
    findSeriesWithMeetings(id: string): Prisma.Prisma__MeetingSeriesClient<({
        creator: {
            displayName: string;
            email: string;
            departmentMemberships: ({
                department: {
                    code: string;
                    id: string;
                    name: string;
                };
                position: {
                    id: string;
                    name: string;
                    level: number;
                } | null;
            } & {
                title: string | null;
                id: string;
                createdAt: Date;
                userId: string;
                updatedAt: Date;
                organizationId: string;
                departmentId: string;
                positionId: string | null;
                managerId: string | null;
                isPrimary: boolean;
                joinedAt: Date;
                leftAt: Date | null;
            })[];
        };
        meetings: ({
            attendances: ({
                user: {
                    displayName: string;
                    email: string;
                    departmentMemberships: ({
                        department: {
                            code: string;
                            id: string;
                            name: string;
                        };
                        position: {
                            id: string;
                            name: string;
                            level: number;
                        } | null;
                    } & {
                        title: string | null;
                        id: string;
                        createdAt: Date;
                        userId: string;
                        updatedAt: Date;
                        organizationId: string;
                        departmentId: string;
                        positionId: string | null;
                        managerId: string | null;
                        isPrimary: boolean;
                        joinedAt: Date;
                        leftAt: Date | null;
                    })[];
                };
            } & {
                id: string;
                createdAt: Date;
                userId: string;
                deviceId: string | null;
                status: import("@prisma/client").$Enums.AttendanceStatus;
                updatedAt: Date;
                meetingId: string;
                checkinTime: Date | null;
                checkoutTime: Date | null;
                isLate: boolean;
                isEarlyLeave: boolean;
                notes: string | null;
                checkinType: import("@prisma/client").$Enums.CheckinType | null;
            })[];
            requiredAttendees: ({
                user: {
                    displayName: string;
                    email: string;
                    departmentMemberships: ({
                        department: {
                            code: string;
                            id: string;
                            name: string;
                        };
                        position: {
                            id: string;
                            name: string;
                            level: number;
                        } | null;
                    } & {
                        title: string | null;
                        id: string;
                        createdAt: Date;
                        userId: string;
                        updatedAt: Date;
                        organizationId: string;
                        departmentId: string;
                        positionId: string | null;
                        managerId: string | null;
                        isPrimary: boolean;
                        joinedAt: Date;
                        leftAt: Date | null;
                    })[];
                };
            } & {
                role: import("@prisma/client").$Enums.AttendeeRole;
                id: string;
                createdAt: Date;
                userId: string;
                meetingId: string;
                checkinMode: import("@prisma/client").$Enums.AttendanceMode | null;
            })[];
        } & {
            type: import("@prisma/client").$Enums.MeetingType;
            location: string | null;
            title: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.MeetingStatus;
            updatedAt: Date;
            description: string | null;
            startTime: Date;
            endTime: Date;
            timezone: string;
            creatorId: string;
            qrCodeOnline: string | null;
            qrCodeOffline: string | null;
            seriesId: string | null;
            instanceNumber: number | null;
            isSeriesMaster: boolean;
            hasCustomAttendees: boolean;
            city: string | null;
            enforceCheckinMode: boolean;
        })[];
    } & {
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        startDate: Date;
        endDate: Date | null;
        updatedAt: Date;
        description: string | null;
        isActive: boolean;
        timezone: string;
        frequency: number;
        creatorId: string;
        city: string | null;
        enforceCheckinMode: boolean;
        pattern: import("@prisma/client").$Enums.RecurrencePattern;
        maxOccurrences: number | null;
    }) | null, null, import("@prisma/client/runtime/library").DefaultArgs, Prisma.PrismaClientOptions>;
    createSeries(data: Prisma.MeetingSeriesCreateInput): Prisma.Prisma__MeetingSeriesClient<{
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        startDate: Date;
        endDate: Date | null;
        updatedAt: Date;
        description: string | null;
        isActive: boolean;
        timezone: string;
        frequency: number;
        creatorId: string;
        city: string | null;
        enforceCheckinMode: boolean;
        pattern: import("@prisma/client").$Enums.RecurrencePattern;
        maxOccurrences: number | null;
    }, never, import("@prisma/client/runtime/library").DefaultArgs, Prisma.PrismaClientOptions>;
    updateSeries(id: string, data: Prisma.MeetingSeriesUpdateInput): Prisma.Prisma__MeetingSeriesClient<{
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        startDate: Date;
        endDate: Date | null;
        updatedAt: Date;
        description: string | null;
        isActive: boolean;
        timezone: string;
        frequency: number;
        creatorId: string;
        city: string | null;
        enforceCheckinMode: boolean;
        pattern: import("@prisma/client").$Enums.RecurrencePattern;
        maxOccurrences: number | null;
    }, never, import("@prisma/client/runtime/library").DefaultArgs, Prisma.PrismaClientOptions>;
    deleteSeries(id: string): Prisma.Prisma__MeetingSeriesClient<{
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        startDate: Date;
        endDate: Date | null;
        updatedAt: Date;
        description: string | null;
        isActive: boolean;
        timezone: string;
        frequency: number;
        creatorId: string;
        city: string | null;
        enforceCheckinMode: boolean;
        pattern: import("@prisma/client").$Enums.RecurrencePattern;
        maxOccurrences: number | null;
    }, never, import("@prisma/client/runtime/library").DefaultArgs, Prisma.PrismaClientOptions>;
    listSeriesMeetings(id: string): Prisma.PrismaPromise<{
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.MeetingStatus;
        updatedAt: Date;
        description: string | null;
        startTime: Date;
        endTime: Date;
        timezone: string;
        creatorId: string;
        qrCodeOnline: string | null;
        qrCodeOffline: string | null;
        seriesId: string | null;
        instanceNumber: number | null;
        isSeriesMaster: boolean;
        hasCustomAttendees: boolean;
        city: string | null;
        enforceCheckinMode: boolean;
    }[]>;
    listSeriesMeetingsWithAttendees(id: string): Prisma.PrismaPromise<({
        requiredAttendees: ({
            user: {
                displayName: string;
                id: string;
                email: string;
                departmentMemberships: ({
                    department: {
                        code: string;
                        id: string;
                        name: string;
                    };
                    position: {
                        id: string;
                        name: string;
                        level: number;
                    } | null;
                } & {
                    title: string | null;
                    id: string;
                    createdAt: Date;
                    userId: string;
                    updatedAt: Date;
                    organizationId: string;
                    departmentId: string;
                    positionId: string | null;
                    managerId: string | null;
                    isPrimary: boolean;
                    joinedAt: Date;
                    leftAt: Date | null;
                })[];
            };
        } & {
            role: import("@prisma/client").$Enums.AttendeeRole;
            id: string;
            createdAt: Date;
            userId: string;
            meetingId: string;
            checkinMode: import("@prisma/client").$Enums.AttendanceMode | null;
        })[];
    } & {
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.MeetingStatus;
        updatedAt: Date;
        description: string | null;
        startTime: Date;
        endTime: Date;
        timezone: string;
        creatorId: string;
        qrCodeOnline: string | null;
        qrCodeOffline: string | null;
        seriesId: string | null;
        instanceNumber: number | null;
        isSeriesMaster: boolean;
        hasCustomAttendees: boolean;
        city: string | null;
        enforceCheckinMode: boolean;
    })[]>;
    findSeriesWithMeetingsForAttendees(id: string): Prisma.Prisma__MeetingSeriesClient<({
        meetings: ({
            requiredAttendees: ({
                user: {
                    displayName: string;
                    id: string;
                    email: string;
                    departmentMemberships: ({
                        department: {
                            code: string;
                            id: string;
                            name: string;
                        };
                        position: {
                            id: string;
                            name: string;
                            level: number;
                        } | null;
                    } & {
                        title: string | null;
                        id: string;
                        createdAt: Date;
                        userId: string;
                        updatedAt: Date;
                        organizationId: string;
                        departmentId: string;
                        positionId: string | null;
                        managerId: string | null;
                        isPrimary: boolean;
                        joinedAt: Date;
                        leftAt: Date | null;
                    })[];
                };
            } & {
                role: import("@prisma/client").$Enums.AttendeeRole;
                id: string;
                createdAt: Date;
                userId: string;
                meetingId: string;
                checkinMode: import("@prisma/client").$Enums.AttendanceMode | null;
            })[];
        } & {
            type: import("@prisma/client").$Enums.MeetingType;
            location: string | null;
            title: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.MeetingStatus;
            updatedAt: Date;
            description: string | null;
            startTime: Date;
            endTime: Date;
            timezone: string;
            creatorId: string;
            qrCodeOnline: string | null;
            qrCodeOffline: string | null;
            seriesId: string | null;
            instanceNumber: number | null;
            isSeriesMaster: boolean;
            hasCustomAttendees: boolean;
            city: string | null;
            enforceCheckinMode: boolean;
        })[];
    } & {
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        startDate: Date;
        endDate: Date | null;
        updatedAt: Date;
        description: string | null;
        isActive: boolean;
        timezone: string;
        frequency: number;
        creatorId: string;
        city: string | null;
        enforceCheckinMode: boolean;
        pattern: import("@prisma/client").$Enums.RecurrencePattern;
        maxOccurrences: number | null;
    }) | null, null, import("@prisma/client/runtime/library").DefaultArgs, Prisma.PrismaClientOptions>;
    listMeetingsForScheduleUpdate(seriesId: string, statuses: MeetingStatus[]): Prisma.PrismaPromise<{
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.MeetingStatus;
        updatedAt: Date;
        description: string | null;
        startTime: Date;
        endTime: Date;
        timezone: string;
        creatorId: string;
        qrCodeOnline: string | null;
        qrCodeOffline: string | null;
        seriesId: string | null;
        instanceNumber: number | null;
        isSeriesMaster: boolean;
        hasCustomAttendees: boolean;
        city: string | null;
        enforceCheckinMode: boolean;
    }[]>;
    updateMeetingsForSeries(seriesId: string, data: Prisma.MeetingUpdateInput): Prisma.PrismaPromise<Prisma.BatchPayload>;
    countSeriesAttendance(seriesId: string): Prisma.Prisma__MeetingAttendanceClient<{
        id: string;
        createdAt: Date;
        userId: string;
        deviceId: string | null;
        status: import("@prisma/client").$Enums.AttendanceStatus;
        updatedAt: Date;
        meetingId: string;
        checkinTime: Date | null;
        checkoutTime: Date | null;
        isLate: boolean;
        isEarlyLeave: boolean;
        notes: string | null;
        checkinType: import("@prisma/client").$Enums.CheckinType | null;
    } | null, null, import("@prisma/client/runtime/library").DefaultArgs, Prisma.PrismaClientOptions>;
}
