import { default as short } from 'short-uuid';
import { z } from 'zod';
import { routingFormResponseInDbSchema } from '../../../../app-store/routing-forms/zod';
import { Prisma } from '../../../../kysely/types.ts';
import { CreationSource } from '../../../../prisma/enums';
import { CalendarEvent } from '@calcom/types/Calendar';
import { TgetBookingDataSchema } from '../getBookingDataSchema';
import { AwaitedBookingData, EventTypeId } from './getBookingData';
import { NewBookingEventType } from './getEventTypesFromDB';
import { LoadedUsers } from './loadUsers';
import { OriginalRescheduledBooking } from './originalRescheduledBookingUtils';
import { PaymentAppData, Tracking } 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"];
        smsReminderNumber: AwaitedBookingData["smsReminderNumber"];
        responses: ReqBodyWithEnd["responses"] | null;
    };
    evt: CalendarEvent;
    originalRescheduledBooking: OriginalRescheduledBooking;
    creationSource?: CreationSource;
    tracking?: Tracking;
};
export declare const createBooking: (args_0: CreateBookingParams & {
    rescheduledBy: string | undefined;
}) => Promise<{
    userUuid: string | null;
    payment: {
        success: boolean;
        refunded: boolean;
        currency: string;
        uid: string;
        amount: number;
        data: import('@prisma/client/runtime/client').JsonValue;
        id: number;
        appId: string | null;
        externalId: string;
        bookingId: number;
        fee: number;
        paymentOption: import('../../../../kysely/types.ts').PaymentOption | null;
    }[];
    attendees: {
        email: string;
        name: string;
        locale: string | null;
        id: number;
        phoneNumber: string | null;
        timeZone: string;
        bookingId: number | null;
        noShow: boolean | null;
    }[];
    user: {
        username: string | null;
        email: string;
        name: string | null;
        timeZone: string;
        uuid: string;
        isPlatformManaged: boolean;
    } | null;
    references: {
        type: string;
        uid: string;
        id: number;
        credentialId: number | null;
        delegationCredentialId: string | 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;
    }[];
    paid: boolean;
    location: string | null;
    title: string;
    description: string | null;
    status: import('../../../../kysely/types.ts').BookingStatus;
    rescheduled: boolean | null;
    rating: number | null;
    uid: string;
    userId: number | null;
    metadata: import('@prisma/client/runtime/client').JsonValue | null;
    id: number;
    eventTypeId: number | null;
    createdAt: Date;
    updatedAt: Date | null;
    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;
    startTime: Date;
    endTime: Date;
    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;
}>;
export type Booking = Awaited<ReturnType<typeof createBooking>>;
export {};
//# sourceMappingURL=createBooking.d.ts.map