import type { Prisma } from '../../prisma-client';
import type { Calendar, SelectedCalendarEventTypeIds } from "@calcom/types/Calendar";
import type { ICalendarCacheRepository } from "./calendar-cache.repository.interface";
export declare function parseKeyForCache(args: FreeBusyArgs): string;
type FreeBusyArgs = {
    timeMin: string;
    timeMax: string;
    items: {
        id: string;
    }[];
};
export declare class CalendarCacheRepository implements ICalendarCacheRepository {
    calendar: Calendar | null;
    constructor(calendar?: Calendar | null);
    watchCalendar(args: {
        calendarId: string;
        eventTypeIds: SelectedCalendarEventTypeIds;
    }): Promise<void>;
    unwatchCalendar(args: {
        calendarId: string;
        eventTypeIds: SelectedCalendarEventTypeIds;
    }): Promise<void>;
    getCachedAvailability(credentialId: number, args: FreeBusyArgs): Promise<{
        key: string;
        value: Prisma.JsonValue;
        credentialId: number;
        expiresAt: Date;
    } | null>;
    upsertCachedAvailability(credentialId: number, args: FreeBusyArgs, value: Prisma.JsonNullValueInput | Prisma.InputJsonValue): Promise<void>;
}
export {};
//# sourceMappingURL=calendar-cache.repository.d.ts.map