from pydantic import BaseModel, Field
from typing import Optional, List, Dict, Any
from uuid import UUID
from datetime import datetime


class ChatMessageCreate(BaseModel):
    username: str
    message: str
    timestamp_offset: float  # Offset in seconds from video start
    color: Optional[str] = None
    badges: Optional[List[Dict[str, Any]]] = None
    emotes: Optional[List[Dict[str, Any]]] = None


class ChatMessageResponse(BaseModel):
    id: UUID
    stream_id: UUID
    username: str
    message: str
    timestamp_offset: float
    color: Optional[str]
    badges: Optional[List[Dict[str, Any]]] = None
    emotes: Optional[List[Dict[str, Any]]] = None
    user_avatar_url: Optional[str] = None
    created_at: datetime

    class Config:
        from_attributes = True
