from __future__ import annotations

from typing import Any, Dict, List

_TEMPLATES: Dict[str, Dict[str, Any]] = {
    "analysis_default": {
        "name": "analysis_default",
        "description": "General market analysis prompt with technicals and news context",
        "variables": ["symbol", "timeframe", "recent_news", "technicals"],
        "body": (
            "You are a trading assistant. Analyze {{symbol}} on {{timeframe}} timeframe.\n"
            "Consider technical signals: {{technicals}} and relevant news: {{recent_news}}.\n"
            "Provide a concise recommendation (BUY/SELL/HOLD) with reasoning and risk notes."
        ),
    },
    "risk_control_default": {
        "name": "risk_control_default",
        "description": "Risk control instructions for planning",
        "variables": ["max_position_fraction", "min_rr_ratio"],
        "body": (
            "Adhere to risk rules: position <= {{max_position_fraction}} of equity,"
            " risk-reward ratio >= {{min_rr_ratio}} whenever applicable."
        ),
    },
}


def list_templates() -> List[Dict[str, Any]]:
    return [
        {"name": t["name"], "description": t["description"], "variables": t["variables"]}
        for t in _TEMPLATES.values()
    ]


def get_template(name: str) -> Dict[str, Any]:
    if name not in _TEMPLATES:
        raise KeyError("Template not found")
    return _TEMPLATES[name]