import { Prisma } from '../../../prisma-client';
import type { CalendarEvent } from "@calcom/types/Calendar";
import { CalendarEventClass } from "./class";
declare const userSelect: {
    select: {
        id: true;
        email: true;
        name: true;
        username: true;
        timeZone: true;
        credentials: true;
        bufferTime: true;
        destinationCalendar: true;
        locale: true;
    };
};
type User = Omit<Prisma.UserGetPayload<typeof userSelect>, "selectedCalendars">;
type PersonAttendeeCommonFields = Pick<User, "id" | "email" | "name" | "locale" | "timeZone" | "username">;
interface ICalendarEventBuilder {
    calendarEvent: CalendarEventClass;
    eventType: Awaited<ReturnType<CalendarEventBuilder["getEventFromEventId"]>>;
    users: Awaited<ReturnType<CalendarEventBuilder["getUserById"]>>[];
    attendeesList: PersonAttendeeCommonFields[];
    teamMembers: Awaited<ReturnType<CalendarEventBuilder["getTeamMembers"]>>;
    rescheduleLink: string;
}
export declare class CalendarEventBuilder implements ICalendarEventBuilder {
    calendarEvent: CalendarEventClass;
    eventType: ICalendarEventBuilder["eventType"];
    users: ICalendarEventBuilder["users"];
    attendeesList: ICalendarEventBuilder["attendeesList"];
    teamMembers: ICalendarEventBuilder["teamMembers"];
    rescheduleLink: string;
    constructor();
    private reset;
    init(initProps: CalendarEventClass): void;
    setEventType(eventType: ICalendarEventBuilder["eventType"]): void;
    buildEventObjectFromInnerClass(eventId: number): Promise<void>;
    buildUsersFromInnerClass(): Promise<void>;
    buildAttendeesList(): void;
    private getUserById;
    private getEventFromEventId;
    buildTeamMembers(): Promise<void>;
    private getTeamMembers;
    buildUIDCalendarEvent(): void;
    setLocation(location: CalendarEventClass["location"]): void;
    setUId(uid: CalendarEventClass["uid"]): void;
    setDestinationCalendar(destinationCalendar: CalendarEventClass["destinationCalendar"]): void;
    setHideCalendarNotes(hideCalendarNotes: CalendarEventClass["hideCalendarNotes"]): void;
    setHideCalendarEventDetails(hideCalendarEventDetails: CalendarEventClass["hideCalendarEventDetails"]): void;
    setDescription(description: CalendarEventClass["description"]): void;
    setNotes(notes: CalendarEvent["additionalNotes"]): void;
    setCancellationReason(cancellationReason: CalendarEventClass["cancellationReason"]): void;
    setUsers(users: User[]): void;
    setUsersFromId(userId: User["id"]): Promise<void>;
    buildRescheduleLink({ allowRescheduleForCancelledBooking, }?: {
        allowRescheduleForCancelledBooking?: boolean;
    }): void;
}
export {};
//# sourceMappingURL=builder.d.ts.map