"""Channel adapter contracts for gateway-facing integrations.""" from __future__ import annotations from typing import Any, Protocol from beaver.foundation.events import InboundMessage, OutboundMessage class ChannelAdapter(Protocol): """Minimal contract every runtime channel adapter must implement.""" channel_id: str kind: str mode: str async def start(self) -> None: """Prepare the channel before messages are routed.""" async def stop(self) -> None: """Stop accepting/routing channel messages.""" async def send(self, message: OutboundMessage) -> None: """Deliver an outbound message to the concrete channel.""" class ChannelInboundSink(Protocol): """Runtime callback used by adapters to submit normalized inbound messages.""" async def accept_inbound(self, message: InboundMessage) -> Any: """Accept a normalized inbound message from an adapter."""