"""
SMF - Enterprise MCP Framework

A production-ready framework built on FastMCP for creating,
structuring, and deploying MCP servers.
"""

from smf.core import AppBuilder, ServerFactory, create_server
from smf.exceptions import (
    AuthenticationError,
    AuthorizationError,
    ComponentNotFoundError,
    ConfigurationError,
    ConnectionRefusedError,
    ConnectionTimeoutError,
    DuplicateRegistrationError,
    InsufficientScopesError,
    InvalidConfigurationError,
    MissingConfigurationError,
    PluginError,
    PluginLoadError,
    PluginNotFoundError,
    RegistryError,
    SMFConnectionError,
    SMFError,
    ToolError,
    ToolExecutionError,
    ToolValidationError,
    TransportError,
    UnsupportedTransportError,
)
from smf.registry import ComponentMetadata, ComponentRegistry
from smf.smf_logging import (
    SMFLogger,
    clear_log_context,
    configure_logging,
    get_logger,
    set_log_context,
)

__version__ = "0.2.0"

__all__ = [
    # Core
    "AppBuilder",
    "ServerFactory",
    "create_server",
    "ComponentRegistry",
    "ComponentMetadata",
    # Exceptions - Base
    "SMFError",
    # Exceptions - Configuration
    "ConfigurationError",
    "MissingConfigurationError",
    "InvalidConfigurationError",
    # Exceptions - Connection
    "SMFConnectionError",
    "ConnectionTimeoutError",
    "ConnectionRefusedError",
    # Exceptions - Plugin
    "PluginError",
    "PluginNotFoundError",
    "PluginLoadError",
    # Exceptions - Registry
    "RegistryError",
    "DuplicateRegistrationError",
    "ComponentNotFoundError",
    # Exceptions - Auth
    "AuthenticationError",
    "AuthorizationError",
    "InsufficientScopesError",
    # Exceptions - Transport
    "TransportError",
    "UnsupportedTransportError",
    # Exceptions - Tool
    "ToolError",
    "ToolExecutionError",
    "ToolValidationError",
    # Logging
    "get_logger",
    "set_log_context",
    "clear_log_context",
    "configure_logging",
    "SMFLogger",
]
