from abc import ABC, abstractmethod
from app.models.schemas import SubReview


class BaseAgent(ABC):
    """Abstract base class for all review agents."""

    name: str = "Base Agent"

    @abstractmethod
    async def analyze(self, file_data: bytes, file_type: str) -> SubReview:
        """
        Analyze the proof and return a SubReview.

        Args:
            file_data: Raw bytes of the file to analyze
            file_type: MIME type of the file

        Returns:
            SubReview containing ragStatus, feedback, and issues
        """
        pass
