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


class AuthenticationLoginResponse(BaseModel):
    """Response model for authentication login endpoint"""

    token: str
    refresh_token: str
    token_type: str
    expires_in: int
    user_info: Dict[str, Any]


class AuthenticationRefreshResponse(BaseModel):
    """Response model for authentication refresh endpoint"""

    token: str
    refresh_token: str
    token_type: str
    expires_in: int


class AuthenticationUserInfoResponse(BaseModel):
    """Response model for authentication user info endpoint"""

    user_id: int
    username: str
    email: str
    first_name: str
    last_name: str
    is_active: bool
    created_at: datetime
    updated_at: Optional[datetime]
