import short from "short-uuid";
import type { BookingDataSchemaGetter } from '../dto/types';
import type { CreateRegularBookingData, CreateBookingMeta } from '../dto/types';
import type { CheckBookingAndDurationLimitsService } from '../handleNewBooking/checkBookingAndDurationLimits';
import { BookingEventHandlerService } from '../onBookingEvents/BookingEventHandlerService';
import { BookingEmailAndSmsTasker } from '../tasker/BookingEmailAndSmsTasker';
import { FeaturesRepository } from '../../../flags/features.repository';
import type { HashedLinkService } from '../../../hashedLink/lib/service/HashedLinkService';
import type { UserRepository } from '../../../users/repositories/UserRepository';
import type { PrismaClient } from '../../../../prisma';
import type { DestinationCalendar, User } from '../../../../kysely/types.ts';
import { SchedulingType } from '../../../../prisma/enums';
import type { AppsStatus, CalendarEvent } from "@calcom/types/Calendar";
import type { PartialReference } from "@calcom/types/EventManager";
import type { BookingRepository } from "../../repositories/BookingRepository";
import { LuckyUserService } from "../getLuckyUser";
import type { IBookingService } from "../interfaces/IBookingService";
export declare const buildDryRunBooking: ({ eventTypeId, organizerUser, eventName, startTime, endTime, contactOwnerFromReq, contactOwnerEmail, allHostUsers, isManagedEventType, }: {
    eventTypeId: number;
    organizerUser: {
        id: number;
        name: string | null;
        username: string | null;
        email: string;
        timeZone: string;
    };
    eventName: string;
    startTime: string;
    endTime: string;
    contactOwnerFromReq: string | null;
    contactOwnerEmail: string | null;
    allHostUsers: {
        id: number;
    }[];
    isManagedEventType: boolean;
}) => {
    booking: {
        id: number;
        uid: string;
        iCalUID: string;
        status: "ACCEPTED";
        eventTypeId: number;
        user: {
            id: number;
            name: string | null;
            username: string | null;
            email: string;
            timeZone: string;
        };
        userId: number;
        title: string;
        startTime: Date;
        endTime: Date;
        createdAt: Date;
        updatedAt: Date;
        attendees: never[];
        oneTimePassword: null;
        smsReminderNumber: null;
        metadata: {};
        idempotencyKey: null;
        userPrimaryEmail: null;
        description: null;
        customInputs: null;
        responses: null;
        location: null;
        paid: false;
        cancellationReason: null;
        rejectionReason: null;
        dynamicEventSlugRef: null;
        dynamicGroupSlugRef: null;
        fromReschedule: null;
        recurringEventId: null;
        scheduledJobs: never[];
        rescheduledBy: null;
        destinationCalendarId: null;
        reassignReason: null;
        reassignById: null;
        rescheduled: false;
        isRecorded: false;
        iCalSequence: number;
        rating: null;
        ratingFeedback: null;
        noShowHost: null;
        cancelledBy: null;
        creationSource: "WEBAPP";
        references: never[];
        payment: never[];
    };
    troubleshooterData: {
        organizerUserId: number;
        eventTypeId: number;
        askedContactOwnerEmail: string | null;
        usedContactOwnerEmail: string | null;
        allHostUsers: number[];
        isManagedEventType: boolean;
    };
};
export declare const buildEventForTeamEventType: ({ existingEvent: evt, users, organizerUser, schedulingType, team, }: {
    existingEvent: Partial<CalendarEvent>;
    users: (Pick<User, "id" | "name" | "timeZone" | "locale" | "email"> & {
        destinationCalendar: DestinationCalendar | null;
        isFixed?: boolean;
    })[];
    organizerUser: {
        email: string;
    };
    schedulingType: SchedulingType | null;
    team?: {
        id: number;
        name: string;
    } | null;
}) => Promise<CalendarEvent>;
export interface IBookingServiceDependencies {
    checkBookingAndDurationLimitsService: CheckBookingAndDurationLimitsService;
    prismaClient: PrismaClient;
    bookingRepository: BookingRepository;
    luckyUserService: LuckyUserService;
    userRepository: UserRepository;
    hashedLinkService: HashedLinkService;
    bookingEmailAndSmsTasker: BookingEmailAndSmsTasker;
    featuresRepository: FeaturesRepository;
    bookingEventHandler: BookingEventHandlerService;
}
/**
 * Takes care of creating/rescheduling non-recurring, non-instant bookings. Such bookings could be TeamBooking, UserBooking, SeatedUserBooking, SeatedTeamBooking, etc.
 * We can't name it CoreBookingService because non-instant booking also creates a booking but it is entirely different from the regular booking.
 * We are open to renaming it to something more descriptive.
 */
export declare class RegularBookingService implements IBookingService {
    private readonly deps;
    constructor(deps: IBookingServiceDependencies);
    createBooking(input: {
        bookingData: CreateRegularBookingData;
        bookingMeta?: CreateBookingMeta;
    }): Promise<{
        id: number;
        uid: short.SUUID;
        iCalUID: string;
        status: "ACCEPTED";
        eventTypeId: number;
        user: {
            name: string;
            timeZone: string;
            email: null;
        };
        userId: null;
        title: string;
        startTime: Date;
        endTime: Date;
        createdAt: Date;
        updatedAt: Date;
        attendees: {
            id: number;
            email: string;
            name: string;
            timeZone: string;
            locale: null;
            phoneNumber: null;
            bookingId: null;
            noShow: null;
        }[];
        oneTimePassword: null;
        smsReminderNumber: null;
        metadata: {};
        idempotencyKey: null;
        userPrimaryEmail: null;
        description: string | null;
        customInputs: null;
        responses: null;
        location: string;
        paid: boolean;
        cancellationReason: null;
        rejectionReason: null;
        dynamicEventSlugRef: null;
        dynamicGroupSlugRef: null;
        fromReschedule: null;
        recurringEventId: null;
        scheduledJobs: never[];
        rescheduledBy: null;
        destinationCalendarId: null;
        reassignReason: null;
        reassignById: null;
        rescheduled: boolean;
        isRecorded: boolean;
        iCalSequence: number;
        rating: null;
        ratingFeedback: null;
        noShowHost: null;
        cancelledBy: null;
        creationSource: "WEBAPP";
        references: never[];
        payment: never[];
        isDryRun: boolean;
        paymentRequired: boolean;
        paymentUid: undefined;
        luckyUsers: never[];
        paymentId: undefined;
        seatReferenceUid: undefined;
        isShortCircuitedBooking: boolean;
    } | {
        luckyUsers?: number[] | undefined;
        troubleshooterData?: {
            organizerUser: {
                id: number;
            } | null;
            eventType: {
                id: number;
                slug: string;
            };
            allHostUsers: number[];
            luckyUsers: number[];
            luckyUserPool: number[];
            fixedUsers: number[];
            luckyUsersFromFirstBooking: number[];
            usedContactOwnerEmail: string | null;
            askedContactOwnerEmail: string | null;
            isManagedEventType: boolean;
        } | undefined;
        user: {
            email: null;
            name?: string | null | undefined;
            username?: string | null | undefined;
            timeZone?: string | undefined;
        };
        paymentRequired: boolean;
        isDryRun: boolean;
        payment?: {
            success: boolean;
            data: import("@prisma/client/runtime/client").JsonValue;
            id: number;
            refunded: boolean;
            currency: string;
            uid: string;
            appId: string | null;
            externalId: string;
            bookingId: number;
            amount: number;
            fee: number;
            paymentOption: import('../../../../kysely/types.ts').PaymentOption | null;
        }[] | undefined;
        attendees?: {
            name: string;
            id: number;
            email: string;
            locale: string | null;
            timeZone: string;
            phoneNumber: string | null;
            bookingId: number | null;
            noShow: boolean | null;
        }[] | undefined;
        references?: {
            id: number;
            type: string;
            uid: string;
            delegationCredentialId: string | null;
            credentialId: number | null;
            domainWideDelegationCredentialId: string | null;
            bookingId: number | null;
            meetingId: string | null;
            thirdPartyRecurringEventId: string | null;
            meetingPassword: string | null;
            meetingUrl: string | null;
            externalCalendarId: string | null;
            deleted: boolean | null;
        }[] | undefined;
        id?: number | undefined;
        title?: string | undefined;
        metadata?: import("@prisma/client/runtime/client").JsonValue | undefined;
        status?: import('../../../../kysely/types.ts').BookingStatus | undefined;
        description?: string | null | undefined;
        paid?: boolean | undefined;
        location?: string | null | undefined;
        rescheduled?: boolean | null | undefined;
        rating?: number | null | undefined;
        uid?: string | undefined;
        userId?: number | null | undefined;
        eventTypeId?: number | null | undefined;
        createdAt?: Date | undefined;
        updatedAt?: Date | null | undefined;
        startTime?: Date | undefined;
        endTime?: Date | undefined;
        creationSource?: import('../../../../kysely/types.ts').CreationSource | null | undefined;
        idempotencyKey?: string | null | undefined;
        userPrimaryEmail?: string | null | undefined;
        customInputs?: import("@prisma/client/runtime/client").JsonValue | undefined;
        responses?: import("@prisma/client/runtime/client").JsonValue | undefined;
        destinationCalendarId?: number | null | undefined;
        cancellationReason?: string | null | undefined;
        rejectionReason?: string | null | undefined;
        reassignReason?: string | null | undefined;
        reassignById?: number | null | undefined;
        dynamicEventSlugRef?: string | null | undefined;
        dynamicGroupSlugRef?: string | null | undefined;
        fromReschedule?: string | null | undefined;
        recurringEventId?: string | null | undefined;
        smsReminderNumber?: string | null | undefined;
        scheduledJobs?: string[] | undefined;
        isRecorded?: boolean | undefined;
        iCalUID?: string | null | undefined;
        iCalSequence?: number | undefined;
        ratingFeedback?: string | null | undefined;
        noShowHost?: boolean | null | undefined;
        oneTimePassword?: string | null | undefined;
        cancelledBy?: string | null | undefined;
        rescheduledBy?: string | null | undefined;
        appsStatus?: AppsStatus[];
        seatReferenceUid?: string;
        paymentUid?: string;
        message?: string;
        paymentId?: number;
        isShortCircuitedBooking?: undefined;
    } | {
        troubleshooterData?: {
            organizerUser: {
                id: number;
            } | null;
            eventType: {
                id: number;
                slug: string;
            };
            allHostUsers: number[];
            luckyUsers: number[];
            luckyUserPool: number[];
            fixedUsers: number[];
            luckyUsersFromFirstBooking: number[];
            usedContactOwnerEmail: string | null;
            askedContactOwnerEmail: string | null;
            isManagedEventType: boolean;
        } | undefined;
        message: string;
        paymentRequired: boolean;
        paymentUid: string | undefined;
        paymentId: number | undefined;
        isDryRun: boolean;
        luckyUsers?: number[] | undefined;
        user: {
            email: null;
            name: string | null;
            username: string | null;
            timeZone: string;
        };
        videoCallUrl: any;
        seatReferenceUid: string | undefined;
        payment: {
            success: boolean;
            data: import("@prisma/client/runtime/client").JsonValue;
            id: number;
            refunded: boolean;
            currency: string;
            uid: string;
            appId: string | null;
            externalId: string;
            bookingId: number;
            amount: number;
            fee: number;
            paymentOption: import('../../../../kysely/types.ts').PaymentOption | null;
        }[];
        attendees: {
            name: string;
            id: number;
            email: string;
            locale: string | null;
            timeZone: string;
            phoneNumber: string | null;
            bookingId: number | null;
            noShow: boolean | null;
        }[];
        references: {
            id: number;
            type: string;
            uid: string;
            delegationCredentialId: string | null;
            credentialId: number | null;
            domainWideDelegationCredentialId: string | null;
            bookingId: number | null;
            meetingId: string | null;
            thirdPartyRecurringEventId: string | null;
            meetingPassword: string | null;
            meetingUrl: string | null;
            externalCalendarId: string | null;
            deleted: boolean | null;
        }[];
        id: number;
        title: string;
        metadata: import("@prisma/client/runtime/client").JsonValue | null;
        status: import('../../../../kysely/types.ts').BookingStatus;
        description: string | null;
        paid: boolean;
        location: string | null;
        rescheduled: boolean | null;
        rating: number | null;
        uid: string;
        userId: number | null;
        eventTypeId: number | null;
        createdAt: Date;
        updatedAt: Date | null;
        startTime: Date;
        endTime: Date;
        creationSource: import('../../../../kysely/types.ts').CreationSource | null;
        idempotencyKey: string | null;
        userPrimaryEmail: string | null;
        customInputs: import("@prisma/client/runtime/client").JsonValue | null;
        responses: import("@prisma/client/runtime/client").JsonValue | null;
        destinationCalendarId: number | null;
        cancellationReason: string | null;
        rejectionReason: string | null;
        reassignReason: string | null;
        reassignById: number | null;
        dynamicEventSlugRef: string | null;
        dynamicGroupSlugRef: string | null;
        fromReschedule: string | null;
        recurringEventId: string | null;
        smsReminderNumber: string | null;
        scheduledJobs: string[];
        isRecorded: boolean;
        iCalUID: string | null;
        iCalSequence: number;
        ratingFeedback: string | null;
        noShowHost: boolean | null;
        oneTimePassword: string | null;
        cancelledBy: string | null;
        rescheduledBy: string | null;
        isShortCircuitedBooking?: boolean;
        appsStatus?: AppsStatus[];
    } | {
        references: PartialReference[];
        seatReferenceUid: string | undefined;
        videoCallUrl: any;
        troubleshooterData?: {
            organizerUser: {
                id: number;
            } | null;
            eventType: {
                id: number;
                slug: string;
            };
            allHostUsers: number[];
            luckyUsers: number[];
            luckyUserPool: number[];
            fixedUsers: number[];
            luckyUsersFromFirstBooking: number[];
            usedContactOwnerEmail: string | null;
            askedContactOwnerEmail: string | null;
            isManagedEventType: boolean;
        } | undefined;
        isDryRun: boolean;
        luckyUsers?: number[] | undefined;
        user: {
            email: null;
            name?: string | null | undefined;
            username?: string | null | undefined;
            timeZone?: string | undefined;
        };
        paymentRequired: boolean;
        payment: {
            success: boolean;
            data: import("@prisma/client/runtime/client").JsonValue;
            id: number;
            refunded: boolean;
            currency: string;
            uid: string;
            appId: string | null;
            externalId: string;
            bookingId: number;
            amount: number;
            fee: number;
            paymentOption: import('../../../../kysely/types.ts').PaymentOption | null;
        }[];
        attendees: {
            name: string;
            id: number;
            email: string;
            locale: string | null;
            timeZone: string;
            phoneNumber: string | null;
            bookingId: number | null;
            noShow: boolean | null;
        }[];
        id: number;
        title: string;
        metadata: import("@prisma/client/runtime/client").JsonValue | null;
        status: import('../../../../kysely/types.ts').BookingStatus;
        description: string | null;
        paid: boolean;
        location: string | null;
        rescheduled: boolean | null;
        rating: number | null;
        uid: string;
        userId: number | null;
        eventTypeId: number | null;
        createdAt: Date;
        updatedAt: Date | null;
        startTime: Date;
        endTime: Date;
        creationSource: import('../../../../kysely/types.ts').CreationSource | null;
        idempotencyKey: string | null;
        userPrimaryEmail: string | null;
        customInputs: import("@prisma/client/runtime/client").JsonValue | null;
        responses: import("@prisma/client/runtime/client").JsonValue | null;
        destinationCalendarId: number | null;
        cancellationReason: string | null;
        rejectionReason: string | null;
        reassignReason: string | null;
        reassignById: number | null;
        dynamicEventSlugRef: string | null;
        dynamicGroupSlugRef: string | null;
        fromReschedule: string | null;
        recurringEventId: string | null;
        smsReminderNumber: string | null;
        scheduledJobs: string[];
        isRecorded: boolean;
        iCalUID: string | null;
        iCalSequence: number;
        ratingFeedback: string | null;
        noShowHost: boolean | null;
        oneTimePassword: string | null;
        cancelledBy: string | null;
        rescheduledBy: string | null;
        isShortCircuitedBooking?: boolean;
        appsStatus?: AppsStatus[];
        paymentUid?: string;
        paymentId?: number;
    }>;
    rescheduleBooking(input: {
        bookingData: CreateRegularBookingData;
        bookingMeta?: CreateBookingMeta;
    }): Promise<{
        id: number;
        uid: short.SUUID;
        iCalUID: string;
        status: "ACCEPTED";
        eventTypeId: number;
        user: {
            name: string;
            timeZone: string;
            email: null;
        };
        userId: null;
        title: string;
        startTime: Date;
        endTime: Date;
        createdAt: Date;
        updatedAt: Date;
        attendees: {
            id: number;
            email: string;
            name: string;
            timeZone: string;
            locale: null;
            phoneNumber: null;
            bookingId: null;
            noShow: null;
        }[];
        oneTimePassword: null;
        smsReminderNumber: null;
        metadata: {};
        idempotencyKey: null;
        userPrimaryEmail: null;
        description: string | null;
        customInputs: null;
        responses: null;
        location: string;
        paid: boolean;
        cancellationReason: null;
        rejectionReason: null;
        dynamicEventSlugRef: null;
        dynamicGroupSlugRef: null;
        fromReschedule: null;
        recurringEventId: null;
        scheduledJobs: never[];
        rescheduledBy: null;
        destinationCalendarId: null;
        reassignReason: null;
        reassignById: null;
        rescheduled: boolean;
        isRecorded: boolean;
        iCalSequence: number;
        rating: null;
        ratingFeedback: null;
        noShowHost: null;
        cancelledBy: null;
        creationSource: "WEBAPP";
        references: never[];
        payment: never[];
        isDryRun: boolean;
        paymentRequired: boolean;
        paymentUid: undefined;
        luckyUsers: never[];
        paymentId: undefined;
        seatReferenceUid: undefined;
        isShortCircuitedBooking: boolean;
    } | {
        luckyUsers?: number[] | undefined;
        troubleshooterData?: {
            organizerUser: {
                id: number;
            } | null;
            eventType: {
                id: number;
                slug: string;
            };
            allHostUsers: number[];
            luckyUsers: number[];
            luckyUserPool: number[];
            fixedUsers: number[];
            luckyUsersFromFirstBooking: number[];
            usedContactOwnerEmail: string | null;
            askedContactOwnerEmail: string | null;
            isManagedEventType: boolean;
        } | undefined;
        user: {
            email: null;
            name?: string | null | undefined;
            username?: string | null | undefined;
            timeZone?: string | undefined;
        };
        paymentRequired: boolean;
        isDryRun: boolean;
        payment?: {
            success: boolean;
            data: import("@prisma/client/runtime/client").JsonValue;
            id: number;
            refunded: boolean;
            currency: string;
            uid: string;
            appId: string | null;
            externalId: string;
            bookingId: number;
            amount: number;
            fee: number;
            paymentOption: import('../../../../kysely/types.ts').PaymentOption | null;
        }[] | undefined;
        attendees?: {
            name: string;
            id: number;
            email: string;
            locale: string | null;
            timeZone: string;
            phoneNumber: string | null;
            bookingId: number | null;
            noShow: boolean | null;
        }[] | undefined;
        references?: {
            id: number;
            type: string;
            uid: string;
            delegationCredentialId: string | null;
            credentialId: number | null;
            domainWideDelegationCredentialId: string | null;
            bookingId: number | null;
            meetingId: string | null;
            thirdPartyRecurringEventId: string | null;
            meetingPassword: string | null;
            meetingUrl: string | null;
            externalCalendarId: string | null;
            deleted: boolean | null;
        }[] | undefined;
        id?: number | undefined;
        title?: string | undefined;
        metadata?: import("@prisma/client/runtime/client").JsonValue | undefined;
        status?: import('../../../../kysely/types.ts').BookingStatus | undefined;
        description?: string | null | undefined;
        paid?: boolean | undefined;
        location?: string | null | undefined;
        rescheduled?: boolean | null | undefined;
        rating?: number | null | undefined;
        uid?: string | undefined;
        userId?: number | null | undefined;
        eventTypeId?: number | null | undefined;
        createdAt?: Date | undefined;
        updatedAt?: Date | null | undefined;
        startTime?: Date | undefined;
        endTime?: Date | undefined;
        creationSource?: import('../../../../kysely/types.ts').CreationSource | null | undefined;
        idempotencyKey?: string | null | undefined;
        userPrimaryEmail?: string | null | undefined;
        customInputs?: import("@prisma/client/runtime/client").JsonValue | undefined;
        responses?: import("@prisma/client/runtime/client").JsonValue | undefined;
        destinationCalendarId?: number | null | undefined;
        cancellationReason?: string | null | undefined;
        rejectionReason?: string | null | undefined;
        reassignReason?: string | null | undefined;
        reassignById?: number | null | undefined;
        dynamicEventSlugRef?: string | null | undefined;
        dynamicGroupSlugRef?: string | null | undefined;
        fromReschedule?: string | null | undefined;
        recurringEventId?: string | null | undefined;
        smsReminderNumber?: string | null | undefined;
        scheduledJobs?: string[] | undefined;
        isRecorded?: boolean | undefined;
        iCalUID?: string | null | undefined;
        iCalSequence?: number | undefined;
        ratingFeedback?: string | null | undefined;
        noShowHost?: boolean | null | undefined;
        oneTimePassword?: string | null | undefined;
        cancelledBy?: string | null | undefined;
        rescheduledBy?: string | null | undefined;
        appsStatus?: AppsStatus[];
        seatReferenceUid?: string;
        paymentUid?: string;
        message?: string;
        paymentId?: number;
        isShortCircuitedBooking?: undefined;
    } | {
        troubleshooterData?: {
            organizerUser: {
                id: number;
            } | null;
            eventType: {
                id: number;
                slug: string;
            };
            allHostUsers: number[];
            luckyUsers: number[];
            luckyUserPool: number[];
            fixedUsers: number[];
            luckyUsersFromFirstBooking: number[];
            usedContactOwnerEmail: string | null;
            askedContactOwnerEmail: string | null;
            isManagedEventType: boolean;
        } | undefined;
        message: string;
        paymentRequired: boolean;
        paymentUid: string | undefined;
        paymentId: number | undefined;
        isDryRun: boolean;
        luckyUsers?: number[] | undefined;
        user: {
            email: null;
            name: string | null;
            username: string | null;
            timeZone: string;
        };
        videoCallUrl: any;
        seatReferenceUid: string | undefined;
        payment: {
            success: boolean;
            data: import("@prisma/client/runtime/client").JsonValue;
            id: number;
            refunded: boolean;
            currency: string;
            uid: string;
            appId: string | null;
            externalId: string;
            bookingId: number;
            amount: number;
            fee: number;
            paymentOption: import('../../../../kysely/types.ts').PaymentOption | null;
        }[];
        attendees: {
            name: string;
            id: number;
            email: string;
            locale: string | null;
            timeZone: string;
            phoneNumber: string | null;
            bookingId: number | null;
            noShow: boolean | null;
        }[];
        references: {
            id: number;
            type: string;
            uid: string;
            delegationCredentialId: string | null;
            credentialId: number | null;
            domainWideDelegationCredentialId: string | null;
            bookingId: number | null;
            meetingId: string | null;
            thirdPartyRecurringEventId: string | null;
            meetingPassword: string | null;
            meetingUrl: string | null;
            externalCalendarId: string | null;
            deleted: boolean | null;
        }[];
        id: number;
        title: string;
        metadata: import("@prisma/client/runtime/client").JsonValue | null;
        status: import('../../../../kysely/types.ts').BookingStatus;
        description: string | null;
        paid: boolean;
        location: string | null;
        rescheduled: boolean | null;
        rating: number | null;
        uid: string;
        userId: number | null;
        eventTypeId: number | null;
        createdAt: Date;
        updatedAt: Date | null;
        startTime: Date;
        endTime: Date;
        creationSource: import('../../../../kysely/types.ts').CreationSource | null;
        idempotencyKey: string | null;
        userPrimaryEmail: string | null;
        customInputs: import("@prisma/client/runtime/client").JsonValue | null;
        responses: import("@prisma/client/runtime/client").JsonValue | null;
        destinationCalendarId: number | null;
        cancellationReason: string | null;
        rejectionReason: string | null;
        reassignReason: string | null;
        reassignById: number | null;
        dynamicEventSlugRef: string | null;
        dynamicGroupSlugRef: string | null;
        fromReschedule: string | null;
        recurringEventId: string | null;
        smsReminderNumber: string | null;
        scheduledJobs: string[];
        isRecorded: boolean;
        iCalUID: string | null;
        iCalSequence: number;
        ratingFeedback: string | null;
        noShowHost: boolean | null;
        oneTimePassword: string | null;
        cancelledBy: string | null;
        rescheduledBy: string | null;
        isShortCircuitedBooking?: boolean;
        appsStatus?: AppsStatus[];
    } | {
        references: PartialReference[];
        seatReferenceUid: string | undefined;
        videoCallUrl: any;
        troubleshooterData?: {
            organizerUser: {
                id: number;
            } | null;
            eventType: {
                id: number;
                slug: string;
            };
            allHostUsers: number[];
            luckyUsers: number[];
            luckyUserPool: number[];
            fixedUsers: number[];
            luckyUsersFromFirstBooking: number[];
            usedContactOwnerEmail: string | null;
            askedContactOwnerEmail: string | null;
            isManagedEventType: boolean;
        } | undefined;
        isDryRun: boolean;
        luckyUsers?: number[] | undefined;
        user: {
            email: null;
            name?: string | null | undefined;
            username?: string | null | undefined;
            timeZone?: string | undefined;
        };
        paymentRequired: boolean;
        payment: {
            success: boolean;
            data: import("@prisma/client/runtime/client").JsonValue;
            id: number;
            refunded: boolean;
            currency: string;
            uid: string;
            appId: string | null;
            externalId: string;
            bookingId: number;
            amount: number;
            fee: number;
            paymentOption: import('../../../../kysely/types.ts').PaymentOption | null;
        }[];
        attendees: {
            name: string;
            id: number;
            email: string;
            locale: string | null;
            timeZone: string;
            phoneNumber: string | null;
            bookingId: number | null;
            noShow: boolean | null;
        }[];
        id: number;
        title: string;
        metadata: import("@prisma/client/runtime/client").JsonValue | null;
        status: import('../../../../kysely/types.ts').BookingStatus;
        description: string | null;
        paid: boolean;
        location: string | null;
        rescheduled: boolean | null;
        rating: number | null;
        uid: string;
        userId: number | null;
        eventTypeId: number | null;
        createdAt: Date;
        updatedAt: Date | null;
        startTime: Date;
        endTime: Date;
        creationSource: import('../../../../kysely/types.ts').CreationSource | null;
        idempotencyKey: string | null;
        userPrimaryEmail: string | null;
        customInputs: import("@prisma/client/runtime/client").JsonValue | null;
        responses: import("@prisma/client/runtime/client").JsonValue | null;
        destinationCalendarId: number | null;
        cancellationReason: string | null;
        rejectionReason: string | null;
        reassignReason: string | null;
        reassignById: number | null;
        dynamicEventSlugRef: string | null;
        dynamicGroupSlugRef: string | null;
        fromReschedule: string | null;
        recurringEventId: string | null;
        smsReminderNumber: string | null;
        scheduledJobs: string[];
        isRecorded: boolean;
        iCalUID: string | null;
        iCalSequence: number;
        ratingFeedback: string | null;
        noShowHost: boolean | null;
        oneTimePassword: string | null;
        cancelledBy: string | null;
        rescheduledBy: string | null;
        isShortCircuitedBooking?: boolean;
        appsStatus?: AppsStatus[];
        paymentUid?: string;
        paymentId?: number;
    }>;
    /**
     * @deprecated Exists only till API v1 is removed.
     */
    createBookingForApiV1(input: {
        bookingData: CreateRegularBookingData;
        bookingMeta?: CreateBookingMeta;
        bookingDataSchemaGetter: BookingDataSchemaGetter;
    }): Promise<{
        id: number;
        uid: short.SUUID;
        iCalUID: string;
        status: "ACCEPTED";
        eventTypeId: number;
        user: {
            name: string;
            timeZone: string;
            email: null;
        };
        userId: null;
        title: string;
        startTime: Date;
        endTime: Date;
        createdAt: Date;
        updatedAt: Date;
        attendees: {
            id: number;
            email: string;
            name: string;
            timeZone: string;
            locale: null;
            phoneNumber: null;
            bookingId: null;
            noShow: null;
        }[];
        oneTimePassword: null;
        smsReminderNumber: null;
        metadata: {};
        idempotencyKey: null;
        userPrimaryEmail: null;
        description: string | null;
        customInputs: null;
        responses: null;
        location: string;
        paid: boolean;
        cancellationReason: null;
        rejectionReason: null;
        dynamicEventSlugRef: null;
        dynamicGroupSlugRef: null;
        fromReschedule: null;
        recurringEventId: null;
        scheduledJobs: never[];
        rescheduledBy: null;
        destinationCalendarId: null;
        reassignReason: null;
        reassignById: null;
        rescheduled: boolean;
        isRecorded: boolean;
        iCalSequence: number;
        rating: null;
        ratingFeedback: null;
        noShowHost: null;
        cancelledBy: null;
        creationSource: "WEBAPP";
        references: never[];
        payment: never[];
        isDryRun: boolean;
        paymentRequired: boolean;
        paymentUid: undefined;
        luckyUsers: never[];
        paymentId: undefined;
        seatReferenceUid: undefined;
        isShortCircuitedBooking: boolean;
    } | {
        luckyUsers?: number[] | undefined;
        troubleshooterData?: {
            organizerUser: {
                id: number;
            } | null;
            eventType: {
                id: number;
                slug: string;
            };
            allHostUsers: number[];
            luckyUsers: number[];
            luckyUserPool: number[];
            fixedUsers: number[];
            luckyUsersFromFirstBooking: number[];
            usedContactOwnerEmail: string | null;
            askedContactOwnerEmail: string | null;
            isManagedEventType: boolean;
        } | undefined;
        user: {
            email: null;
            name?: string | null | undefined;
            username?: string | null | undefined;
            timeZone?: string | undefined;
        };
        paymentRequired: boolean;
        isDryRun: boolean;
        payment?: {
            success: boolean;
            data: import("@prisma/client/runtime/client").JsonValue;
            id: number;
            refunded: boolean;
            currency: string;
            uid: string;
            appId: string | null;
            externalId: string;
            bookingId: number;
            amount: number;
            fee: number;
            paymentOption: import('../../../../kysely/types.ts').PaymentOption | null;
        }[] | undefined;
        attendees?: {
            name: string;
            id: number;
            email: string;
            locale: string | null;
            timeZone: string;
            phoneNumber: string | null;
            bookingId: number | null;
            noShow: boolean | null;
        }[] | undefined;
        references?: {
            id: number;
            type: string;
            uid: string;
            delegationCredentialId: string | null;
            credentialId: number | null;
            domainWideDelegationCredentialId: string | null;
            bookingId: number | null;
            meetingId: string | null;
            thirdPartyRecurringEventId: string | null;
            meetingPassword: string | null;
            meetingUrl: string | null;
            externalCalendarId: string | null;
            deleted: boolean | null;
        }[] | undefined;
        id?: number | undefined;
        title?: string | undefined;
        metadata?: import("@prisma/client/runtime/client").JsonValue | undefined;
        status?: import('../../../../kysely/types.ts').BookingStatus | undefined;
        description?: string | null | undefined;
        paid?: boolean | undefined;
        location?: string | null | undefined;
        rescheduled?: boolean | null | undefined;
        rating?: number | null | undefined;
        uid?: string | undefined;
        userId?: number | null | undefined;
        eventTypeId?: number | null | undefined;
        createdAt?: Date | undefined;
        updatedAt?: Date | null | undefined;
        startTime?: Date | undefined;
        endTime?: Date | undefined;
        creationSource?: import('../../../../kysely/types.ts').CreationSource | null | undefined;
        idempotencyKey?: string | null | undefined;
        userPrimaryEmail?: string | null | undefined;
        customInputs?: import("@prisma/client/runtime/client").JsonValue | undefined;
        responses?: import("@prisma/client/runtime/client").JsonValue | undefined;
        destinationCalendarId?: number | null | undefined;
        cancellationReason?: string | null | undefined;
        rejectionReason?: string | null | undefined;
        reassignReason?: string | null | undefined;
        reassignById?: number | null | undefined;
        dynamicEventSlugRef?: string | null | undefined;
        dynamicGroupSlugRef?: string | null | undefined;
        fromReschedule?: string | null | undefined;
        recurringEventId?: string | null | undefined;
        smsReminderNumber?: string | null | undefined;
        scheduledJobs?: string[] | undefined;
        isRecorded?: boolean | undefined;
        iCalUID?: string | null | undefined;
        iCalSequence?: number | undefined;
        ratingFeedback?: string | null | undefined;
        noShowHost?: boolean | null | undefined;
        oneTimePassword?: string | null | undefined;
        cancelledBy?: string | null | undefined;
        rescheduledBy?: string | null | undefined;
        appsStatus?: AppsStatus[];
        seatReferenceUid?: string;
        paymentUid?: string;
        message?: string;
        paymentId?: number;
        isShortCircuitedBooking?: undefined;
    } | {
        troubleshooterData?: {
            organizerUser: {
                id: number;
            } | null;
            eventType: {
                id: number;
                slug: string;
            };
            allHostUsers: number[];
            luckyUsers: number[];
            luckyUserPool: number[];
            fixedUsers: number[];
            luckyUsersFromFirstBooking: number[];
            usedContactOwnerEmail: string | null;
            askedContactOwnerEmail: string | null;
            isManagedEventType: boolean;
        } | undefined;
        message: string;
        paymentRequired: boolean;
        paymentUid: string | undefined;
        paymentId: number | undefined;
        isDryRun: boolean;
        luckyUsers?: number[] | undefined;
        user: {
            email: null;
            name: string | null;
            username: string | null;
            timeZone: string;
        };
        videoCallUrl: any;
        seatReferenceUid: string | undefined;
        payment: {
            success: boolean;
            data: import("@prisma/client/runtime/client").JsonValue;
            id: number;
            refunded: boolean;
            currency: string;
            uid: string;
            appId: string | null;
            externalId: string;
            bookingId: number;
            amount: number;
            fee: number;
            paymentOption: import('../../../../kysely/types.ts').PaymentOption | null;
        }[];
        attendees: {
            name: string;
            id: number;
            email: string;
            locale: string | null;
            timeZone: string;
            phoneNumber: string | null;
            bookingId: number | null;
            noShow: boolean | null;
        }[];
        references: {
            id: number;
            type: string;
            uid: string;
            delegationCredentialId: string | null;
            credentialId: number | null;
            domainWideDelegationCredentialId: string | null;
            bookingId: number | null;
            meetingId: string | null;
            thirdPartyRecurringEventId: string | null;
            meetingPassword: string | null;
            meetingUrl: string | null;
            externalCalendarId: string | null;
            deleted: boolean | null;
        }[];
        id: number;
        title: string;
        metadata: import("@prisma/client/runtime/client").JsonValue | null;
        status: import('../../../../kysely/types.ts').BookingStatus;
        description: string | null;
        paid: boolean;
        location: string | null;
        rescheduled: boolean | null;
        rating: number | null;
        uid: string;
        userId: number | null;
        eventTypeId: number | null;
        createdAt: Date;
        updatedAt: Date | null;
        startTime: Date;
        endTime: Date;
        creationSource: import('../../../../kysely/types.ts').CreationSource | null;
        idempotencyKey: string | null;
        userPrimaryEmail: string | null;
        customInputs: import("@prisma/client/runtime/client").JsonValue | null;
        responses: import("@prisma/client/runtime/client").JsonValue | null;
        destinationCalendarId: number | null;
        cancellationReason: string | null;
        rejectionReason: string | null;
        reassignReason: string | null;
        reassignById: number | null;
        dynamicEventSlugRef: string | null;
        dynamicGroupSlugRef: string | null;
        fromReschedule: string | null;
        recurringEventId: string | null;
        smsReminderNumber: string | null;
        scheduledJobs: string[];
        isRecorded: boolean;
        iCalUID: string | null;
        iCalSequence: number;
        ratingFeedback: string | null;
        noShowHost: boolean | null;
        oneTimePassword: string | null;
        cancelledBy: string | null;
        rescheduledBy: string | null;
        isShortCircuitedBooking?: boolean;
        appsStatus?: AppsStatus[];
    } | {
        references: PartialReference[];
        seatReferenceUid: string | undefined;
        videoCallUrl: any;
        troubleshooterData?: {
            organizerUser: {
                id: number;
            } | null;
            eventType: {
                id: number;
                slug: string;
            };
            allHostUsers: number[];
            luckyUsers: number[];
            luckyUserPool: number[];
            fixedUsers: number[];
            luckyUsersFromFirstBooking: number[];
            usedContactOwnerEmail: string | null;
            askedContactOwnerEmail: string | null;
            isManagedEventType: boolean;
        } | undefined;
        isDryRun: boolean;
        luckyUsers?: number[] | undefined;
        user: {
            email: null;
            name?: string | null | undefined;
            username?: string | null | undefined;
            timeZone?: string | undefined;
        };
        paymentRequired: boolean;
        payment: {
            success: boolean;
            data: import("@prisma/client/runtime/client").JsonValue;
            id: number;
            refunded: boolean;
            currency: string;
            uid: string;
            appId: string | null;
            externalId: string;
            bookingId: number;
            amount: number;
            fee: number;
            paymentOption: import('../../../../kysely/types.ts').PaymentOption | null;
        }[];
        attendees: {
            name: string;
            id: number;
            email: string;
            locale: string | null;
            timeZone: string;
            phoneNumber: string | null;
            bookingId: number | null;
            noShow: boolean | null;
        }[];
        id: number;
        title: string;
        metadata: import("@prisma/client/runtime/client").JsonValue | null;
        status: import('../../../../kysely/types.ts').BookingStatus;
        description: string | null;
        paid: boolean;
        location: string | null;
        rescheduled: boolean | null;
        rating: number | null;
        uid: string;
        userId: number | null;
        eventTypeId: number | null;
        createdAt: Date;
        updatedAt: Date | null;
        startTime: Date;
        endTime: Date;
        creationSource: import('../../../../kysely/types.ts').CreationSource | null;
        idempotencyKey: string | null;
        userPrimaryEmail: string | null;
        customInputs: import("@prisma/client/runtime/client").JsonValue | null;
        responses: import("@prisma/client/runtime/client").JsonValue | null;
        destinationCalendarId: number | null;
        cancellationReason: string | null;
        rejectionReason: string | null;
        reassignReason: string | null;
        reassignById: number | null;
        dynamicEventSlugRef: string | null;
        dynamicGroupSlugRef: string | null;
        fromReschedule: string | null;
        recurringEventId: string | null;
        smsReminderNumber: string | null;
        scheduledJobs: string[];
        isRecorded: boolean;
        iCalUID: string | null;
        iCalSequence: number;
        ratingFeedback: string | null;
        noShowHost: boolean | null;
        oneTimePassword: string | null;
        cancelledBy: string | null;
        rescheduledBy: string | null;
        isShortCircuitedBooking?: boolean;
        appsStatus?: AppsStatus[];
        paymentUid?: string;
        paymentId?: number;
    }>;
}
//# sourceMappingURL=RegularBookingService.d.ts.map