import type { CreateShiftInput, UpdateShiftInput, ListShiftsInput, AddSignupInput, PublicSignupInput } from './shifts.schemas';
export declare const shiftsService: {
    findAll(filters: ListShiftsInput): Promise<{
        shifts: ({
            _count: {
                signups: number;
            };
            cut: {
                id: string;
                name: string;
            } | null;
            meeting: {
                id: string;
                title: string;
                isActive: boolean;
                slug: string;
                jitsiRoom: string;
            } | null;
        } & {
            status: import(".prisma/client").$Enums.ShiftStatus;
            date: Date;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            location: string | null;
            title: string;
            description: string | null;
            createdBy: string | null;
            isPublic: boolean;
            cutId: string | null;
            startTime: string;
            endTime: string;
            gancioEventId: number | null;
            meetingId: string | null;
            seriesId: string | null;
            isException: boolean;
            maxVolunteers: number;
            currentVolunteers: number;
        })[];
        pagination: {
            page: number;
            limit: number;
            total: number;
            totalPages: number;
        };
    }>;
    findById(id: string): Promise<{
        _count: {
            signups: number;
        };
        cut: {
            id: string;
            name: string;
        } | null;
        meeting: {
            id: string;
            title: string;
            isActive: boolean;
            slug: string;
            jitsiRoom: string;
        } | null;
        signups: ({
            user: {
                id: string;
                email: string;
                name: string | null;
                phone: string | null;
            } | null;
        } & {
            status: import(".prisma/client").$Enums.SignupStatus;
            id: string;
            userId: string | null;
            userEmail: string;
            shiftId: string;
            userName: string | null;
            shiftTitle: string | null;
            userPhone: string | null;
            signupDate: Date;
            signupSource: import(".prisma/client").$Enums.SignupSource;
        })[];
    } & {
        status: import(".prisma/client").$Enums.ShiftStatus;
        date: Date;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        location: string | null;
        title: string;
        description: string | null;
        createdBy: string | null;
        isPublic: boolean;
        cutId: string | null;
        startTime: string;
        endTime: string;
        gancioEventId: number | null;
        meetingId: string | null;
        seriesId: string | null;
        isException: boolean;
        maxVolunteers: number;
        currentVolunteers: number;
    }>;
    create(data: CreateShiftInput, userId: string): Promise<{
        status: import(".prisma/client").$Enums.ShiftStatus;
        date: Date;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        location: string | null;
        title: string;
        description: string | null;
        createdBy: string | null;
        isPublic: boolean;
        cutId: string | null;
        startTime: string;
        endTime: string;
        gancioEventId: number | null;
        meetingId: string | null;
        seriesId: string | null;
        isException: boolean;
        maxVolunteers: number;
        currentVolunteers: number;
    }>;
    update(id: string, data: UpdateShiftInput): Promise<{
        status: import(".prisma/client").$Enums.ShiftStatus;
        date: Date;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        location: string | null;
        title: string;
        description: string | null;
        createdBy: string | null;
        isPublic: boolean;
        cutId: string | null;
        startTime: string;
        endTime: string;
        gancioEventId: number | null;
        meetingId: string | null;
        seriesId: string | null;
        isException: boolean;
        maxVolunteers: number;
        currentVolunteers: number;
    }>;
    delete(id: string): Promise<void>;
    createMeetingForShift(shiftId: string, userId: string): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        title: string;
        isActive: boolean;
        description: string | null;
        slug: string;
        createdByUserId: string;
        jitsiRoom: string;
        startTime: Date | null;
        endTime: Date | null;
    }>;
    removeMeetingFromShift(shiftId: string): Promise<void>;
    getStats(): Promise<{
        total: number;
        open: number;
        full: number;
        cancelled: number;
        upcoming: number;
        totalSignups: number;
    }>;
    getSignups(shiftId: string): Promise<({
        user: {
            id: string;
            email: string;
            name: string | null;
            phone: string | null;
        } | null;
    } & {
        status: import(".prisma/client").$Enums.SignupStatus;
        id: string;
        userId: string | null;
        userEmail: string;
        shiftId: string;
        userName: string | null;
        shiftTitle: string | null;
        userPhone: string | null;
        signupDate: Date;
        signupSource: import(".prisma/client").$Enums.SignupSource;
    })[]>;
    addSignup(shiftId: string, data: AddSignupInput): Promise<{
        status: import(".prisma/client").$Enums.SignupStatus;
        id: string;
        userId: string | null;
        userEmail: string;
        shiftId: string;
        userName: string | null;
        shiftTitle: string | null;
        userPhone: string | null;
        signupDate: Date;
        signupSource: import(".prisma/client").$Enums.SignupSource;
    }>;
    removeSignup(signupId: string): Promise<void>;
    publicSignup(shiftId: string, data: PublicSignupInput): Promise<{
        signup: {
            status: import(".prisma/client").$Enums.SignupStatus;
            id: string;
            userId: string | null;
            userEmail: string;
            shiftId: string;
            userName: string | null;
            shiftTitle: string | null;
            userPhone: string | null;
            signupDate: Date;
            signupSource: import(".prisma/client").$Enums.SignupSource;
        };
        isNewUser: boolean;
    }>;
    cancelPublicSignup(shiftId: string, userEmail: string): Promise<void>;
    getUpcomingForVolunteer(userId: string): Promise<{
        isSignedUp: boolean;
        status: import(".prisma/client").$Enums.ShiftStatus;
        date: Date;
        id: string;
        location: string | null;
        title: string;
        description: string | null;
        meeting: {
            id: string;
            isActive: boolean;
            slug: string;
        } | null;
        startTime: string;
        endTime: string;
        maxVolunteers: number;
        currentVolunteers: number;
    }[]>;
    volunteerSignup(shiftId: string, userId: string): Promise<{
        status: import(".prisma/client").$Enums.SignupStatus;
        id: string;
        userId: string | null;
        userEmail: string;
        shiftId: string;
        userName: string | null;
        shiftTitle: string | null;
        userPhone: string | null;
        signupDate: Date;
        signupSource: import(".prisma/client").$Enums.SignupSource;
    }>;
    cancelVolunteerSignup(shiftId: string, userId: string): Promise<void>;
    getMySignups(userId: string): Promise<({
        shift: {
            status: import(".prisma/client").$Enums.ShiftStatus;
            date: Date;
            id: string;
            location: string | null;
            title: string;
            description: string | null;
            meeting: {
                id: string;
                isActive: boolean;
                slug: string;
            } | null;
            startTime: string;
            endTime: string;
            maxVolunteers: number;
            currentVolunteers: number;
        };
    } & {
        status: import(".prisma/client").$Enums.SignupStatus;
        id: string;
        userId: string | null;
        userEmail: string;
        shiftId: string;
        userName: string | null;
        shiftTitle: string | null;
        userPhone: string | null;
        signupDate: Date;
        signupSource: import(".prisma/client").$Enums.SignupSource;
    })[]>;
    getPublicShifts(): Promise<{
        status: import(".prisma/client").$Enums.ShiftStatus;
        date: Date;
        id: string;
        location: string | null;
        title: string;
        description: string | null;
        meeting: {
            id: string;
            isActive: boolean;
            slug: string;
        } | null;
        startTime: string;
        endTime: string;
        maxVolunteers: number;
        currentVolunteers: number;
    }[]>;
    emailShiftDetails(shiftId: string): Promise<{
        sent: number;
        failed: number;
    }>;
    getCalendarData(startDate: string, endDate: string): Promise<{
        dates: Record<string, {
            count: number;
            shifts: any[];
        }>;
    }>;
};
//# sourceMappingURL=shifts.service.d.ts.map