export type BookingClosureScope = {
    kind: "site";
} | {
    kind: "venue";
    venueId: string;
};
export type BookingClosureRecord = {
    id: string;
    siteId: string;
    scope: BookingClosureScope;
    startsOn: string;
    endsOn: string;
    timezone: string;
    reason: string;
    name: string | null;
    createdByUserId: string | null;
    createdAt: string;
    updatedAt: string;
    deletedAt: string | null;
};
export type BookingClosureImpactConfirmation = {
    token: string;
};
export type BookingClosureManualReviewReason = "spans_closure" | "partial_overlap" | "hybrid_venue_scope" | "existing_appointment" | "appointment_scope_unclear" | "in_progress";
export type BookingClosureAutoCancelReason = "fully_contained_site_closure" | "fully_contained_venue_closure";
export type BookingClosureAffectedItemKind = "event_occurrence" | "course_session" | "appointment";
export type BookingClosureAutoCancelItem = {
    disposition: "auto_cancel";
    itemKind: "event_occurrence" | "course_session";
    itemId: string;
    occurrenceId: string;
    seriesId: string;
    title: string;
    startsAt: string;
    endsAt: string;
    venueId: string | null;
    venueName: string | null;
    attendeeCount: number;
    reason: BookingClosureAutoCancelReason;
    href: string;
};
export type BookingClosureManualReviewItem = {
    disposition: "manual_review";
    itemKind: BookingClosureAffectedItemKind;
    itemId: string;
    title: string;
    startsAt: string;
    endsAt: string;
    venueId: string | null;
    venueName: string | null;
    reason: BookingClosureManualReviewReason;
    href: string;
};
export type BookingClosureImpactSummary = {
    autoCancelCount: number;
    manualReviewCount: number;
    affectedAttendeeCount: number;
    courseSessionCount: number;
    eventOccurrenceCount: number;
    appointmentCount: number;
};
export type BookingClosureImpactPlan = {
    summary: BookingClosureImpactSummary;
    confirmation: BookingClosureImpactConfirmation;
    autoCancel: BookingClosureAutoCancelItem[];
    manualReview: BookingClosureManualReviewItem[];
};
export type BookingClosureRequest = {
    scope: BookingClosureScope;
    startsOn: string;
    endsOn: string;
    reason: string;
    name?: string | null;
};
export type PreviewBookingClosureResponse = {
    impact: BookingClosureImpactPlan;
};
export type CreateBookingClosureRequest = BookingClosureRequest & {
    confirmedSummary: BookingClosureImpactSummary;
    confirmation: BookingClosureImpactConfirmation;
};
export type CreateBookingClosureResponse = {
    closure: BookingClosureRecord;
    impact: BookingClosureImpactPlan;
    execution: {
        cancelledOccurrences: number;
        cancelledInstances: number;
        notificationJobs: number;
        notificationFailures: number;
        notificationError?: string;
    };
};
export type BookingClosureConflictResponse = {
    reason: "impact_changed";
    impact: BookingClosureImpactPlan;
};
export type ListBookingClosuresResponse = {
    closures: BookingClosureRecord[];
};
export type GetBookingClosureResponse = {
    closure: BookingClosureRecord;
    impact: BookingClosureImpactPlan;
};
export type DeleteBookingClosureResponse = {
    closure: BookingClosureRecord;
};
