import type { Booking, EventType } from '../prisma-client';
import dayjs from '../dayjs';
import type { IntervalLimit } from './intervalLimits/intervalLimitSchema';
import type { SelectedCalendar } from '../prisma/client';
import type { EventBusyDetails } from "@calcom/types/Calendar";
import type { CredentialForCalendarService } from "@calcom/types/Credential";
export declare const getBusyTimes: (params: {
    credentials: CredentialForCalendarService[];
    userId: number;
    userEmail: string;
    username: string;
    eventTypeId?: number;
    startTime: string;
    beforeEventBuffer?: number;
    afterEventBuffer?: number;
    endTime: string;
    selectedCalendars: SelectedCalendar[];
    seatedEvent?: boolean;
    rescheduleUid?: string | null;
    duration?: number | null;
    currentBookings?: (Pick<Booking, "id" | "uid" | "userId" | "startTime" | "endTime" | "title"> & {
        eventType: Pick<EventType, "id" | "beforeEventBuffer" | "afterEventBuffer" | "seatsPerTimeSlot"> | null;
        _count?: {
            seatsReferences: number;
        };
    })[] | null;
    bypassBusyCalendarTimes: boolean;
    shouldServeCache?: boolean;
}) => Promise<EventBusyDetails[]>;
export declare function getStartEndDateforLimitCheck(startDate: string, endDate: string, bookingLimits?: IntervalLimit | null, durationLimits?: IntervalLimit | null): {
    limitDateFrom: dayjs.Dayjs;
    limitDateTo: dayjs.Dayjs;
};
export declare function getBusyTimesForLimitChecks(params: {
    userIds: number[];
    eventTypeId: number;
    startDate: string;
    endDate: string;
    rescheduleUid?: string | null;
    bookingLimits?: IntervalLimit | null;
    durationLimits?: IntervalLimit | null;
}): Promise<EventBusyDetails[]>;
declare const _default: (params: {
    credentials: CredentialForCalendarService[];
    userId: number;
    userEmail: string;
    username: string;
    eventTypeId?: number;
    startTime: string;
    beforeEventBuffer?: number;
    afterEventBuffer?: number;
    endTime: string;
    selectedCalendars: SelectedCalendar[];
    seatedEvent?: boolean;
    rescheduleUid?: string | null;
    duration?: number | null;
    currentBookings?: (Pick<Booking, "id" | "uid" | "userId" | "startTime" | "endTime" | "title"> & {
        eventType: Pick<EventType, "id" | "beforeEventBuffer" | "afterEventBuffer" | "seatsPerTimeSlot"> | null;
        _count?: {
            seatsReferences: number;
        };
    })[] | null;
    bypassBusyCalendarTimes: boolean;
    shouldServeCache?: boolean;
}) => Promise<EventBusyDetails[]>;
export default _default;
//# sourceMappingURL=getBusyTimes.d.ts.map