import { PrismaClient } from '../../../prisma';
import { Prisma } from '../../../kysely/types.ts';
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<{
    eventType: {
        disableRescheduling: boolean | null;
        minimumRescheduleNotice: number | null;
    } | null;
    location: string | null;
    description: string | null;
    attendees: {
        email: string;
        name: string;
        bookingSeat: {
            data: import('@prisma/client/runtime/client').JsonValue | null;
            metadata: import('@prisma/client/runtime/client').JsonValue | null;
            id: number;
            bookingId: number;
            referenceUid: string;
            attendeeId: number;
        } | null;
    }[];
    status: import('../../../kysely/types.ts').BookingStatus;
    user: {
        username: string | null;
        id: number;
    } | null;
    uid: string;
    userId: number | null;
    id: number;
    eventTypeId: number | null;
    customInputs: import('@prisma/client/runtime/client').JsonValue;
    responses: import('@prisma/client/runtime/client').JsonValue;
    startTime: Date;
    endTime: Date;
    smsReminderNumber: string | null;
}, "responses"> & {
    responses: Record<string, any>;
}) | null>;
export type GetBookingType = Awaited<ReturnType<typeof getBooking>>;
export declare const getBookingWithResponses: <T extends Prisma.BookingGetPayload<{
    select: BookingSelect & {
        responses: true;
    };
}>>(booking: T, isSeatedEvent?: boolean) => Omit<T, "responses"> & {
    responses: Record<string, any>;
};
export default getBooking;
export declare const getBookingForReschedule: (uid: string, userId?: number) => Promise<{
    attendees: {
        email: string;
        name: string;
        bookingSeat: {
            data: import('@prisma/client/runtime/client').JsonValue | null;
            metadata: import('@prisma/client/runtime/client').JsonValue | null;
            id: number;
            bookingId: number;
            referenceUid: string;
            attendeeId: number;
        } | null;
    }[];
    eventType: {
        disableRescheduling: boolean | null;
        minimumRescheduleNotice: number | null;
    } | null;
    location: string | null;
    description: string | null;
    status: import('../../../kysely/types.ts').BookingStatus;
    user: {
        username: string | null;
        id: number;
    } | null;
    uid: string;
    userId: number | null;
    id: number;
    eventTypeId: number | null;
    customInputs: import('@prisma/client/runtime/client').JsonValue;
    startTime: Date;
    endTime: Date;
    smsReminderNumber: string | null;
    responses: Record<string, any>;
} | 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<{
    eventType: {
        disableRescheduling: boolean | null;
        minimumRescheduleNotice: number | null;
    } | null;
    location: string | null;
    description: string | null;
    attendees: {
        email: string;
        name: string;
        bookingSeat: {
            data: import('@prisma/client/runtime/client').JsonValue | null;
            metadata: import('@prisma/client/runtime/client').JsonValue | null;
            id: number;
            bookingId: number;
            referenceUid: string;
            attendeeId: number;
        } | null;
    }[];
    status: import('../../../kysely/types.ts').BookingStatus;
    user: {
        username: string | null;
        id: number;
    } | null;
    uid: string;
    userId: number | null;
    id: number;
    eventTypeId: number | null;
    customInputs: import('@prisma/client/runtime/client').JsonValue;
    responses: import('@prisma/client/runtime/client').JsonValue;
    startTime: Date;
    endTime: Date;
    smsReminderNumber: string | null;
}, "responses"> & {
    responses: Record<string, any>;
}) | null>;
export declare const getMultipleDurationValue: (multipleDurationConfig: number[] | undefined, queryDuration: string | string[] | undefined, defaultValue: number) => number | null;
//# sourceMappingURL=get-booking.d.ts.map