import type { IFromUser, IToUser } from '../../../../../lib/getUserAvailability';
import type { BookingRepository } from '../../../../../lib/server/repository/booking';
import type { EventTypeRepository } from '../../../../../lib/server/repository/eventTypeRepository';
import type { RoutingFormResponseRepository } from '../../../../../lib/server/repository/formResponse';
import type { PrismaOOORepository } from '../../../../../lib/server/repository/ooo';
import type { ScheduleRepository } from '../../../../../lib/server/repository/schedule';
import type { SelectedSlotsRepository } from '../../../../../lib/server/repository/selectedSlots';
import type { TeamRepository } from '../../../../../lib/server/repository/team';
import type { UserRepository } from '../../../../../lib/server/repository/user';
import type { GetScheduleOptions } from "./types";
export interface IGetAvailableSlots {
    slots: Record<string, {
        time: string;
        attendees?: number | undefined;
        bookingUid?: string | undefined;
        away?: boolean | undefined;
        fromUser?: IFromUser | undefined;
        toUser?: IToUser | undefined;
        reason?: string | undefined;
        emoji?: string | undefined;
    }[]>;
    troubleshooter?: any;
}
export type GetAvailableSlotsResponse = Awaited<ReturnType<(typeof AvailableSlotsService)["prototype"]["_getAvailableSlots"]>>;
export interface IAvailableSlotsService {
    oooRepo: PrismaOOORepository;
    scheduleRepo: ScheduleRepository;
    selectedSlotsRepo: SelectedSlotsRepository;
    teamRepo: TeamRepository;
    userRepo: UserRepository;
    bookingRepo: BookingRepository;
    eventTypeRepo: EventTypeRepository;
    routingFormResponseRepo: RoutingFormResponseRepository;
}
export declare class AvailableSlotsService {
    private readonly dependencies;
    constructor(dependencies: IAvailableSlotsService);
    private _getReservedSlotsAndCleanupExpired;
    private _getDynamicEventType;
    private getDynamicEventType;
    private applyOccupiedSeatsToCurrentSeats;
    private _getEventType;
    private getEventType;
    private doesRangeStartFromToday;
    private _getAllDatesWithBookabilityStatus;
    private getAllDatesWithBookabilityStatus;
    private getUserIdFromUsername;
    private getEventTypeId;
    private getTeamIdFromSlug;
    private _getBusyTimesFromLimitsForUsers;
    private getBusyTimesFromLimitsForUsers;
    private _getBusyTimesFromTeamLimitsForUsers;
    private getBusyTimesFromTeamLimitsForUsers;
    private _getOOODates;
    private getOOODates;
    private _getUsersWithCredentials;
    private getUsersWithCredentials;
    private getStartTime;
    private calculateHostsAndAvailabilities;
    private _getRegularOrDynamicEventType;
    private getRegularOrDynamicEventType;
    getAvailableSlots: (args_0: GetScheduleOptions) => Promise<IGetAvailableSlots>;
    _getAvailableSlots({ input, ctx }: GetScheduleOptions): Promise<IGetAvailableSlots>;
}
//# sourceMappingURL=util.d.ts.map