from __future__ import annotations
from typing import Protocol
from qdrant_client.models import SparseVector
from voice_rag.core.models import Chunk, RetrievedChunk

class VectorStore(Protocol):
    def ensure_collection(self, vector_size: int) -> None: ...
    def upsert(self, chunks: list[Chunk], dense_vectors: list[list[float]], sparse_vectors: list[SparseVector] | None = None, recreate: bool = False) -> int: ...
    def query(self, dense_vector: list[float], sparse_vector: SparseVector | None = None, limit: int = 5, score_threshold: float = 0.0) -> list[RetrievedChunk]: ...
    def collection_stats(self) -> dict[str, bool | int | None]: ...
    def close(self) -> None: ...
