"""Lightweight inference module for EmberGraphRouter.

This module provides fast inference paths with pre-cached artifacts.

Primary API:
    TieredRouter - Intelligent difficulty-aware routing (recommended)
    GraphAwareRouter - Full graph context for best accuracy (68% frac_oracle)
    EB1Router - Fast inference without graph context (lower accuracy)

Tiered Routing:
    The TieredRouter automatically classifies queries into three tiers:
    - TRIVIAL: Easy queries where all models succeed -> cheapest model
    - DISCRIMINATIVE: GNN routing adds value -> GNN top pick
    - UNCERTAIN: Hard queries needing ensemble -> full EB1

Legacy API:
    RouterInference - Lower-level router (requires pre-computed embeddings)
"""

from .eb1_router import EB1Router, EB1RouterConfig, EmbeddingClient
from .eb1_router import RoutingResult  # Use the one with latency fields
from .graph_inference import GraphAwareRouter, GraphRouterConfig, GraphRoutingResult
from .router_inference import (
    CachedArtifacts,
    RouterInference,
    create_inference_cache,
)
from .tiered_router import (
    DEFAULT_TIER_CONFIGS,
    DifficultySignals,
    InferenceTier,
    TierConfig,
    TieredRouter,
    TieredRoutingResult,
    TieredThresholds,
    calibrate_thresholds_from_data,
)

__all__ = [
    # Primary API - Tiered routing (recommended)
    "TieredRouter",
    "TieredThresholds",
    "TierConfig",
    "InferenceTier",
    "DifficultySignals",
    "TieredRoutingResult",
    "calibrate_thresholds_from_data",
    "DEFAULT_TIER_CONFIGS",
    # Primary API - Graph-aware
    "GraphAwareRouter",
    "GraphRouterConfig",
    "GraphRoutingResult",
    # Primary API - Fast (no graph context)
    "EB1Router",
    "EB1RouterConfig",
    "RoutingResult",
    # Embedding client (for custom usage)
    "EmbeddingClient",
    # Legacy / low-level
    "CachedArtifacts",
    "RouterInference",
    "create_inference_cache",
]
