from rest_framework import serializers

from apps.users.models import User


class UserSerializer(serializers.ModelSerializer):
    """Full user profile serializer."""

    class Meta:
        model = User
        fields = [
            "id",
            "firebase_uid",
            "phone_number",
            "full_name",
            "email",
            "avatar",
            "language",
            "notifications_enabled",
            "is_guest",
            "date_joined",
        ]
        read_only_fields = ["id", "firebase_uid", "phone_number", "is_guest", "date_joined"]


class UserUpdateSerializer(serializers.ModelSerializer):
    """Serializer for updating user profile."""

    class Meta:
        model = User
        fields = ["full_name", "email", "phone_number", "avatar", "language", "notifications_enabled"]


class FirebaseTokenSerializer(serializers.Serializer):
    """Serializer for Firebase token exchange."""

    id_token = serializers.CharField(required=True, help_text="Firebase ID token")


class LogoutSerializer(serializers.Serializer):
    """Serializer for logout (refresh token blacklisting)."""

    refresh = serializers.CharField(required=True, help_text="Refresh token to blacklist")
