"""No-op mock implementations of platform provider contracts — Phase 14.7."""
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 MockExperienceProvider:
    async def resolve_site(
        self, *, tenant_id: UUID, site_ref: str
    ) -> dict[str, Any]:
        return {"ok": True, "site_ref": site_ref, "provider": "mock_experience"}


class MockStorageProvider:
    async def resolve_file(
        self, *, tenant_id: UUID, file_ref: str
    ) -> dict[str, Any]:
        return {"ok": True, "file_ref": file_ref, "provider": "mock_storage"}


class MockIdentityProvider:
    async def resolve_user(
        self, *, tenant_id: UUID, user_ref: str
    ) -> dict[str, Any]:
        return {"ok": True, "user_ref": user_ref, "provider": "mock_identity"}


class MockBookingEngineProvider:
    async def reserve_slot(
        self, *, tenant_id: UUID, request: dict[str, Any]
    ) -> dict[str, Any]:
        return {"ok": True, "provider": "mock_booking_engine", "request": request}
