"""
Constants for Odos API client
"""
ODOS_API_BASE = "https://api.odos.xyz"
USER_AGENT = "odos-mcp/0.1"
# Odos Router V2 contract address
ODOS_ROUTER_ADDRESS = "0xcf5540fffcdc3d510b18bfca6d2b9987b0772559"
# Chain information
CHAIN_INFO = {
1: {"name": "Ethereum", "symbol": "ETH", "aliases": ["ethereum", "eth", "mainnet"]},
137: {"name": "Polygon", "symbol": "MATIC", "aliases": ["polygon", "matic"]},
42161: {"name": "Arbitrum", "symbol": "ARB", "aliases": ["arbitrum", "arb"]},
10: {"name": "Optimism", "symbol": "OP", "aliases": ["optimism", "op"]},
8453: {"name": "Base", "symbol": "BASE", "aliases": ["base"]},
324: {"name": "zkSync Era", "symbol": "ZK", "aliases": ["zksync", "zk"]},
5000: {"name": "Mantle", "symbol": "MNT", "aliases": ["mantle", "mnt"]},
34443: {"name": "Mode", "symbol": "MODE", "aliases": ["mode"]},
59144: {"name": "Linea", "symbol": "LINEA", "aliases": ["linea"]},
56: {"name": "BNB Chain", "symbol": "BNB", "aliases": ["bnb", "bsc", "binance"]},
43114: {"name": "Avalanche", "symbol": "AVAX", "aliases": ["avalanche", "avax"]},
250: {"name": "Fantom", "symbol": "FTM", "aliases": ["fantom", "ftm"]},
25: {"name": "Cronos", "symbol": "CRO", "aliases": ["cronos", "cro"]},
}
# Build reverse lookup for chain aliases
CHAIN_ALIASES = {}
for chain_id, info in CHAIN_INFO.items():
for alias in info["aliases"]:
CHAIN_ALIASES[alias.lower()] = chain_id
# Common token addresses to avoid API calls
COMMON_TOKENS = {
1: { # Ethereum
"ETH": "0x0000000000000000000000000000000000000000",
"WETH": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"USDC": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"USDT": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"DAI": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
"WBTC": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
"LINK": "0x514910771AF9Ca656af840dff83E8264EcF986CA",
"UNI": "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984",
}
}