CD / schema / py / Token.py
Token.py
Raw
from pydantic import BaseModel
from typing import Optional, List, Set
import logging

logger = logging.getLogger(__name__)


class TokenDetail(BaseModel):
    chainId: int
    address: str
    name: str
    symbol: str
    decimals: int = -1
    tags: Optional[List[str]]
    coingeckoId: Optional[str]
    cmcId: Optional[str]
    lifiId: Optional[str]
    listedIn: Optional[List[str]]
    logoURI: Optional[str]
    verify: bool = False

    def __eq__(self, other):
        return hash(self) == hash(other)

    def __hash__(self):
        return hash("-".join([self.address.lower(), str(self.chainId)]))

    @property
    def checksum(self) -> str:
        return "-".join([self.address.lower(), str(self.chainId)])


class Token(BaseModel):
    detail: TokenDetail
    priceUSD: Optional[str] = None  # Later convert to float
    balance: Optional[str] = "0"
    value: Optional[str] = "0"

    def __eq__(self, other):
        return hash(self) == hash(other)

    def __hash__(self):
        return hash("-".join([self.detail.address.lower(), str(self.detail.chainId)]))