"""Abstract base class for all rewardprobe adapters."""

from __future__ import annotations

from abc import ABC, abstractmethod

from rewardprobe.types import NormalizedEnvironment


class BaseAdapter(ABC):
    """Convert framework-specific objects to a NormalizedEnvironment.

    Every adapter must implement :meth:`adapt`, which returns a
    :class:`NormalizedEnvironment` ready for the attack families to probe.
    """

    @abstractmethod
    def adapt(self) -> NormalizedEnvironment:
        """Convert framework-specific objects to NormalizedEnvironment."""
        ...
