from __future__ import annotations

import logging

import httpx

from config.settings import settings

logger = logging.getLogger(__name__)

TIMEOUT = 5.0


class BrainBotClient:
    """يرسل الإشارة إلى Brain Bot. الفشل لا يُوقف RSI Bot."""

    def __init__(self) -> None:
        self._client: httpx.AsyncClient | None = None

    async def start(self) -> None:
        self._client = httpx.AsyncClient(
            base_url=settings.BRAIN_BOT_URL, timeout=TIMEOUT
        )
        logger.info(f"BrainBotClient متصل بـ: {settings.BRAIN_BOT_URL}")

    async def stop(self) -> None:
        if self._client:
            await self._client.aclose()

    async def send_signal(self, payload: dict) -> bool:
        try:
            resp = await self._client.post("/analysis_signal", json=payload)
            if resp.status_code == 202:
                logger.info(
                    f"إشارة RSI أُرسلت: {payload['action']} {payload['symbol']} "
                    f"ثقة={payload['confidence']}"
                )
                return True
            logger.warning(f"Brain Bot رفض: {resp.status_code} | {resp.text}")
        except httpx.TimeoutException:
            logger.warning(f"timeout عند إرسال الإشارة ({TIMEOUT}s)")
        except Exception as e:
            logger.warning(f"خطأ عند إرسال الإشارة: {e}")
        return False


brain_client = BrainBotClient()
