import { CreateBookingMeta, CreateRecurringBookingData } from '../dto/types';
import { BookingResponse } from '../../types';
import { CreationSource } from '../../../../prisma/enums';
import { IBookingService } from '../interfaces/IBookingService';
import { RegularBookingService } from './RegularBookingService';
import { BookingEventHandlerService } from '../onBookingEvents/BookingEventHandlerService';
export type BookingHandlerInput = {
    bookingData: CreateRecurringBookingData;
} & CreateBookingMeta;
export declare const handleNewRecurringBooking: (this: RecurringBookingService, { input, deps, creationSource, }: {
    input: BookingHandlerInput;
    deps: IRecurringBookingServiceDependencies;
    creationSource: CreationSource;
}) => Promise<BookingResponse[]>;
export interface IRecurringBookingServiceDependencies {
    regularBookingService: RegularBookingService;
    bookingEventHandler: BookingEventHandlerService;
}
/**
 * Recurring Booking Service takes care of creating/rescheduling recurring bookings.
 */
export declare class RecurringBookingService implements IBookingService {
    private readonly deps;
    constructor(deps: IRecurringBookingServiceDependencies);
    fireBookingEvents({ createdBookings, eventTypeId, rescheduleUid, actorUserUuid, rescheduledBy, creationSource, }: {
        createdBookings: BookingResponse[];
        eventTypeId: number;
        rescheduleUid: string | null;
        actorUserUuid: string | null;
        rescheduledBy: string | null;
        creationSource: CreationSource | undefined;
    }): Promise<void>;
    createBooking(input: {
        bookingData: CreateRecurringBookingData;
        bookingMeta?: CreateBookingMeta;
        creationSource: CreationSource;
    }): Promise<BookingResponse[]>;
    rescheduleBooking(input: {
        bookingData: CreateRecurringBookingData;
        bookingMeta?: CreateBookingMeta;
        creationSource: CreationSource;
    }): Promise<BookingResponse[]>;
}
//# sourceMappingURL=RecurringBookingService.d.ts.map