import 'package:comwell_key_app/domain/models/app_error.dart';
import 'package:comwell_key_app/presentation/screens/pregistration/prereg_request_model.dart' show IdType;
import 'package:comwell_key_app/up_sales/models/addon_upgrade.dart';
import 'package:comwell_key_app/up_sales/models/room_upgrade.dart';
import 'package:country_code_picker/country_code_picker.dart';
import 'package:flutter/material.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:payment_plugin/domain/models/stored_payment_method.dart';
import '../../../../domain/models/user.dart';
part '../../../../.generated/presentation/screens/pregistration/cubit/preregistration_state.freezed.dart';
@freezed
abstract class PreregistrationState with _$PreregistrationState {
const factory PreregistrationState({
@Default(false) bool isLoading,
@Default(false) bool selected,
@Default([]) List<AddOnUpgrade> addOnUpgrades,
@Default([]) List<RoomUpgrade> availableRoomUpgrades,
@Default('') String selectedRoomUpgrade,
@Default(false) bool missingInformation,
@Default(0) int extrasTotalPrice,
@Default(false) bool termsAndConditionsAccepted,
@Default(false) bool forceUpdate,
@Default(null) User? user,
@Default(null) CountryCode? countryCode,
@Default('') String selectedCountry,
@Default('') String selectedNationality,
@Default(null) String? phoneNumber,
@Default(false) bool isPhoneNumberValid,
@Default(false) bool isFirstNameValid,
@Default(false) bool isLastNameValid,
@Default(false) bool isAddressValid,
@Default(false) bool isPostalCodeValid,
@Default(false) bool isCityValid,
@Default(false) bool isBirthDateValid,
@Default(IdType.driverLicense) IdType selectedDocumentType,
@Default(null) StoredPaymentMethod? selectedPaymentMethod,
@Default(null) TimeOfDay? servingTime,
@Default(AppError.none) AppError error,
}) = _PreregistrationState;
}