"""Channel provider contracts — all external delivery goes through these adapters.""" from __future__ import annotations from dataclasses import dataclass, field from typing import Any, Protocol from uuid import UUID @dataclass class SendRequest: tenant_id: UUID channel: str to_address: str body: str from_address: str | None = None subject: str | None = None metadata: dict[str, Any] = field(default_factory=dict) @dataclass class SendResult: success: bool provider_message_id: str | None = None error_code: str | None = None error_message: str | None = None raw_response: dict[str, Any] | None = None latency_ms: int | None = None @dataclass class BalanceResult: balance: float | None currency: str | None = None raw: dict[str, Any] | None = None @dataclass class ProviderHealth: healthy: bool detail: str | None = None class ChannelProvider(Protocol): """Protocol every channel adapter must implement.""" provider_kind: str channel: str async def send(self, request: SendRequest, credentials: dict[str, Any]) -> SendResult: ... async def get_balance(self, credentials: dict[str, Any]) -> BalanceResult: ... async def health_check(self, credentials: dict[str, Any]) -> ProviderHealth: ...