"""No-op mock implementations of platform provider contracts — Phase 12.7.

Used only by the local Connectors shell to simulate dispatch acknowledgement
without any real network calls or cross-service imports. Real integrations
are owned by their respective platform services and reached via API/events
only, never via httpx or direct imports from this package.
"""
from __future__ import annotations

from typing import Any
from uuid import UUID


class MockAccountingProvider:
    async def create_receivable_ref(
        self, *, tenant_id: UUID, reference: str, payload: dict[str, Any]
    ) -> dict[str, Any]:
        return {"ok": True, "reference": reference, "provider": "mock_accounting"}


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 MockLoyaltyProvider:
    async def resolve_member(
        self, *, tenant_id: UUID, member_ref: str
    ) -> dict[str, Any]:
        return {"ok": True, "member_ref": member_ref, "provider": "mock_loyalty"}


class MockCommunicationProvider:
    async def send(
        self,
        *,
        tenant_id: UUID,
        channel: str,
        template_key: str,
        to: str,
        payload: dict[str, Any],
    ) -> None:
        return None


class MockDeliveryProvider:
    async def create_delivery_ref(
        self, *, tenant_id: UUID, reference: str, payload: dict[str, Any]
    ) -> dict[str, Any]:
        return {"ok": True, "reference": reference, "provider": "mock_delivery"}


class MockWebsiteBuilderProvider:
    async def resolve_site(
        self, *, tenant_id: UUID, site_ref: str
    ) -> dict[str, Any]:
        return {"ok": True, "site_ref": site_ref, "provider": "mock_website_builder"}
