"""Value-object base — immutable, compared by value.

Subclass with ``@dataclass(frozen=True)`` and add fields; equality/hash come from
the dataclass. Value objects validate their own invariants in ``__post_init__`` or a
``parse`` classmethod and are never mutated after construction.
"""

from __future__ import annotations

from dataclasses import dataclass


@dataclass(frozen=True)
class ValueObject:
    """Marker base for immutable, value-compared objects."""
