import type { PrismaClient } from '../../../prisma';
export type FindDetailedScheduleByIdReturnType = Awaited<ReturnType<typeof ScheduleRepository.findDetailedScheduleById>>;
export declare class ScheduleRepository {
    private prismaClient;
    constructor(prismaClient: PrismaClient);
    findScheduleByIdForBuildDateRanges({ scheduleId }: {
        scheduleId: number;
    }): Promise<{
        user: {
            id: number;
            defaultScheduleId: number | null;
            travelSchedules: {
                id: number;
                timeZone: string;
                startDate: Date;
                endDate: Date | null;
            }[];
        };
        id: number;
        availability: {
            days: number[];
            date: Date | null;
            startTime: Date;
            endTime: Date;
        }[];
        userId: number;
        timeZone: string | null;
    } | null>;
    findScheduleByIdForOwnershipCheck({ scheduleId }: {
        scheduleId: number;
    }): Promise<{
        userId: number;
    } | null>;
    static findScheduleById({ id }: {
        id: number;
    }): Promise<{
        name: string;
        id: number;
        availability: {
            id: number;
            days: number[];
            date: Date | null;
            userId: number | null;
            eventTypeId: number | null;
            scheduleId: number | null;
            startTime: Date;
            endTime: Date;
        }[];
        userId: number;
        timeZone: string | null;
    } | null>;
    static findDetailedScheduleById({ isManagedEventType, scheduleId, userId, defaultScheduleId, timeZone: userTimeZone, }: {
        timeZone: string;
        userId: number;
        defaultScheduleId: number | null;
        scheduleId?: number;
        isManagedEventType?: boolean;
    }): Promise<{
        id: number;
        name: string;
        isManaged: boolean;
        workingHours: import("@calcom/types/schedule").WorkingHours[];
        schedule: {
            id: number;
            days: number[];
            date: Date | null;
            userId: number | null;
            eventTypeId: number | null;
            scheduleId: number | null;
            startTime: Date;
            endTime: Date;
        }[];
        availability: {
            end: Date;
            userId?: number | null;
            start: Date;
        }[][];
        timeZone: string;
        dateOverrides: {
            ranges: import("@calcom/types/schedule").TimeRange[];
        }[];
        isDefault: boolean;
        isLastSchedule: boolean;
        readOnly: boolean;
    }>;
}
//# sourceMappingURL=schedule.d.ts.map