"""Pure configurator surface for mgf-vm-core.

This subpackage holds:

* the read-path data classes (:mod:`.types`, Wave 1),
* the pure planners + XML helpers (Wave 2): :mod:`.xml_helpers` plus the
  per-subsystem ``plan*`` functions in :mod:`.cpu`, :mod:`.memory`,
  :mod:`.storage`, :mod:`.network`, :mod:`.display`, :mod:`.shares`,
  :mod:`.passthrough`, :mod:`.firmware`, and :mod:`.metadata`, and
* the pure read-path walker :func:`.reader.read_config`, re-exported
  here as :func:`read_config`.

Each ``plan*`` computes a :class:`.types.ConfigChange` from an
*already-parsed* :class:`xml.etree.ElementTree.Element` (the adapter
parses untrusted domain XML with ``defusedxml`` and injects the tree).
:func:`read_config` likewise walks an injected ``Element`` and returns a
:class:`.types.VMConfig`. The XML *parse* (``parse_domain_xml``, built on
``defusedxml``), the live-XML FETCH (``provider.domain_xml``), and the
``apply*`` / ``apply_config_change`` engine-driving halves are all
adapter-bound and remain in ``mgf-vm``.
"""

from __future__ import annotations

from mgf.vm.core.configurator.reader import read_config

__all__ = ["read_config"]
