"""First-class fake implementations of the four Protocols (D-F3).

These are NOT mocks. They are working in-memory adapters that
satisfy ``HypervisorBackend``, ``StorageBackend``, and
``DeviceBackend`` with correct semantics — idempotency, typed
errors, observable state changes, cancellation honored. Every
downstream test suite, the SDK's ``InProcessTransport``, and the
dev loop's ``make dev`` use them.

Per ``contracts.md`` §10 the conformance suite runs against these
*as well as* against real engines. If the suite fails on the
real engine but passes on the fake, the real engine is wrong.
If the suite fails on the fake, the contract definition is wrong.
This bidirectional check is what keeps the seam honest.

Each fake takes an optional ``clock`` parameter (callable returning
a UTC datetime) so tests can drive time deterministically. The
default uses ``datetime.now(UTC)``.
"""

from __future__ import annotations

from mgf.vm.core.fakes.device import FakeDeviceBackend
from mgf.vm.core.fakes.disk import FakeHostDiskBackend
from mgf.vm.core.fakes.domain_policy import FakeDomainPolicyBackend
from mgf.vm.core.fakes.guest_agent import FakeGuestAgentBackend
from mgf.vm.core.fakes.hypervisor import FakeHypervisorBackend
from mgf.vm.core.fakes.metrics import FakeMetricsBackend
from mgf.vm.core.fakes.network import FakeNetworkBackend
from mgf.vm.core.fakes.storage import FakeStorageBackend

__all__ = [
    "FakeDeviceBackend",
    "FakeDomainPolicyBackend",
    "FakeGuestAgentBackend",
    "FakeHostDiskBackend",
    "FakeHypervisorBackend",
    "FakeMetricsBackend",
    "FakeNetworkBackend",
    "FakeStorageBackend",
]
