class MacrolactoneError(Exception):
    """Base class for macrolactone toolkit errors."""


class MacrolactoneDetectionError(MacrolactoneError):
    """Raised when a valid macrolactone cannot be detected."""


class AmbiguousMacrolactoneError(MacrolactoneDetectionError):
    """Raised when multiple valid macrolactone candidates are detected."""


class RingNumberingError(MacrolactoneError):
    """Raised when ring numbering cannot be assigned."""


class FragmentationError(MacrolactoneError):
    """Raised when side-chain fragmentation fails."""
