File size: 1,565 Bytes
9513328 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | """Shared request models — use these instead of defining inline BaseModels."""
from __future__ import annotations
from typing import Optional
from pydantic import BaseModel, Field
class ScanRequest(BaseModel):
"""Token or wallet security scan request."""
address: str = Field(..., description="Token or wallet address")
chain: str = Field(default="solana", description="Blockchain (solana, ethereum, bsc, etc.)")
class WalletRequest(BaseModel):
"""Wallet analysis request."""
address: str = Field(..., description="Wallet address")
chain: str = Field(default="solana")
include_history: bool = Field(default=False)
include_labels: bool = Field(default=True)
class AddressRequest(BaseModel):
"""Generic address lookup request."""
address: str = Field(..., description="Blockchain address")
chain: Optional[str] = Field(default=None)
class TokenRequest(BaseModel):
"""Token info request."""
address: str = Field(..., description="Token contract address")
chain: str = Field(default="solana")
class SearchRequest(BaseModel):
"""RAG or general search request."""
query: str = Field(..., description="Search query")
top_k: int = Field(default=5, ge=1, le=50)
collection: Optional[str] = Field(default=None)
min_similarity: float = Field(default=0.0, ge=0.0, le=1.0)
class PaginationParams(BaseModel):
"""Standard pagination parameters."""
page: int = Field(default=1, ge=1)
limit: int = Field(default=20, ge=1, le=100)
offset: Optional[int] = Field(default=None)
|