import os
from dotenv import load_dotenv
from hyperliquid.utils import constants
from hyperliquid.info import Info

from config import BotConfig, RuntimePaths

load_dotenv()
CONFIG = BotConfig.from_file()
PATHS = RuntimePaths.from_config(CONFIG)
PATHS.ensure_dirs()
address = os.getenv("HL_MAIN_ADDRESS")
if address:
    address = address.strip()
info = Info(constants.MAINNET_API_URL)

def deep_scan():
    if not address:
        print("❌ Fehler: HL_MAIN_ADDRESS fehlt in der .env.")
        return
    print(f"\n--- 🔍 Hermes Deep-Scan: {address} ---")
    try:
        # 1. Check PERP / TRADING Account
        user_state = info.user_state(address)
        trading_val = float(user_state.get("marginSummary", {}).get("accountValue", 0))
        
        # 2. Check SPOT Account (Neu!)
        spot_state = info.spot_user_state(address)
        spot_val = 0
        for balance in spot_state.get("balances", []):
            if balance.get("coin") == "USDC":
                spot_val = float(balance.get("total", 0))

        # 3. Check VAULTS (HLP)
        vault_equities = info.user_vault_equities(address)
        vault_val = sum(float(v.get('equity', 0)) for v in vault_equities)

        print(f"💰 Spot-Wallet:      ${spot_val:.2f} USDC")
        print(f"📈 Trading-Konto:    ${trading_val:.2f} USDC")
        print(f"🏦 HLP-Vault:        ${vault_val:.2f} USDC")
        print(f"\n✅ GESAMT-GUTHABEN:  ${(spot_val + trading_val + vault_val):.2f} USDC")

        if (spot_val + trading_val + vault_val) == 0:
            print("\n⚠️ Hinweis: Wenn hier 0 steht, obwohl die Webseite Geld zeigt, prüfe bitte, ob die Adresse in der .env-Datei exakt ohne Leerzeichen geschrieben ist.")

    except Exception as e:
        print(f"❌ Fehler beim Deep-Scan: {e}")
    print("------------------------------------------\n")

if __name__ == "__main__":
    deep_scan()
