from __future__ import annotations

from pathlib import Path
from typing import Any, Protocol, runtime_checkable
from collections.abc import Sequence

@runtime_checkable
class RAGProtocol(Protocol):
    def ingest(
        self,
        *,
        folder: Path | None = None,
        files: Sequence[Path | str] | None = None,
        max_files: int | None = None,
        **kwargs: Any,
    ) -> int: ...

    def query(self, question: str, **kwargs: Any) -> Any: ...