export enum ErrorCode {
  // Generic HTTP error codes for transport-agnostic error handling
  Unauthorized = "unauthorized_error",
  Forbidden = "forbidden_error",
  NotFound = "not_found_error",
  BadRequest = "bad_request_error",
  InternalServerError = "internal_server_error",

  // Domain-specific error codes
  PaymentCreationFailure = "payment_not_created_error",
  NoAvailableUsersFound = "no_available_users_found_error",
  // Thrown when charging a card fails (e.g., insufficient funds, card declined during actual payment)
  ChargeCardFailure = "couldnt_charge_card_error",
  // Thrown when collecting/verifying a payment method fails (e.g., card setup failed during HOLD payment flow)
  CollectCardFailure = "couldnt_collect_card_error",
  RequestBodyWithouEnd = "request_body_end_time_internal_error",
  AlreadySignedUpForBooking = "already_signed_up_for_this_booking_error",
  FixedHostsUnavailableForBooking = "fixed_hosts_unavailable_for_booking",
  RoundRobinHostsUnavailableForBooking = "round_robin_host_unavailable_for_booking",
  EventTypeNotFound = "event_type_not_found_error",
  BookingNotFound = "booking_not_found_error",
  BookingSeatsFull = "booking_seats_full_error",
  MissingPaymentCredential = "missing_payment_credential_error",
  MissingPaymentAppId = "missing_payment_app_id_error",
  NotEnoughAvailableSeats = "not_enough_available_seats_error",
  AvailabilityNotFoundInSchedule = "availability_not_found_in_schedule_error",
  CancelledBookingsCannotBeRescheduled = "cancelled_bookings_cannot_be_rescheduled",
  UnableToSubscribeToThePlatform = "unable_to_subscribe_to_the_platform",
  UpdatingOauthClientError = "updating_oauth_client_error",
  CreatingOauthClientError = "creating_oauth_client_error",
  BookingTimeOutOfBounds = "booking_time_out_of_bounds_error",
  BookingConflict = "booking_conflict_error",
  BookerLimitExceeded = "booker_limit_exceeded_error",
  BookerLimitExceededReschedule = "booker_limit_exceeded_error_reschedule",
  BookingNotAllowedByRestrictionSchedule = "booking_not_allowed_by_restriction_schedule_error",
  RestrictionScheduleNotFound = "restriction_schedule_not_found_error",
  EventTypeNoHosts = "event_type_no_hosts",
  RequestBodyInvalid = "request_body_invalid_error",
  PrivateLinkExpired = "private_link_expired",
  BookerEmailBlocked = "booker_email_blocked",
  BookerEmailRequiresLogin = "booker_email_requires_login",
  InvalidVerificationCode = "invalid_verification_code",
  UnableToValidateVerificationCode = "unable_to_validate_verification_code",
}
