import type { DestinationCalendar, User } from '../../../prisma-client';
import { SchedulingType } from '../../../prisma/enums';
import type { AppsStatus, CalendarEvent } from "@calcom/types/Calendar";
import type { PartialReference } from "@calcom/types/EventManager";
import getBookingDataSchema from "./getBookingDataSchema";
type BookingDataSchemaGetter = typeof getBookingDataSchema | typeof import('./getBookingDataSchemaForApi').default;
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 type PlatformParams = {
    platformClientId?: string;
    platformCancelUrl?: string;
    platformBookingUrl?: string;
    platformRescheduleUrl?: string;
    platformBookingLocation?: string;
    areCalendarEventsEnabled?: boolean;
};
export type BookingHandlerInput = {
    bookingData: Record<string, any>;
    userId?: number;
    hostname?: string;
    forcedSlug?: string;
} & PlatformParams;
declare function handler(input: BookingHandlerInput, bookingDataSchemaGetter?: BookingDataSchemaGetter): Promise<{
    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').Prisma.JsonValue;
        id: number;
        refunded: boolean;
        currency: string;
        uid: string;
        paymentOption: import('../../../prisma-client').$Enums.PaymentOption | null;
        bookingId: number;
        externalId: string;
        appId: string | null;
        amount: number;
        fee: number;
    }[] | undefined;
    attendees?: {
        name: string;
        id: number;
        email: string;
        locale: string | null;
        timeZone: string;
        bookingId: number | null;
        phoneNumber: string | null;
        noShow: boolean | null;
    }[] | undefined;
    references?: {
        id: number;
        type: string;
        uid: string;
        credentialId: number | null;
        deleted: boolean | null;
        bookingId: number | null;
        thirdPartyRecurringEventId: string | null;
        delegationCredentialId: string | null;
        domainWideDelegationCredentialId: string | null;
        meetingId: string | null;
        meetingPassword: string | null;
        meetingUrl: string | null;
        externalCalendarId: string | null;
    }[] | undefined;
    id?: number | undefined;
    title?: string | undefined;
    metadata?: import('../../../prisma-client').Prisma.JsonValue | undefined;
    status?: import('../../../prisma-client').$Enums.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;
    customInputs?: import('../../../prisma-client').Prisma.JsonValue | undefined;
    smsReminderNumber?: string | null | undefined;
    recurringEventId?: string | null | undefined;
    cancellationReason?: string | null | undefined;
    cancelledBy?: string | null | undefined;
    iCalUID?: string | null | undefined;
    responses?: import('../../../prisma-client').Prisma.JsonValue | undefined;
    startTime?: Date | undefined;
    endTime?: Date | undefined;
    idempotencyKey?: string | null | undefined;
    userPrimaryEmail?: string | null | undefined;
    createdAt?: Date | undefined;
    updatedAt?: Date | null | undefined;
    destinationCalendarId?: number | 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;
    scheduledJobs?: string[] | undefined;
    isRecorded?: boolean | undefined;
    iCalSequence?: number | undefined;
    ratingFeedback?: string | null | undefined;
    noShowHost?: boolean | null | undefined;
    oneTimePassword?: string | null | undefined;
    rescheduledBy?: string | null | undefined;
    creationSource?: import('../../../prisma-client').$Enums.CreationSource | null | undefined;
    appsStatus?: AppsStatus[];
    seatReferenceUid?: string;
    paymentUid?: string;
    message?: string;
    paymentId?: number;
} | {
    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').Prisma.JsonValue;
        id: number;
        refunded: boolean;
        currency: string;
        uid: string;
        paymentOption: import('../../../prisma-client').$Enums.PaymentOption | null;
        bookingId: number;
        externalId: string;
        appId: string | null;
        amount: number;
        fee: number;
    }[];
    attendees: {
        name: string;
        id: number;
        email: string;
        locale: string | null;
        timeZone: string;
        bookingId: number | null;
        phoneNumber: string | null;
        noShow: boolean | null;
    }[];
    references: {
        id: number;
        type: string;
        uid: string;
        credentialId: number | null;
        deleted: boolean | null;
        bookingId: number | null;
        thirdPartyRecurringEventId: string | null;
        delegationCredentialId: string | null;
        domainWideDelegationCredentialId: string | null;
        meetingId: string | null;
        meetingPassword: string | null;
        meetingUrl: string | null;
        externalCalendarId: string | null;
    }[];
    id: number;
    title: string;
    metadata: import('../../../prisma-client').Prisma.JsonValue;
    status: import('../../../prisma-client').$Enums.BookingStatus;
    description: string | null;
    paid: boolean;
    location: string | null;
    rescheduled: boolean | null;
    rating: number | null;
    uid: string;
    userId: number | null;
    eventTypeId: number | null;
    customInputs: import('../../../prisma-client').Prisma.JsonValue;
    smsReminderNumber: string | null;
    recurringEventId: string | null;
    cancellationReason: string | null;
    cancelledBy: string | null;
    iCalUID: string | null;
    responses: import('../../../prisma-client').Prisma.JsonValue;
    startTime: Date;
    endTime: Date;
    idempotencyKey: string | null;
    userPrimaryEmail: string | null;
    createdAt: Date;
    updatedAt: Date | null;
    destinationCalendarId: number | null;
    rejectionReason: string | null;
    reassignReason: string | null;
    reassignById: number | null;
    dynamicEventSlugRef: string | null;
    dynamicGroupSlugRef: string | null;
    fromReschedule: string | null;
    scheduledJobs: string[];
    isRecorded: boolean;
    iCalSequence: number;
    ratingFeedback: string | null;
    noShowHost: boolean | null;
    oneTimePassword: string | null;
    rescheduledBy: string | null;
    creationSource: import('../../../prisma-client').$Enums.CreationSource | null;
    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').Prisma.JsonValue;
        id: number;
        refunded: boolean;
        currency: string;
        uid: string;
        paymentOption: import('../../../prisma-client').$Enums.PaymentOption | null;
        bookingId: number;
        externalId: string;
        appId: string | null;
        amount: number;
        fee: number;
    }[];
    attendees: {
        name: string;
        id: number;
        email: string;
        locale: string | null;
        timeZone: string;
        bookingId: number | null;
        phoneNumber: string | null;
        noShow: boolean | null;
    }[];
    id: number;
    title: string;
    metadata: import('../../../prisma-client').Prisma.JsonValue;
    status: import('../../../prisma-client').$Enums.BookingStatus;
    description: string | null;
    paid: boolean;
    location: string | null;
    rescheduled: boolean | null;
    rating: number | null;
    uid: string;
    userId: number | null;
    eventTypeId: number | null;
    customInputs: import('../../../prisma-client').Prisma.JsonValue;
    smsReminderNumber: string | null;
    recurringEventId: string | null;
    cancellationReason: string | null;
    cancelledBy: string | null;
    iCalUID: string | null;
    responses: import('../../../prisma-client').Prisma.JsonValue;
    startTime: Date;
    endTime: Date;
    idempotencyKey: string | null;
    userPrimaryEmail: string | null;
    createdAt: Date;
    updatedAt: Date | null;
    destinationCalendarId: number | null;
    rejectionReason: string | null;
    reassignReason: string | null;
    reassignById: number | null;
    dynamicEventSlugRef: string | null;
    dynamicGroupSlugRef: string | null;
    fromReschedule: string | null;
    scheduledJobs: string[];
    isRecorded: boolean;
    iCalSequence: number;
    ratingFeedback: string | null;
    noShowHost: boolean | null;
    oneTimePassword: string | null;
    rescheduledBy: string | null;
    creationSource: import('../../../prisma-client').$Enums.CreationSource | null;
    appsStatus?: AppsStatus[];
    paymentUid?: string;
    paymentId?: number;
}>;
export default handler;
//# sourceMappingURL=handleNewBooking.d.ts.map