export type BookingStatus = 'pending' | 'confirmed' | 'cancelled';

export interface BookingEventTypeRef {
  id: string;
  title: string;
}

export interface Booking {
  id: string;
  eventType: BookingEventTypeRef | null;
  guestName: string;
  guestEmail: string;
  startTime: string;
  endTime: string;
  guestTimezone: string;
  status: BookingStatus;
  meetingOutcome?: 'pending' | 'held' | 'no_show' | 'unknown';
  hostRating?: number | null;
  guestRating?: number | null;
  guestFeedback?: string | null;
  location: string | null;
  meetingUrl?: string | null;
  customAnswers: Record<string, string> | null;
  embedSource?: string | null;
  createdAt: string;
}

export interface BookingListResponse {
  data: Booking[];
  pagination: { page: number; limit: number; total: number };
}

export interface CreateBookingRequest {
  startTime: string;
  guestName: string;
  guestEmail: string;
  guestTimezone: string;
  customAnswers?: Record<string, string>;
}

export interface BookingConfirmation {
  id: string;
  status: BookingStatus;
  startTime: string;
  endTime: string;
  guestName: string;
  guestEmail: string;
  cancelUrl: string;
  confirmationMessage: string;
}

export interface CancelBookingResponse {
  id: string;
  status: BookingStatus;
  message: string;
}
