import type { Prisma } from '../../../prisma-client';
import type { z } from "zod";
import { bookingResponsesDbSchema } from './getBookingResponsesSchema';
import type { PrismaClient } from '../../../prisma';
type BookingSelect = {
    description: true;
    customInputs: true;
    attendees: {
        select: {
            email: true;
            name: true;
        };
    };
    location: true;
};
declare function getBooking(prisma: PrismaClient, uid: string, isSeatedEvent?: boolean): Promise<(Omit<{
    user: {
        id: number;
    } | null;
    id: number;
    description: string | null;
    location: string | null;
    attendees: {
        name: string;
        email: string;
        bookingSeat: {
            data: Prisma.JsonValue;
            id: number;
            metadata: Prisma.JsonValue;
            bookingId: number;
            referenceUid: string;
            attendeeId: number;
        } | null;
    }[];
    uid: string;
    eventTypeId: number | null;
    customInputs: Prisma.JsonValue;
    smsReminderNumber: string | null;
    responses: Prisma.JsonValue;
    startTime: Date;
    endTime: Date;
}, "responses"> & {
    responses: z.infer<typeof bookingResponsesDbSchema>;
}) | null>;
export type GetBookingType = Prisma.PromiseReturnType<typeof getBooking>;
export declare const getBookingWithResponses: <T extends Prisma.BookingGetPayload<{
    select: BookingSelect & {
        responses: true;
    };
}>>(booking: T, isSeatedEvent?: boolean) => Omit<T, "responses"> & {
    responses: z.infer<typeof bookingResponsesDbSchema>;
};
export default getBooking;
export declare const getBookingForReschedule: (uid: string, userId?: number) => Promise<{
    attendees: {
        name: string;
        email: string;
        bookingSeat: {
            data: Prisma.JsonValue;
            id: number;
            metadata: Prisma.JsonValue;
            bookingId: number;
            referenceUid: string;
            attendeeId: number;
        } | null;
    }[];
    user: {
        id: number;
    } | null;
    id: number;
    description: string | null;
    location: string | null;
    uid: string;
    eventTypeId: number | null;
    customInputs: Prisma.JsonValue;
    smsReminderNumber: string | null;
    startTime: Date;
    endTime: Date;
    responses: z.infer<typeof bookingResponsesDbSchema>;
} | null>;
/**
 * Should only get booking attendees length for seated events
 * @param uid
 * @returns booking with masked attendee emails
 */
export declare const getBookingForSeatedEvent: (uid: string) => Promise<(Omit<{
    user: {
        id: number;
    } | null;
    id: number;
    description: string | null;
    location: string | null;
    attendees: {
        name: string;
        email: string;
        bookingSeat: {
            data: Prisma.JsonValue;
            id: number;
            metadata: Prisma.JsonValue;
            bookingId: number;
            referenceUid: string;
            attendeeId: number;
        } | null;
    }[];
    uid: string;
    eventTypeId: number | null;
    customInputs: Prisma.JsonValue;
    smsReminderNumber: string | null;
    responses: Prisma.JsonValue;
    startTime: Date;
    endTime: Date;
}, "responses"> & {
    responses: z.infer<typeof bookingResponsesDbSchema>;
}) | null>;
export declare const getMultipleDurationValue: (multipleDurationConfig: number[] | undefined, queryDuration: string | string[] | undefined, defaultValue: number) => number | null;
//# sourceMappingURL=get-booking.d.ts.map