import { Prisma } from '../../../../prisma-client';
import type short from "short-uuid";
import type { z } from "zod";
import type { routingFormResponseInDbSchema } from '../../../../app-store/routing-forms/zod';
import type { CalendarEvent } from "@calcom/types/Calendar";
import type { TgetBookingDataSchema } from "../getBookingDataSchema";
import type { EventTypeId, AwaitedBookingData, NewBookingEventType, PaymentAppData, OriginalRescheduledBooking, LoadedUsers } from "./types";
type ReqBodyWithEnd = TgetBookingDataSchema & {
    end: string;
};
type CreateBookingParams = {
    uid: short.SUUID;
    routingFormResponseId: number | undefined;
    reroutingFormResponses: z.infer<typeof routingFormResponseInDbSchema> | null;
    rescheduledBy: string | undefined;
    reqBody: {
        user: ReqBodyWithEnd["user"];
        metadata: ReqBodyWithEnd["metadata"];
        recurringEventId: ReqBodyWithEnd["recurringEventId"];
    };
    eventType: {
        eventTypeData: NewBookingEventType;
        id: EventTypeId;
        slug: AwaitedBookingData["eventTypeSlug"];
        organizerUser: LoadedUsers[number] & {
            isFixed?: boolean;
            metadata?: Prisma.JsonValue;
        };
        isConfirmedByDefault: boolean;
        paymentAppData: PaymentAppData;
    };
    input: {
        bookerEmail: AwaitedBookingData["email"];
        rescheduleReason: AwaitedBookingData["rescheduleReason"];
        changedOrganizer: boolean;
        smsReminderNumber: AwaitedBookingData["smsReminderNumber"];
        responses: ReqBodyWithEnd["responses"] | null;
    };
    evt: CalendarEvent;
    originalRescheduledBooking: OriginalRescheduledBooking;
};
export declare function createBooking({ uid, reqBody, eventType, input, evt, originalRescheduledBooking, routingFormResponseId, reroutingFormResponses, rescheduledBy, }: CreateBookingParams & {
    rescheduledBy: string | undefined;
}): Promise<{
    user: {
        name: string | null;
        email: string;
        timeZone: string;
        username: 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;
    }[];
    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;
        bookingId: number | null;
        locale: string | null;
        phoneNumber: string | null;
        noShow: boolean | null;
    }[];
} & {
    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;
}>;
export type Booking = Prisma.PromiseReturnType<typeof createBooking>;
export {};
//# sourceMappingURL=createBooking.d.ts.map