"""Shared response models.""" from __future__ import annotations from datetime import datetime from typing import Any, Optional from pydantic import BaseModel, Field class ErrorResponse(BaseModel): """Standard error response.""" error: str = Field(..., description="Error message") detail: Optional[str] = Field(default=None) code: Optional[str] = Field(default=None) class PaginatedResponse(BaseModel): """Standard paginated list response.""" items: list[Any] = Field(default_factory=list) total: int = Field(default=0) page: int = Field(default=1) limit: int = Field(default=20) has_more: bool = Field(default=False) class AlertModel(BaseModel): """Security alert.""" id: str = Field(default="") title: str = Field(default="") severity: str = Field(default="unknown") # critical, high, medium, low description: Optional[str] = Field(default=None) chain: Optional[str] = Field(default=None) token: Optional[str] = Field(default=None) token_symbol: Optional[str] = Field(default=None) risk_score: float = Field(default=0.0) risk_flags: list[str] = Field(default_factory=list) acknowledged: bool = Field(default=False) created_at: Optional[datetime] = Field(default=None) class ScanResult(BaseModel): """Token/wallet scan result.""" address: str chain: str safety_score: float = Field(default=100.0) risk_flags: list[str] = Field(default_factory=list) warnings: list[str] = Field(default_factory=list) modules_run: list[dict] = Field(default_factory=list) metadata: dict[str, Any] = Field(default_factory=dict) class HealthStatus(BaseModel): """Service health status.""" status: str = "ok" error: Optional[str] = None uptime_seconds: Optional[float] = None