"""A2A (Agent-to-Agent Protocol) integration package.

Provides the local-mode facade, server-mode transport stubs, request/response
models, event streaming stubs, and version negotiation for the A2A boundary.

In **local mode** the :class:`A2aLocalFacade` maps A2A operation names to
direct Python method calls on existing application services.  No serialization,
no network, no authentication.

In **server mode** the :class:`A2aHttpTransport` is a stub that raises
:class:`A2aNotAvailableError` for every operation.  When server mode is
implemented the concrete transport will replace these stubs.

Server client protocols (:class:`ServerClient`, :class:`RemoteExecutionClient`,
:class:`AuthClient`) and their stub implementations are provided for forward
compatibility.  :class:`ServerConnectionConfig` validates connection parameters.
"""

from __future__ import annotations

from cleveragents.a2a.clients import (
    AuthClient,
    RemoteExecutionClient,
    ServerClient,
    StubAuthClient,
    StubRemoteExecutionClient,
    StubServerClient,
)
from cleveragents.a2a.errors import (
    A2aError,
    A2aNotAvailableError,
    A2aOperationNotFoundError,
    A2aVersionMismatchError,
)
from cleveragents.a2a.events import A2aEventQueue
from cleveragents.a2a.facade import A2aLocalFacade
from cleveragents.a2a.models import (
    A2aErrorDetail,
    A2aEvent,
    A2aRequest,
    A2aResponse,
    A2aVersion,
)
from cleveragents.a2a.server_config import ServerConnectionConfig
from cleveragents.a2a.transport import A2aHttpTransport
from cleveragents.a2a.versioning import A2aVersionNegotiator

__all__ = [
    "A2aError",
    "A2aErrorDetail",
    "A2aEvent",
    "A2aEventQueue",
    "A2aHttpTransport",
    "A2aLocalFacade",
    "A2aNotAvailableError",
    "A2aOperationNotFoundError",
    "A2aRequest",
    "A2aResponse",
    "A2aVersion",
    "A2aVersionMismatchError",
    "A2aVersionNegotiator",
    "AuthClient",
    "RemoteExecutionClient",
    "ServerClient",
    "ServerConnectionConfig",
    "StubAuthClient",
    "StubRemoteExecutionClient",
    "StubServerClient",
]
