package com.mycrib.shared.models import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class User( val id: Int, val username: String, val email: String, @SerialName("first_name") val firstName: String?, @SerialName("last_name") val lastName: String?, @SerialName("is_staff") val isStaff: Boolean = false, @SerialName("is_active") val isActive: Boolean = true, @SerialName("date_joined") val dateJoined: String, val verified: Boolean = false ) @Serializable data class UserProfile( val id: Int, val user: Int, @SerialName("phone_number") val phoneNumber: String?, val address: String?, val city: String?, @SerialName("state_province") val stateProvince: String?, @SerialName("postal_code") val postalCode: String?, val country: String?, @SerialName("profile_picture") val profilePicture: String?, val bio: String? ) @Serializable data class RegisterRequest( val username: String, val email: String, val password: String, @SerialName("first_name") val firstName: String? = null, @SerialName("last_name") val lastName: String? = null ) @Serializable data class LoginRequest( val username: String, val password: String ) @Serializable data class AuthResponse( val token: String, val user: User, val verified: Boolean = false ) @Serializable data class VerifyEmailRequest( val code: String ) @Serializable data class VerifyEmailResponse( val message: String, val verified: Boolean ) @Serializable data class UpdateProfileRequest( @SerialName("first_name") val firstName: String? = null, @SerialName("last_name") val lastName: String? = null, val email: String? = null ) // Password Reset Models @Serializable data class ForgotPasswordRequest( val email: String ) @Serializable data class ForgotPasswordResponse( val message: String ) @Serializable data class VerifyResetCodeRequest( val email: String, val code: String ) @Serializable data class VerifyResetCodeResponse( val message: String, @SerialName("reset_token") val resetToken: String ) @Serializable data class ResetPasswordRequest( @SerialName("reset_token") val resetToken: String, @SerialName("new_password") val newPassword: String, @SerialName("confirm_password") val confirmPassword: String ) @Serializable data class ResetPasswordResponse( val message: String )