class TrainingDomainError(ValueError):
    """Base class for expected Training-domain failures."""


class TrainingValidationError(TrainingDomainError):
    pass


class TrainingSessionNotFoundError(TrainingDomainError):
    pass


class TrainingPlayerNotFoundError(TrainingDomainError):
    pass


class TrainingClubNotFoundError(TrainingDomainError):
    pass


class TrainingPlayerInactiveError(TrainingDomainError):
    pass


class TrainingClubInactiveError(TrainingDomainError):
    pass


class InvalidTrainingAttributeError(TrainingValidationError):
    pass


class InvalidTrainingDateError(TrainingValidationError):
    pass


class TrainingDailyLimitExceededError(TrainingValidationError):
    pass


class EmptyTeamTrainingError(TrainingValidationError):
    pass


class DuplicateTrainingParticipantError(TrainingValidationError):
    pass


class PlayerNotInClubRosterError(TrainingValidationError):
    pass


class TrainingSessionCancelledError(TrainingDomainError):
    pass


class TrainingSessionAlreadyCompletedError(TrainingDomainError):
    pass


class TrainingIntegrityError(TrainingDomainError):
    pass


class TrainingResultImmutableError(TrainingDomainError):
    pass


class TrainingPlayerMedicallyUnavailableError(TrainingDomainError):
    pass


class PlayerProgressionError(TrainingDomainError):
    pass


class PlayerProgressionIntegrityError(PlayerProgressionError):
    pass


class PlayerProgressionUnavailableError(PlayerProgressionError):
    pass


class PlayerLegacyAssetError(TrainingDomainError):
    pass


class PlayerLegacyAssetIntegrityError(PlayerLegacyAssetError):
    pass
