"""Embedding providers for GNN router inference.

This module provides abstractions for text embeddings used by the GNN router.
The protocol-first design allows swapping implementations without changing
routing logic - use LocalQwen3Embedding for GPU inference, or implement
RemoteEmbeddingClient for microservice deployment.

Example:
    from embergraphrouter.embeddings import LocalQwen3Embedding

    embedder = LocalQwen3Embedding.load(device="cuda")
    embeddings = embedder.embed(["What is 2+2?", "Prove Fermat's theorem"])
"""

from embergraphrouter.embeddings.base import (
    EmbeddingProvider,
    EmbeddingResult,
)
from embergraphrouter.embeddings.qwen3 import (
    DEFAULT_DIMENSION,
    DEFAULT_MODEL_NAME,
    ROUTER_INSTRUCTION,
    LocalQwen3Embedding,
)

__all__ = [
    # Protocol and result types
    "EmbeddingProvider",
    "EmbeddingResult",
    # Local implementation
    "LocalQwen3Embedding",
    # Constants
    "DEFAULT_DIMENSION",
    "DEFAULT_MODEL_NAME",
    "ROUTER_INSTRUCTION",
]
