from __future__ import annotations

from fastapi import APIRouter

from jarvis_finance.api.schemas.crypto_trader import (
    CryptoTraderScorecard,
    CryptoTraderSignal,
    CryptoTraderSnapshot,
    CryptoTraderStatus,
    HyperliquidPortfolioSnapshot,
    TradeApprovalRequest,
    TradeApprovalResponse,
    TradeIntent,
)
from jarvis_finance.services.crypto_trader_bridge import (
    build_crypto_trader_snapshot,
    get_crypto_trader_scorecards,
    get_crypto_trader_signals,
    get_crypto_trader_status,
    get_hyperliquid_portfolio,
    get_trade_intents,
    record_trade_approval,
)

router = APIRouter(tags=["crypto-trader"])


@router.get("/crypto-trader/status", response_model=CryptoTraderStatus)
def crypto_trader_status() -> CryptoTraderStatus:
    return get_crypto_trader_status()


@router.get("/crypto-trader/signals", response_model=list[CryptoTraderSignal])
def crypto_trader_signals() -> list[CryptoTraderSignal]:
    return get_crypto_trader_signals()


@router.get("/crypto-trader/scorecard", response_model=list[CryptoTraderScorecard])
def crypto_trader_scorecard() -> list[CryptoTraderScorecard]:
    return get_crypto_trader_scorecards()


@router.get("/crypto-trader/hyperliquid-portfolio", response_model=HyperliquidPortfolioSnapshot)
def hyperliquid_portfolio() -> HyperliquidPortfolioSnapshot:
    return get_hyperliquid_portfolio()


@router.get("/crypto-trader/snapshot", response_model=CryptoTraderSnapshot)
def crypto_trader_snapshot() -> CryptoTraderSnapshot:
    return build_crypto_trader_snapshot()


@router.get("/crypto-trader/trade-intents", response_model=list[TradeIntent])
def crypto_trader_trade_intents() -> list[TradeIntent]:
    return get_trade_intents()


@router.post("/crypto-trader/trade-approvals", response_model=TradeApprovalResponse)
def crypto_trader_trade_approval(request: TradeApprovalRequest) -> TradeApprovalResponse:
    return record_trade_approval(request)
