"""Gateway module for TrikHub Python SDK."""

from trikhub.gateway.worker_protocol import (
    WorkerProtocol,
    InvokeParams,
    InvokeResult,
    WorkerErrorCodes,
)

from trikhub.gateway.session_storage import (
    SessionStorage,
    InMemorySessionStorage,
)

from trikhub.gateway.config_store import (
    ConfigStore,
    FileConfigStore,
    InMemoryConfigStore,
    TrikConfigContext,
    ConfigContext,
    ConfigStoreOptions,
)

from trikhub.gateway.storage_provider import (
    StorageProvider,
    SqliteStorageProvider,
    InMemoryStorageProvider,
    TrikStorageContext,
)

from trikhub.gateway.gateway import (
    TrikGateway,
    TrikGatewayConfig,
    ExecuteTrikOptions,
    LoadFromConfigOptions,
    ToolDefinition,
    TrikInfo,
    GatewayResultWithSession,
)

from trikhub.gateway.node_worker import (
    NodeWorker,
    NodeWorkerConfig,
    ExecuteNodeTrikOptions,
    get_shared_node_worker,
    shutdown_shared_node_worker,
)

__all__ = [
    # Worker Protocol
    "WorkerProtocol",
    "InvokeParams",
    "InvokeResult",
    "WorkerErrorCodes",
    # Session Storage
    "SessionStorage",
    "InMemorySessionStorage",
    # Config Store
    "ConfigStore",
    "FileConfigStore",
    "InMemoryConfigStore",
    "TrikConfigContext",
    "ConfigContext",
    "ConfigStoreOptions",
    # Storage Provider
    "StorageProvider",
    "SqliteStorageProvider",
    "InMemoryStorageProvider",
    "TrikStorageContext",
    # Gateway
    "TrikGateway",
    "TrikGatewayConfig",
    "ExecuteTrikOptions",
    "LoadFromConfigOptions",
    "ToolDefinition",
    "TrikInfo",
    "GatewayResultWithSession",
    # Node Worker (for executing JavaScript triks)
    "NodeWorker",
    "NodeWorkerConfig",
    "ExecuteNodeTrikOptions",
    "get_shared_node_worker",
    "shutdown_shared_node_worker",
]
