import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { Prisma } from '@prisma/client';
export declare class AttendanceRepository {
    private readonly prisma;
    constructor(prisma: PrismaService);
    findAttendanceByUserMeeting(userId: string, meetingId: 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>;
    findAttendanceWithUser(userId: string, meetingId: string): Prisma.Prisma__MeetingAttendanceClient<({
        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;
            })[];
        };
        meeting: {
            title: string;
            id: string;
            startTime: Date;
        };
    } & {
        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>;
    createAttendance(data: Prisma.MeetingAttendanceCreateInput): Prisma.Prisma__MeetingAttendanceClient<{
        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;
            })[];
        };
        meeting: {
            title: string;
            id: string;
            startTime: Date;
        };
    } & {
        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;
    }, never, import("@prisma/client/runtime/library").DefaultArgs, Prisma.PrismaClientOptions>;
    updateAttendance(id: string, data: Prisma.MeetingAttendanceUpdateInput): Prisma.Prisma__MeetingAttendanceClient<{
        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;
            })[];
        };
        meeting: {
            title: string;
            id: string;
            startTime: Date;
        };
    } & {
        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;
    }, never, import("@prisma/client/runtime/library").DefaultArgs, Prisma.PrismaClientOptions>;
    upsertAttendance(userId: string, meetingId: string, data: Prisma.MeetingAttendanceUpdateInput, createData: Prisma.MeetingAttendanceCreateInput): Prisma.Prisma__MeetingAttendanceClient<{
        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;
            })[];
        };
        meeting: {
            title: string;
            id: string;
            startTime: Date;
        };
    } & {
        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;
    }, never, import("@prisma/client/runtime/library").DefaultArgs, Prisma.PrismaClientOptions>;
    listAttendancesByMeeting(meetingId: string): Prisma.PrismaPromise<{
        userId: string;
    }[]>;
    listAttendancesByMeetingWithUsers(meetingId: string): Prisma.PrismaPromise<({
        user: {
            displayName: 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;
    })[]>;
    deleteAttendancesByUserMeeting(userId: string, meetingId: string): Prisma.PrismaPromise<Prisma.BatchPayload>;
    findAttendanceByDevice(meetingId: string, deviceId: 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>;
    findAttendanceByDeviceOtherUser(meetingId: string, deviceId: string, userId: string): Prisma.Prisma__MeetingAttendanceClient<({
        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;
            })[];
        };
    } & {
        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>;
}
