import { PrismaClient } from '../../../prisma';
import { User } from '../../../kysely/types.ts';
export type FindDetailedScheduleByIdReturnType = Awaited<ReturnType<ScheduleRepository["findDetailedScheduleById"]>>;
export declare class ScheduleRepository {
    private readonly prismaClient;
    constructor(prismaClient: PrismaClient);
    findScheduleByIdForBuildDateRanges({ scheduleId }: {
        scheduleId: number;
    }): Promise<{
        availability: {
            days: number[];
            date: Date | null;
            startTime: Date;
            endTime: Date;
        }[];
        user: {
            id: number;
            defaultScheduleId: number | null;
            travelSchedules: {
                id: number;
                timeZone: string;
                startDate: Date;
                endDate: Date | null;
            }[];
        };
        userId: number;
        id: number;
        timeZone: string | null;
    } | null>;
    findScheduleByIdForOwnershipCheck({ scheduleId }: {
        scheduleId: number;
    }): Promise<{
        userId: number;
    } | null>;
    findScheduleById({ id }: {
        id: number;
    }): Promise<{
        name: string;
        availability: {
            days: number[];
            date: Date | null;
            userId: number | null;
            id: number;
            eventTypeId: number | null;
            scheduleId: number | null;
            startTime: Date;
            endTime: Date;
        }[];
        userId: number;
        id: number;
        timeZone: string | null;
    } | null>;
    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: {
            days: number[];
            date: Date | null;
            userId: number | null;
            id: number;
            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;
        userId: number;
    }>;
    findManyDetailedScheduleByUserId({ isManagedEventType, userId, defaultScheduleId, timeZone: userTimeZone, }: {
        timeZone: string;
        userId: number;
        defaultScheduleId: number | null;
        isManagedEventType?: boolean;
    }): Promise<{
        id: number;
        name: string;
        isManaged: boolean;
        workingHours: import('@calcom/types/schedule').WorkingHours[];
        schedule: {
            days: number[];
            date: Date | null;
            userId: number | null;
            id: number;
            eventTypeId: number | null;
            scheduleId: number | null;
            startTime: Date;
            endTime: Date;
        }[];
        availability: {
            end: Date;
            userId?: number | null;
            start: Date;
        }[][];
        timeZone: string;
        isDefault: boolean;
        dateOverrides: {
            ranges: import('@calcom/types/schedule').TimeRange[];
        }[];
        readOnly: boolean;
        isLastSchedule: boolean;
        userId: number;
    }[]>;
    getDefaultScheduleId(userId: number): Promise<number>;
    hasDefaultSchedule(user: Partial<User>): Promise<boolean>;
    setupDefaultSchedule(userId: number, scheduleId: number): Promise<{
        username: string | null;
        email: string;
        role: import('../../../kysely/types.ts').UserPermissionRole;
        name: string | null;
        bio: string | null;
        theme: string | null;
        verified: boolean | null;
        locked: boolean;
        organizationId: number | null;
        locale: string | null;
        metadata: import('@prisma/client/runtime/client').JsonValue | null;
        id: number;
        timeZone: string;
        requiresBookerEmailVerification: boolean | null;
        uuid: string;
        emailVerified: Date | null;
        avatarUrl: string | null;
        weekStart: string;
        bufferTime: number;
        hideBranding: boolean;
        appTheme: string | null;
        createdDate: Date;
        trialEndsAt: Date | null;
        lastActiveAt: Date | null;
        defaultScheduleId: number | null;
        completedOnboarding: boolean;
        timeFormat: number | null;
        twoFactorSecret: string | null;
        twoFactorEnabled: boolean;
        backupCodes: string | null;
        identityProvider: import('../../../kysely/types.ts').IdentityProvider;
        identityProviderId: string | null;
        invitedTo: number | null;
        brandColor: string | null;
        darkBrandColor: string | null;
        allowDynamicBooking: boolean | null;
        allowSEOIndexing: boolean | null;
        receiveMonthlyDigestEmail: boolean | null;
        disableImpersonation: boolean;
        movedToProfileId: number | null;
        isPlatformManaged: boolean;
        smsLockState: import('../../../kysely/types.ts').SMSLockState;
        smsLockReviewedByAdmin: boolean;
        referralLinkId: string | null;
        creationSource: import('../../../kysely/types.ts').CreationSource | null;
        whitelistWorkflows: boolean;
        autoOptInFeatures: boolean;
    }>;
}
//# sourceMappingURL=ScheduleRepository.d.ts.map