from __future__ import annotations

from fastapi import APIRouter
from datetime import datetime, timezone

from app.config import settings
from app.api.trading import simulation_state
from app.streaming.binance_hub import hub as binance_hub
from app.streaming.alpha_hub import alpha_hub

router = APIRouter(prefix="/status", tags=["Status"]) 


@router.get("")
async def get_status():
    pos = simulation_state.get("position")
    eq = float(simulation_state.get("cash", 0.0)) + (
        float(pos["quantity"]) * float(pos["avg_price"]) if pos else 0.0
    )
    return {
        "time": datetime.now(timezone.utc).isoformat(),
        "app": {"name": settings.APP_NAME, "version": settings.APP_VERSION},
        "simulation": {
            "cash": float(simulation_state.get("cash", 0.0)),
            "equity_est": eq,
            "open_position": bool(pos),
        },
        "streams": {
            "binance": binance_hub.get_status(),
            "alpha_vantage": alpha_hub.get_status(),
        },
    }