# app/src/trading/strategies/base.py

from __future__ import annotations

from dataclasses import dataclass
from typing import Protocol

from src.trading.strategies.signals import SignalResult


@dataclass(slots=True)
class StrategyContext:
    # выбранный торговый инструмент
    symbol: str

    # текущий режим автоторговли: OBSERVING / RUNNING
    status: str

    # риск на сделку в процентах
    risk_percent: float | None = None


class BaseStrategy(Protocol):
    # техническое имя стратегии
    name: str

    # выполнить анализ и вернуть торговый сигнал
    def analyze(self, context: StrategyContext) -> SignalResult:
        ...

    # сбросить runtime-память стратегии
    def reset_runtime(self, symbol: str | None = None) -> None:
        ...