"""mgf.vm.core.monitor — pure monitoring-domain primitives.

Wave 1 shipped the in-memory :class:`~mgf.vm.core.monitor.state.StateStore`
registry. Wave 2 adds the pure :mod:`~mgf.vm.core.monitor.dashboard` slice
(cross-references the store with injected metrics). Wave 2b adds the
:class:`~mgf.vm.core.monitor.history.MonitorHistory` persistence Protocol
(D-G10) + its pure row types (:class:`~mgf.vm.core.monitor.history.EventRow`,
:class:`~mgf.vm.core.monitor.history.HourlyMetrics`), the pure
:func:`~mgf.vm.core.monitor.transitions.infer_trigger_source` helper, and the
first-class :class:`~mgf.vm.core.monitor.fake_history.FakeMonitorHistory`.
The event-driven subscriber, host sampling (psutil), the concrete SQLite
``History``, the metrics poller, the maintenance routine, and alerting
remain engine/adapter-bound and live outside the pure core.
"""

from __future__ import annotations

from mgf.vm.core.monitor.dashboard import (
    DashboardEntry,
    MetricsLookup,
    MetricsSource,
    entry_for,
    list_vms,
    metrics_from_provider,
)
from mgf.vm.core.monitor.fake_history import FakeMonitorHistory
from mgf.vm.core.monitor.history import (
    EventFilter,
    EventRow,
    HourlyMetrics,
    MonitorHistory,
)
from mgf.vm.core.monitor.state import StateStore
from mgf.vm.core.monitor.transitions import infer_trigger_source

__all__ = [
    "DashboardEntry",
    "EventFilter",
    "EventRow",
    "FakeMonitorHistory",
    "HourlyMetrics",
    "MetricsLookup",
    "MetricsSource",
    "MonitorHistory",
    "StateStore",
    "entry_for",
    "infer_trigger_source",
    "list_vms",
    "metrics_from_provider",
]
