from datetime import datetime from pydantic import BaseModel, validator from mev_inspect.classifiers.specs.weth import WETH_ADDRESS from mev_inspect.schemas.transfers import ETH_TOKEN_ADDRESS WBTC_TOKEN_ADDRESS = "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599" LINK_TOKEN_ADDRESS = "0x514910771af9ca656af840dff83e8264ecf986ca" YEARN_TOKEN_ADDRESS = "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e" AAVE_TOKEN_ADDRESS = "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9" UNI_TOKEN_ADDRESS = "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984" USDC_TOKEN_ADDRESS = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" DAI_TOKEN_ADDRESS = "0x6b175474e89094c44da98b954eedeac495271d0f" REN_TOKEN_ADDRESS = "0x408e41876cccdc0f92210600ef50372656052a38" CUSDC_TOKEN_ADDRESS = "0x39aa39c021dfbae8fac545936693ac917d5e7563" CDAI_TOKEN_ADDRESS = "0x5d3a536e4d6dbd6114cc1ead35777bab948e3643" TOKEN_ADDRESSES = [ WBTC_TOKEN_ADDRESS, LINK_TOKEN_ADDRESS, YEARN_TOKEN_ADDRESS, AAVE_TOKEN_ADDRESS, UNI_TOKEN_ADDRESS, USDC_TOKEN_ADDRESS, DAI_TOKEN_ADDRESS, REN_TOKEN_ADDRESS, CUSDC_TOKEN_ADDRESS, CDAI_TOKEN_ADDRESS, ] TOKEN_NAME_BY_ADDRESS = { WETH_ADDRESS: "weth", ETH_TOKEN_ADDRESS: "ethereum", WBTC_TOKEN_ADDRESS: "wrapped-bitcoin", LINK_TOKEN_ADDRESS: "chainlink", YEARN_TOKEN_ADDRESS: "yearn-finance", AAVE_TOKEN_ADDRESS: "aave", UNI_TOKEN_ADDRESS: "uniswap", USDC_TOKEN_ADDRESS: "usd-coin", DAI_TOKEN_ADDRESS: "dai", REN_TOKEN_ADDRESS: "republic-protocol", CUSDC_TOKEN_ADDRESS: "compound-usd-coin", CDAI_TOKEN_ADDRESS: "cdai", } class Price(BaseModel): token_address: str usd_price: int timestamp: datetime @validator("token_address") def lower_token_address(cls, v: str) -> str: return v.lower()