"""
LLM 类型定义模块

统一导出所有核心类型、协议和异常定义。
"""

from .capabilities import ModelCapabilities, ModelModality, get_model_capabilities
from .exceptions import LLMErrorCode, LLMException, get_user_friendly_error_message
from .models import (
    CodeExecutionOutcome,
    EmbeddingTaskType,
    GeminiCodeExecution,
    GeminiGoogleSearch,
    GeminiUrlContext,
    LLMCacheInfo,
    LLMCodeExecution,
    LLMContentPart,
    LLMGroundingAttribution,
    LLMGroundingMetadata,
    LLMMessage,
    LLMResponse,
    LLMToolCall,
    LLMToolFunction,
    ModelDetail,
    ModelInfo,
    ModelName,
    ModelProvider,
    ProviderConfig,
    ResponseFormat,
    StructuredOutputStrategy,
    TaskType,
    ToolCategory,
    ToolChoice,
    ToolMetadata,
    ToolResult,
    UsageInfo,
)
from .protocols import ToolExecutable, ToolProvider

__all__ = [
    "CodeExecutionOutcome",
    "EmbeddingTaskType",
    "GeminiCodeExecution",
    "GeminiGoogleSearch",
    "GeminiUrlContext",
    "LLMCacheInfo",
    "LLMCodeExecution",
    "LLMContentPart",
    "LLMErrorCode",
    "LLMException",
    "LLMGroundingAttribution",
    "LLMGroundingMetadata",
    "LLMMessage",
    "LLMResponse",
    "LLMToolCall",
    "LLMToolFunction",
    "ModelCapabilities",
    "ModelDetail",
    "ModelInfo",
    "ModelModality",
    "ModelName",
    "ModelProvider",
    "ProviderConfig",
    "ResponseFormat",
    "StructuredOutputStrategy",
    "TaskType",
    "ToolCategory",
    "ToolChoice",
    "ToolExecutable",
    "ToolMetadata",
    "ToolProvider",
    "ToolResult",
    "UsageInfo",
    "get_model_capabilities",
    "get_user_friendly_error_message",
]
