import os from decimal import Decimal # --- GLOBAL SETTINGS --- # Use environment variables to switch profiles # Example: TARGET_DEX="UNISWAP_V3" TARGET_DEX = os.environ.get("TARGET_DEX", "UNISWAP_V3") STATUS_FILE = os.environ.get("STATUS_FILE", "hedge_status.json") # --- DEX PROFILES --- DEX_PROFILES = { "UNISWAP_V3": { "NAME": "Uniswap V3 (Arbitrum)", "COIN_SYMBOL": "ETH", # Asset to hedge on Hyperliquid "RPC_ENV_VAR": "MAINNET_RPC_URL", # Env var to read RPC from "NPM_ADDRESS": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", "ROUTER_ADDRESS": "0xE592427A0AEce92De3Edee1F18E0157C05861564", "WETH_ADDRESS": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", # WETH "USDC_ADDRESS": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", # USDC "POOL_FEE": 500, # 0.05% }, "PANCAKESWAP_V3": { "NAME": "PancakeSwap V3 (Arbitrum)", "COIN_SYMBOL": "ETH", "RPC_ENV_VAR": "MAINNET_RPC_URL", "NPM_ADDRESS": "0x46A15B0b27311cedF172AB29E4f4766fbE7F4364", "ROUTER_ADDRESS": "0x1b81D678ffb9C0263b24A97847620C99d213eB14", "WETH_ADDRESS": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", "USDC_ADDRESS": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", "POOL_FEE": 500, }, "UNISWAP_BNB": { "NAME": "Uniswap V3 (BNB Chain)", "COIN_SYMBOL": "BNB", # Hedge BNB "RPC_ENV_VAR": "BNB_RPC_URL", # Needs a BSC RPC # Uniswap V3 Official Addresses on BNB Chain "NPM_ADDRESS": "0x7b8A01B39D58278b5DE7e48c8449c9f4F5170613", "ROUTER_ADDRESS": "0xB971eF87ede563556b2ED4b1C0b0019111Dd35d2", # Pool: 0x47a90a2d92a8367a91efa1906bfc8c1e05bf10c4 # Tokens: WBNB / USDT "WETH_ADDRESS": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", # WBNB "USDC_ADDRESS": "0x55d398326f99059fF775485246999027B3197955", # USDT (BSC) "POOL_FEE": 500, # 0.05% }, "PANCAKESWAP_BNB": { "NAME": "PancakeSwap V3 (BNB Chain)", "COIN_SYMBOL": "BNB", "RPC_ENV_VAR": "BNB_RPC_URL", "NPM_ADDRESS": "0x46A15B0b27311cedF172AB29E4f4766fbE7F4364", "ROUTER_ADDRESS": "0x1b81D678ffb9C0263b24A97847620C99d213eB14", # Smart Router # Pool: 0x172fcD41E0913e95784454622d1c3724f546f849 (USDT/WBNB) "WETH_ADDRESS": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", # WBNB "USDC_ADDRESS": "0x55d398326f99059fF775485246999027B3197955", # USDT "POOL_FEE": 100, } } # --- STRATEGY SETTINGS --- MONITOR_INTERVAL_SECONDS = 60 CLOSE_POSITION_ENABLED = True OPEN_POSITION_ENABLED = True REBALANCE_ON_CLOSE_BELOW_RANGE = True TARGET_INVESTMENT_VALUE_USDC = 2000 INITIAL_HEDGE_CAPITAL_USDC = 1000 RANGE_WIDTH_PCT = Decimal("0.05") # +/- 5% SLIPPAGE_TOLERANCE = Decimal("0.02") # 2% TRANSACTION_TIMEOUT_SECONDS = 30 # --- HELPER TO GET ACTIVE CONFIG --- def get_current_config(): conf = DEX_PROFILES.get(TARGET_DEX) if not conf: raise ValueError(f"Unknown DEX profile: {TARGET_DEX}") return conf