"""RetrievalProvider - vector/keyword/graph/GraphRAG/hybrid."""
from __future__ import annotations

from typing import Any, Protocol, runtime_checkable


@runtime_checkable
class RetrievalProvider(Protocol):
    """Provider pro retrieval strategii.

    GraphRAG je dalsi strategie, ne nahrada klasickeho RAG.
    Router muze kombinovat vice strategii.
    """

    @property
    def strategy_name(self) -> str:
        ...

    async def retrieve(
        self,
        query: str,
        *,
        limit: int = 10,
        filters: dict[str, Any] | None = None,
    ) -> list[dict[str, Any]]:
        ...
