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)