import type { Dayjs } from '../../../dayjs';
import dayjs from '../../../dayjs';
import type { EventType } from '../../getUserAvailability';
import type { EventBusyDetails } from "@calcom/types/Calendar";
import type { IntervalLimit } from "../intervalLimitSchema";
export declare const getBusyTimesFromLimits: (bookingLimits: Partial<Record<"PER_WEEK" | "PER_MONTH" | "PER_YEAR" | "PER_DAY", number | undefined>> | null, durationLimits: Partial<Record<"PER_WEEK" | "PER_MONTH" | "PER_YEAR" | "PER_DAY", number | undefined>> | null, dateFrom: dayjs.Dayjs, dateTo: dayjs.Dayjs, duration: number | undefined, eventType: {
    metadata: {
        config?: {
            useHostSchedulesForTeamEvent?: boolean | undefined;
        } | undefined;
        smartContractAddress?: string | undefined;
        blockchainId?: number | undefined;
        multipleDuration?: number[] | undefined;
        giphyThankYouPage?: string | undefined;
        additionalNotesRequired?: boolean | undefined;
        disableSuccessPage?: boolean | undefined;
        disableStandardEmails?: {
            all?: {
                host?: boolean | undefined;
                attendee?: boolean | undefined;
            } | undefined;
            confirmation?: {
                host?: boolean | undefined;
                attendee?: boolean | undefined;
            } | undefined;
        } | undefined;
        managedEventConfig?: {
            unlockedFields?: {
                schedule?: true | undefined;
                profile?: true | undefined;
                bookings?: true | undefined;
                users?: true | undefined;
                children?: true | undefined;
                length?: true | undefined;
                title?: true | undefined;
                metadata?: true | undefined;
                description?: true | undefined;
                price?: true | undefined;
                webhooks?: true | undefined;
                owner?: true | undefined;
                hidden?: true | undefined;
                team?: true | undefined;
                availability?: true | undefined;
                workflows?: true | undefined;
                hosts?: true | undefined;
                currency?: true | undefined;
                slug?: true | undefined;
                userId?: true | undefined;
                position?: true | undefined;
                locations?: true | undefined;
                offsetStart?: true | undefined;
                profileId?: true | undefined;
                teamId?: true | undefined;
                useEventLevelSelectedCalendars?: true | undefined;
                eventName?: true | undefined;
                parentId?: true | undefined;
                bookingFields?: true | undefined;
                timeZone?: true | undefined;
                periodType?: true | undefined;
                periodStartDate?: true | undefined;
                periodEndDate?: true | undefined;
                periodDays?: true | undefined;
                periodCountCalendarDays?: true | undefined;
                lockTimeZoneToggleOnBookingPage?: true | undefined;
                requiresConfirmation?: true | undefined;
                requiresConfirmationWillBlockSlot?: true | undefined;
                requiresConfirmationForFreeEmail?: true | undefined;
                requiresBookerEmailVerification?: true | undefined;
                canSendCalVideoTranscriptionEmails?: true | undefined;
                autoTranslateDescriptionEnabled?: true | undefined;
                recurringEvent?: true | undefined;
                disableGuests?: true | undefined;
                hideCalendarNotes?: true | undefined;
                hideCalendarEventDetails?: true | undefined;
                minimumBookingNotice?: true | undefined;
                beforeEventBuffer?: true | undefined;
                afterEventBuffer?: true | undefined;
                seatsPerTimeSlot?: true | undefined;
                onlyShowFirstAvailableSlot?: true | undefined;
                seatsShowAttendees?: true | undefined;
                seatsShowAvailabilityCount?: true | undefined;
                schedulingType?: true | undefined;
                scheduleId?: true | undefined;
                slotInterval?: true | undefined;
                successRedirectUrl?: true | undefined;
                forwardParamsSuccessRedirect?: true | undefined;
                bookingLimits?: true | undefined;
                durationLimits?: true | undefined;
                isInstantEvent?: true | undefined;
                instantMeetingExpiryTimeOffsetInSeconds?: true | undefined;
                instantMeetingScheduleId?: true | undefined;
                instantMeetingParameters?: true | undefined;
                assignAllTeamMembers?: true | undefined;
                assignRRMembersUsingSegment?: true | undefined;
                rrSegmentQueryValue?: true | undefined;
                useEventTypeDestinationCalendarEmail?: true | undefined;
                isRRWeightsEnabled?: true | undefined;
                maxLeadThreshold?: true | undefined;
                allowReschedulingPastBookings?: true | undefined;
                eventTypeColor?: true | undefined;
                rescheduleWithSameRoundRobinHost?: true | undefined;
                secondaryEmailId?: true | undefined;
                hashedLink?: true | undefined;
                destinationCalendar?: true | undefined;
                customInputs?: true | undefined;
                parent?: true | undefined;
                instantMeetingSchedule?: true | undefined;
                aiPhoneCallConfig?: true | undefined;
                fieldTranslations?: true | undefined;
                selectedCalendars?: true | undefined;
                secondaryEmail?: true | undefined;
                _count?: true | undefined;
            } | undefined;
        } | undefined;
        requiresConfirmationThreshold?: {
            time: number;
            unit: "months" | "years" | "days" | "hours" | "minutes" | "milliseconds" | "seconds" | "dates";
        } | undefined;
        bookerLayouts?: {
            enabledLayouts: import('../../../prisma/zod-utils').BookerLayouts[];
            defaultLayout: import('../../../prisma/zod-utils').BookerLayouts;
        } | null | undefined;
        apps?: unknown;
    } | null;
    schedule: {
        id: number;
        availability: {
            days: number[];
            date: Date | null;
            startTime: Date;
            endTime: Date;
        }[];
        timeZone: string | null;
    } | null;
    id: number;
    length: number;
    team: {
        id: number;
        bookingLimits: import('../../../prisma-client').Prisma.JsonValue;
        includeManagedEventsInLimits: boolean;
    } | null;
    availability: {
        days: number[];
        date: Date | null;
        startTime: Date;
        endTime: Date;
    }[];
    hosts: {
        schedule: {
            id: number;
            availability: {
                days: number[];
                date: Date | null;
                startTime: Date;
                endTime: Date;
            }[];
            timeZone: string | null;
        } | null;
        user: {
            id: number;
            email: string;
        };
    }[];
    useEventLevelSelectedCalendars: boolean;
    timeZone: string | null;
    seatsPerTimeSlot: number | null;
    schedulingType: import('../../../prisma-client').$Enums.SchedulingType | null;
    bookingLimits: import('../../../prisma-client').Prisma.JsonValue;
    durationLimits: import('../../../prisma-client').Prisma.JsonValue;
    assignAllTeamMembers: boolean;
    parent: {
        team: {
            id: number;
            bookingLimits: import('../../../prisma-client').Prisma.JsonValue;
            includeManagedEventsInLimits: boolean;
        } | null;
    } | null;
}, bookings: EventBusyDetails[], timeZone: string, rescheduleUid?: string | undefined) => Promise<ReturnType<typeof _getBusyTimesFromLimits>>;
declare const _getBusyTimesFromLimits: (bookingLimits: IntervalLimit | null, durationLimits: IntervalLimit | null, dateFrom: Dayjs, dateTo: Dayjs, duration: number | undefined, eventType: NonNullable<EventType>, bookings: EventBusyDetails[], timeZone: string, rescheduleUid?: string) => Promise<import("@calcom/types/Calendar").EventBusyDate[]>;
export declare const getBusyTimesFromTeamLimits: (user: {
    id: number;
    email: string;
}, bookingLimits: Partial<Record<"PER_WEEK" | "PER_MONTH" | "PER_YEAR" | "PER_DAY", number | undefined>>, dateFrom: dayjs.Dayjs, dateTo: dayjs.Dayjs, teamId: number, includeManagedEvents: boolean, timeZone: string, rescheduleUid?: string | undefined) => Promise<ReturnType<typeof _getBusyTimesFromTeamLimits>>;
declare const _getBusyTimesFromTeamLimits: (user: {
    id: number;
    email: string;
}, bookingLimits: IntervalLimit, dateFrom: Dayjs, dateTo: Dayjs, teamId: number, includeManagedEvents: boolean, timeZone: string, rescheduleUid?: string) => Promise<import("@calcom/types/Calendar").EventBusyDate[]>;
export {};
//# sourceMappingURL=getBusyTimesFromLimits.d.ts.map