"""Pure first-boot provisioning renderers.

This package holds the **pure-domain** halves of VManager's three
first-boot provisioning generators:

* :mod:`mgf.vm.core.provisioning.cloud_init` — cloud-init NoCloud
  ``user-data`` / ``meta-data`` builders + text renderers.
* :mod:`mgf.vm.core.provisioning.preseed` — Debian/Ubuntu
  ``preseed.cfg`` renderer.
* :mod:`mgf.vm.core.provisioning.kickstart` — RHEL/Fedora ``ks.cfg``
  renderer.

Each module exports a side-effect-free function (``render`` /
``build_*`` / ``render_*``) that turns a :class:`ProvisioningInput`
into a text artefact. The impure halves — atomic file writes, the
``cloud-localds`` subprocess, and seed-ISO packaging — are
**adapter-bound** and deliberately left in the legacy ``mgf.vm``
umbrella; they would taint this pure core (they pull in
``common.atomic_io`` / ``common.shell`` / ``subprocess``).

Type reconciliation (Wave 1): the renderers consume a small
provisioning-input shape (``name`` + a :class:`ProvisioningSpec`).
This is a *different layer* from the engine-neutral
:class:`mgf.vm.core.contracts.VmSpec` (name/cpu/memory_bytes), which
carries no first-boot provisioning data. The input type therefore
lives here under its own name (:class:`ProvisioningInput`) so it does
not shadow the core ``VmSpec``.
"""

from __future__ import annotations

from mgf.vm.core.provisioning.spec import ProvisioningInput, ProvisioningSpec

__all__ = ["ProvisioningInput", "ProvisioningSpec"]
