from typing import Any, Optional

from pydantic import BaseModel, ConfigDict, Field


class CharacterPublic(BaseModel):
    """Safe payload for mobile — no system_prompt."""

    model_config = ConfigDict(from_attributes=True)

    id: str
    name: str
    description: str = ""
    avatar_url: Optional[str] = None
    voice_provider: str = "elevenlabs"
    voice_id: str
    animation: dict[str, Any] = Field(default_factory=dict)


class CharacterInternal(CharacterPublic):
    system_prompt: str
