import type { Prisma } from '../../../prisma-client';
import type { Booking } from '../../../prisma/client';
type TeamBookingsParamsBase = {
    user: {
        id: number;
        email: string;
    };
    teamId: number;
    startDate: Date;
    endDate: Date;
    excludedUid?: string | null;
    includeManagedEvents: boolean;
    shouldReturnCount?: boolean;
};
type TeamBookingsParamsWithCount = TeamBookingsParamsBase & {
    shouldReturnCount: true;
};
type TeamBookingsParamsWithoutCount = TeamBookingsParamsBase;
export declare class BookingRepository {
    static getBookingAttendees(bookingId: number): Promise<{
        id: number;
        name: string;
        email: string;
        timeZone: string;
        bookingId: number | null;
        locale: string | null;
        phoneNumber: string | null;
        noShow: boolean | null;
    }[]>;
    /** Determines if the user is the organizer, team admin, or org admin that the booking was created under */
    static doesUserIdHaveAccessToBooking({ userId, bookingId }: {
        userId: number;
        bookingId: number;
    }): Promise<boolean>;
    static findFirstBookingByReschedule({ originalBookingUid }: {
        originalBookingUid: string;
    }): Promise<{
        uid: string;
    } | null>;
    static getAllBookingsForRoundRobin({ users, eventTypeId, }: {
        users: {
            id: number;
            email: string;
        }[];
        eventTypeId: number;
    }): Promise<{
        id: number;
        status: import('../../../prisma-client').$Enums.BookingStatus;
        userId: number | null;
        attendees: {
            id: number;
            name: string;
            email: string;
            timeZone: string;
            bookingId: number | null;
            locale: string | null;
            phoneNumber: string | null;
            noShow: boolean | null;
        }[];
        createdAt: Date;
    }[]>;
    static findBookingByUid({ bookingUid }: {
        bookingUid: string;
    }): Promise<{
        title: string;
        metadata: Prisma.JsonValue;
        id: number;
        description: string | null;
        customInputs: Prisma.JsonValue;
        attendees: {
            id: number;
            name: string;
            email: string;
            timeZone: string;
            bookingId: number | null;
            locale: string | null;
            phoneNumber: string | null;
            noShow: boolean | null;
        }[];
        userPrimaryEmail: string | null;
        startTime: Date;
        endTime: Date;
    } | null>;
    static findBookingForMeetingPage({ bookingUid }: {
        bookingUid: string;
    }): Promise<{
        title: string;
        metadata: Prisma.JsonValue;
        id: number;
        description: string | null;
        user: {
            id: number;
            name: string | null;
            email: string;
            timeZone: string;
            username: string | null;
        } | null;
        customInputs: Prisma.JsonValue;
        uid: string;
        references: {
            type: string;
            id: number;
            uid: string;
            meetingPassword: string | null;
            meetingUrl: string | null;
        }[];
        attendees: {
            id: number;
            name: string;
            email: string;
            timeZone: string;
            bookingId: number | null;
            locale: string | null;
            phoneNumber: string | null;
            noShow: boolean | null;
        }[];
        userPrimaryEmail: string | null;
        startTime: Date;
        endTime: Date;
        isRecorded: boolean;
    } | null>;
    static findBookingForMeetingEndedPage({ bookingUid }: {
        bookingUid: string;
    }): Promise<{
        title: string;
        metadata: Prisma.JsonValue;
        id: number;
        description: string | null;
        user: {
            credentials: {
                key: Prisma.JsonValue;
                invalid: boolean | null;
                type: string;
                id: number;
                userId: number | null;
                teamId: number | null;
                subscriptionId: string | null;
                billingCycleStart: number | null;
                appId: string | null;
                paymentStatus: string | null;
            }[];
        } | null;
        customInputs: Prisma.JsonValue;
        uid: string;
        references: {
            type: string;
            uid: string;
            meetingUrl: string | null;
        }[];
        attendees: {
            id: number;
            name: string;
            email: string;
            timeZone: string;
            bookingId: number | null;
            locale: string | null;
            phoneNumber: string | null;
            noShow: boolean | null;
        }[];
        userPrimaryEmail: string | null;
        startTime: Date;
        endTime: Date;
    } | null>;
    static findBookingByUidAndUserId({ bookingUid, userId }: {
        bookingUid: string;
        userId: number;
    }): Promise<{
        title: string;
        metadata: Prisma.JsonValue;
        id: number;
        location: string | null;
        status: import('../../../prisma-client').$Enums.BookingStatus;
        description: string | null;
        eventTypeId: number | null;
        userId: number | null;
        customInputs: Prisma.JsonValue;
        smsReminderNumber: string | null;
        recurringEventId: string | null;
        rescheduledBy: string | null;
        uid: string;
        cancellationReason: string | null;
        cancelledBy: string | null;
        iCalUID: string | null;
        responses: Prisma.JsonValue;
        idempotencyKey: string | null;
        userPrimaryEmail: string | null;
        startTime: Date;
        endTime: Date;
        createdAt: Date;
        updatedAt: Date | null;
        paid: boolean;
        destinationCalendarId: number | null;
        rejectionReason: string | null;
        reassignReason: string | null;
        dynamicEventSlugRef: string | null;
        dynamicGroupSlugRef: string | null;
        rescheduled: boolean | null;
        fromReschedule: string | null;
        scheduledJobs: string[];
        isRecorded: boolean;
        iCalSequence: number;
        rating: number | null;
        ratingFeedback: string | null;
        noShowHost: boolean | null;
        oneTimePassword: string | null;
    } | null>;
    static updateLocationById({ where: { id }, data: { location, metadata, referencesToCreate }, }: {
        where: {
            id: number;
        };
        data: {
            location: string;
            metadata: Record<string, unknown>;
            referencesToCreate: Prisma.BookingReferenceCreateInput[];
        };
    }): Promise<void>;
    static getAllAcceptedTeamBookingsOfUser(params: TeamBookingsParamsWithCount): Promise<number>;
    static getAllAcceptedTeamBookingsOfUser(params: TeamBookingsParamsWithoutCount): Promise<Array<Booking>>;
    static findOriginalRescheduledBooking(uid: string, seatsEventType?: boolean): Promise<({
        user: {
            id: number;
            name: string | null;
            email: string;
            timeZone: string;
            destinationCalendar: {
                id: number;
                credentialId: number | null;
                eventTypeId: number | null;
                userId: number | null;
                integration: string;
                externalId: string;
                primaryEmail: string | null;
            } | null;
            locale: string | null;
            credentials: {
                key: Prisma.JsonValue;
                invalid: boolean | null;
                type: string;
                id: number;
                userId: number | null;
                user: {
                    email: string;
                } | null;
                teamId: number | null;
                appId: string | null;
            }[];
        } | null;
        payment: {
            success: boolean;
            data: Prisma.JsonValue;
            id: number;
            currency: string;
            paymentOption: import('../../../prisma-client').$Enums.PaymentOption | null;
            bookingId: number;
            uid: string;
            appId: string | null;
            externalId: string;
            refunded: boolean;
            amount: number;
            fee: number;
        }[];
        destinationCalendar: {
            id: number;
            credentialId: number | null;
            eventTypeId: number | null;
            userId: number | null;
            integration: string;
            externalId: string;
            primaryEmail: string | null;
        } | null;
        references: {
            type: string;
            id: number;
            credentialId: number | null;
            deleted: boolean | null;
            bookingId: number | null;
            uid: string;
            thirdPartyRecurringEventId: string | null;
            meetingId: string | null;
            meetingPassword: string | null;
            meetingUrl: string | null;
            externalCalendarId: string | null;
        }[];
        attendees: {
            id: number;
            name: string;
            email: string;
            timeZone: string;
            locale: string | null;
            bookingSeat: {
                data: Prisma.JsonValue;
                id: number;
                bookingId: number;
                referenceUid: string;
                attendeeId: number;
            } | null;
            phoneNumber: string | null;
        }[];
        workflowReminders: {
            method: import('../../../prisma-client').$Enums.WorkflowMethods;
            id: number;
            bookingUid: string | null;
            cancelled: boolean | null;
            referenceId: string | null;
            scheduled: boolean;
            workflowStepId: number | null;
            scheduledDate: Date;
            seatReferenceId: string | null;
            isMandatoryReminder: boolean | null;
            retryCount: number;
        }[];
    } & {
        title: string;
        metadata: Prisma.JsonValue;
        id: number;
        location: string | null;
        status: import('../../../prisma-client').$Enums.BookingStatus;
        description: string | null;
        eventTypeId: number | null;
        userId: number | null;
        customInputs: Prisma.JsonValue;
        smsReminderNumber: string | null;
        recurringEventId: string | null;
        rescheduledBy: string | null;
        uid: string;
        cancellationReason: string | null;
        cancelledBy: string | null;
        iCalUID: string | null;
        responses: Prisma.JsonValue;
        idempotencyKey: string | null;
        userPrimaryEmail: string | null;
        startTime: Date;
        endTime: Date;
        createdAt: Date;
        updatedAt: Date | null;
        paid: boolean;
        destinationCalendarId: number | null;
        rejectionReason: string | null;
        reassignReason: string | null;
        dynamicEventSlugRef: string | null;
        dynamicGroupSlugRef: string | null;
        rescheduled: boolean | null;
        fromReschedule: string | null;
        scheduledJobs: string[];
        isRecorded: boolean;
        iCalSequence: number;
        rating: number | null;
        ratingFeedback: string | null;
        noShowHost: boolean | null;
        oneTimePassword: string | null;
    }) | null>;
}
export {};
//# sourceMappingURL=booking.d.ts.map