"""No-op mock provider implementations — Phase 11.9. Used by consumer connector dispatches and notify send flows. No real network calls or cross-service imports. """ from __future__ import annotations from typing import Any from uuid import UUID, uuid4 class MockCommunicationProvider: async def send( self, *, tenant_id: UUID, channel: str, template_key: str, to: str, payload: dict[str, Any], ) -> dict[str, Any]: return { "ok": True, "provider": "mock_communication", "communication_request_ref": f"communication:request:{uuid4()}", "channel": channel, "template_key": template_key, "to": to, "tenant_id": str(tenant_id), "payload": payload, } class MockNotificationProvider: async def notify( self, *, tenant_id: UUID, channel: str, template_key: str, payload: dict[str, Any], ) -> dict[str, Any]: return { "ok": True, "provider": "mock_notification", "communication_request_ref": f"communication:request:{uuid4()}", "channel": channel, "template_key": template_key, "tenant_id": str(tenant_id), "payload": payload, } class MockHospitalityProvider: async def resolve_menu_ref( self, *, tenant_id: UUID, menu_ref: str ) -> dict[str, Any]: return {"ok": True, "menu_ref": menu_ref, "provider": "mock_hospitality"} class MockMarketplaceProvider: async def resolve_product_ref( self, *, tenant_id: UUID, product_ref: str ) -> dict[str, Any]: return {"ok": True, "product_ref": product_ref, "provider": "mock_marketplace"} class MockSportsCenterProvider: async def resolve_member_ref( self, *, tenant_id: UUID, member_ref: str ) -> dict[str, Any]: return {"ok": True, "member_ref": member_ref, "provider": "mock_sports_center"} class MockCRMProvider: async def resolve_contact( self, *, tenant_id: UUID, contact_ref: str ) -> dict[str, Any]: return {"ok": True, "contact_ref": contact_ref, "provider": "mock_crm"} class MockAIProvider: async def generate_content( self, *, tenant_id: UUID, task: str, context: dict[str, Any] ) -> dict[str, Any]: return { "ok": True, "provider": "mock_ai", "generated_content_ref": f"ai:content:{uuid4()}", "task": task, "tenant_id": str(tenant_id), "context": context, }