from abc import ABC, abstractmethod


class LLMProvider(ABC):
    @abstractmethod
    async def analyze(self, text: str, system_prompt: str,
                      already_found: list[dict]) -> list[dict]:
        """Analyze text and return list of findings.

        Each finding is a dict with: start, end, word, rule, section,
        description, weight, style, tab, source="deep"
        """
        ...
