"""
Core abstractions for the Video RAG system.

This module provides the foundational interfaces that enable:
- Pluggable video processors (transcription, OCR, detection, etc.)
- Swappable storage backends (S3, MinIO, local filesystem)
- Interchangeable vector databases (LanceDB, Pinecone, etc.)
- Multiple LLM providers (OpenAI, Anthropic, local models)

All implementations should inherit from these base classes to ensure
consistency and interoperability across the system.
"""

from mini_videorag.core.processor import BaseVideoProcessor, ProcessorResult
from mini_videorag.core.storage import BaseObjectStorage
from mini_videorag.core.llm import BaseLLM, LLMResponse
from mini_videorag.core.pipeline import ProcessorPipeline, PipelineResult
from mini_videorag.core.video_rag import VideoRAG
from mini_videorag.core.video_rag_session import VideoRAGSession
from mini_videorag.core.exceptions import (
    ProcessorError,
    VideoLoadError,
    ModelInitError,
    InsufficientDataError,
    ProcessingError,
)
from mini_videorag.types import VideoRAGAnswer

__all__ = [
    "BaseVideoProcessor",
    "ProcessorResult",
    "BaseObjectStorage",
    "BaseLLM",
    "LLMResponse",
    "ProcessorPipeline",
    "PipelineResult",
    "VideoRAG",
    "VideoRAGSession",
    "VideoRAGAnswer",
    "ProcessorError",
    "VideoLoadError",
    "ModelInitError",
    "InsufficientDataError",
    "ProcessingError",
]
