package com.example.elva.data.models.auth

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

/**
 * Запрос на регистрацию
 */
@Serializable
data class RegisterRequest(
    val username: String,
    val email: String,
    val password: String,
    @SerialName("full_name")
    val fullName: String? = null,
    val phone: String? = null,
    @SerialName("date_of_birth")
    val dateOfBirth: String? = null,
    val bio: String? = null
)

/**
 * Запрос на вход
 */
@Serializable
data class LoginRequest(
    val email: String? = null,
    val username: String? = null,
    val password: String
)

/**
 * Ответ от сервера при успешной аутентификации
 */
@Serializable
data class AuthResponse(
    @SerialName("access_token")
    val accessToken: String,
    @SerialName("token_type")
    val tokenType: String = "bearer"
)

/**
 * Информация о пользователе
 */
@Serializable
data class UserInfo(
    val id: Int,
    val uuid: String? = null,
    val username: String,
    val email: String,
    @SerialName("first_name")
    val firstName: String? = null,
    @SerialName("last_name")
    val lastName: String? = null,
    val phone: String? = null,
    @SerialName("avatar_url")
    val avatarUrl: String? = null
)

