import { PrismaClient } from '../../../prisma';
import { TUpdateInputSchema } from '../../../trpc/server/routers/viewer/availability/schedule/update.schema';
import { TrpcSessionUser } from '../../../trpc/server/types';
interface IUpdateScheduleOptions {
    input: TUpdateInputSchema;
    user: Pick<NonNullable<TrpcSessionUser>, "id" | "defaultScheduleId" | "timeZone">;
}
export type UpdateScheduleResponse = Awaited<ReturnType<ScheduleService["update"]>>;
export declare class ScheduleService {
    private prisma;
    constructor(prisma: PrismaClient);
    update({ input, user }: IUpdateScheduleOptions): Promise<{
        schedule: {
            name: string;
            userId: number;
            id: number;
        };
        isDefault: boolean;
        availability?: undefined;
        timeZone?: undefined;
        prevDefaultId?: undefined;
        currentDefaultId?: undefined;
    } | {
        schedule: {
            eventType: {
                id: number;
                eventName: string | null;
            }[];
            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;
        };
        availability: import('@calcom/types/schedule').Schedule;
        timeZone: string;
        isDefault: boolean;
        prevDefaultId: number | null;
        currentDefaultId: number | null;
    }>;
}
export declare const updateSchedule: ({ input, user, prisma, }: IUpdateScheduleOptions & {
    prisma: PrismaClient;
}) => Promise<{
    schedule: {
        name: string;
        userId: number;
        id: number;
    };
    isDefault: boolean;
    availability?: undefined;
    timeZone?: undefined;
    prevDefaultId?: undefined;
    currentDefaultId?: undefined;
} | {
    schedule: {
        eventType: {
            id: number;
            eventName: string | null;
        }[];
        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;
    };
    availability: import('@calcom/types/schedule').Schedule;
    timeZone: string;
    isDefault: boolean;
    prevDefaultId: number | null;
    currentDefaultId: number | null;
}>;
export {};
//# sourceMappingURL=ScheduleService.d.ts.map