from typing import List

class OrderValidationException(Exception):
    pass


class BenefitExpiredOrInactiveException(OrderValidationException):
    pass


class PodTypeNotValidException(OrderValidationException):
    pass


class InsufficientSaleAmountException(OrderValidationException):
    pass


class ErrorApplyingCoupon(OrderValidationException):
    pass


class ExcessiveSaleAmountException(OrderValidationException):
    pass


class UserLevelNotAllowedException(Exception):
    def __init__(
        self,
        min_level_required,     # type: int
    ):
        # type: (...) -> None

        self.min_level_required = min_level_required


class MissingItemsException(OrderValidationException):
    pass


class CustomBenefitAlreadyAppliedException(OrderValidationException):
    pass


class InvalidServiceTypeException(OrderValidationException):
    pass


class InvalidSaleTypeException(OrderValidationException):
    pass


class InvalidMinSeatsException(OrderValidationException):
    pass


class InvalidSectorException(OrderValidationException):
    pass


class ApplyingDiscountUnknownException(OrderValidationException):
    pass


class OrderPictureException(OrderValidationException):
    pass


class InvalidAddItemsInTotaledOrderException(OrderValidationException):
    pass


class InvalidServicePeriodOrderException(OrderValidationException):
    pass


class InvalidBrandException(OrderValidationException):
    pass


class AddItemsException(OrderValidationException):
    pass


class NeedToRemoveBenefitsPreviousBenefitsException(Exception):
    def __init__(
        self,           # type: NeedToRemoveBenefitsPreviousBenefitsException
        benefits_ids,   # type: List[str]
    ):
        # type: (...) -> None

        self.benefits_ids = benefits_ids
