#!/usr/bin/env python3
"""
GENESIS QWEN UNIFIED MODULE
============================
Enterprise-grade Qwen integration for Genesis.

This module consolidates 5+ fragmented implementations into a single,
battle-tested system with:
- Correct endpoint (152.53.201.152:23405)
- Circuit breaker and retry logic
- Rate limiting with AIVA priority
- Model warming for <30s cold start
- Health monitoring
- PostgreSQL state storage (Rule 6: NO SQLite)

Usage:
    from core.qwen import UnifiedQwenClient, QwenConfig

    # Get singleton client
    client = UnifiedQwenClient()

    # Generate text
    response = client.generate_sync("What is 2+2?")
    print(response.text)

    # Check health
    status = client.health_monitor.check_health()
    print(status)

Deprecated implementations (DO NOT USE):
- /qwen_client.py (wrong port localhost:11434)
- /AIVA/qwen-unified/qwen_client.py (Elestio API)
- /model_switcher.py (Dashscope SDK)

Author: Genesis System
Version: 1.0.0
"""

__version__ = "1.0.0"
__author__ = "Genesis System"

# Configuration
from .config import QwenConfig, get_default_config, test_connection

# Exceptions
from .exceptions import (
    QwenError,
    QwenConnectionError,
    QwenTimeoutError,
    QwenModelNotFoundError,
    QwenRateLimitError,
    QwenCircuitOpenError,
    QwenResponseError,
    QwenWarmupError,
)

# Core client
from .unified_client import UnifiedQwenClient, QwenResponse, get_qwen_client

# Rate limiting
from .rate_maximizer import QwenRateMaximizer

# Model warming
from .model_warmer import QwenModelWarmer

# Health monitoring
from .health_monitor import QwenHealthMonitor, HealthStatus

# Storage (PostgreSQL - Rule 6 compliant)
from .storage import QwenMetricsStore, get_metrics_store


def get_client() -> UnifiedQwenClient:
    """
    Get the unified Qwen client singleton.

    Returns:
        UnifiedQwenClient: The singleton client instance
    """
    return UnifiedQwenClient()


__all__ = [
    # Version
    "__version__",
    # Configuration
    "QwenConfig",
    "get_default_config",
    "test_connection",
    # Exceptions
    "QwenError",
    "QwenConnectionError",
    "QwenTimeoutError",
    "QwenModelNotFoundError",
    "QwenRateLimitError",
    "QwenCircuitOpenError",
    "QwenResponseError",
    "QwenWarmupError",
    # Client
    "UnifiedQwenClient",
    "QwenResponse",
    "get_client",
    "get_qwen_client",
    # Rate limiting
    "QwenRateMaximizer",
    # Model warming
    "QwenModelWarmer",
    # Health monitoring
    "QwenHealthMonitor",
    "HealthStatus",
]


# VERIFICATION_STAMP
# Story: STORY-001
# Verified By: CLAUDE
# Verified At: 2026-01-22
# Tests: Pending
# Coverage: Pending
