"""
┌──────────────────────────────────────────────────────────────────────────────┐
│ @author: Davidson Gomes                                                      │
│ @file: chat.py                                                               │
│ Developed by: Davidson Gomes                                                 │
│ Creation date: May 13, 2025                                                  │
│ Contact: contato@evolution-api.com                                           │
├──────────────────────────────────────────────────────────────────────────────┤
│ @copyright © Evolution API 2025. All rights reserved.                        │
│ Licensed under the Apache License, Version 2.0                               │
│                                                                              │
│ You may not use this file except in compliance with the License.             │
│ You may obtain a copy of the License at                                      │
│                                                                              │
│    http://www.apache.org/licenses/LICENSE-2.0                                │
│                                                                              │
│ Unless required by applicable law or agreed to in writing, software          │
│ distributed under the License is distributed on an "AS IS" BASIS,            │
│ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.     │
│ See the License for the specific language governing permissions and          │
│ limitations under the License.                                               │
├──────────────────────────────────────────────────────────────────────────────┤
│ @important                                                                   │
│ For any future changes to the code in this file, it is recommended to        │
│ include, together with the modification, the information of the developer    │
│ who changed it and the date of modification.                                 │
└──────────────────────────────────────────────────────────────────────────────┘
"""

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


class FileData(BaseModel):
    """Model to represent file data sent in a chat request."""

    filename: str = Field(..., description="File name")
    content_type: str = Field(..., description="File content type")
    data: str = Field(..., description="File content encoded in base64")


class ChatRequest(BaseModel):
    """Model to represent a chat request."""

    message: str = Field(..., description="User message to the agent")
    agent_id: Optional[str] = Field(None, description="Agent ID to process the message")
    external_id: Optional[str] = Field(
        None, description="External ID for user identification"
    )
    files: Optional[List[FileData]] = Field(
        None, description="List of files attached to the message"
    )


class ChatResponse(BaseModel):
    """Model to represent a chat response."""

    response: str = Field(..., description="Response generated by the agent")
    message_history: List[Dict[str, Any]] = Field(
        default_factory=list, description="Message history"
    )
    status: str = Field(..., description="Response status (success/error)")
    timestamp: str = Field(..., description="Response timestamp")


class ErrorResponse(BaseModel):
    """Model to represent an error response."""

    detail: str = Field(..., description="Error details")
