# coding: utf-8

from __future__ import absolute_import
from swagger_server.models.framework_criteria_interface import FrameworkCriteriaInterface
from .base_model_ import Model
from datetime import date, datetime
from typing import List, Dict
from ..util import deserialize_model


class CatalogInventoryStockStatusCriteriaInterface(Model):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self, mapper_interface_name: str=None, criteria_list: List[FrameworkCriteriaInterface]=None, filters: List[str]=None, orders: List[str]=None, limit: List[str]=None):
        """
        CatalogInventoryStockStatusCriteriaInterface - a model defined in Swagger

        :param mapper_interface_name: The mapper_interface_name of this CatalogInventoryStockStatusCriteriaInterface.
        :type mapper_interface_name: str
        :param criteria_list: The criteria_list of this CatalogInventoryStockStatusCriteriaInterface.
        :type criteria_list: List[FrameworkCriteriaInterface]
        :param filters: The filters of this CatalogInventoryStockStatusCriteriaInterface.
        :type filters: List[str]
        :param orders: The orders of this CatalogInventoryStockStatusCriteriaInterface.
        :type orders: List[str]
        :param limit: The limit of this CatalogInventoryStockStatusCriteriaInterface.
        :type limit: List[str]
        """
        self.swagger_types = {
            'mapper_interface_name': str,
            'criteria_list': List[FrameworkCriteriaInterface],
            'filters': List[str],
            'orders': List[str],
            'limit': List[str]
        }

        self.attribute_map = {
            'mapper_interface_name': 'mapper_interface_name',
            'criteria_list': 'criteria_list',
            'filters': 'filters',
            'orders': 'orders',
            'limit': 'limit'
        }

        self._mapper_interface_name = mapper_interface_name
        self._criteria_list = criteria_list
        self._filters = filters
        self._orders = orders
        self._limit = limit

    @classmethod
    def from_dict(cls, dikt) -> 'CatalogInventoryStockStatusCriteriaInterface':
        """
        Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The catalog-inventory-stock-status-criteria-interface of this CatalogInventoryStockStatusCriteriaInterface.
        :rtype: CatalogInventoryStockStatusCriteriaInterface
        """
        return deserialize_model(dikt, cls)

    @property
    def mapper_interface_name(self) -> str:
        """
        Gets the mapper_interface_name of this CatalogInventoryStockStatusCriteriaInterface.
        Associated Mapper Interface name

        :return: The mapper_interface_name of this CatalogInventoryStockStatusCriteriaInterface.
        :rtype: str
        """
        return self._mapper_interface_name

    @mapper_interface_name.setter
    def mapper_interface_name(self, mapper_interface_name: str):
        """
        Sets the mapper_interface_name of this CatalogInventoryStockStatusCriteriaInterface.
        Associated Mapper Interface name

        :param mapper_interface_name: The mapper_interface_name of this CatalogInventoryStockStatusCriteriaInterface.
        :type mapper_interface_name: str
        """
        if mapper_interface_name is None:
            raise ValueError("Invalid value for `mapper_interface_name`, must not be `None`")

        self._mapper_interface_name = mapper_interface_name

    @property
    def criteria_list(self) -> List[FrameworkCriteriaInterface]:
        """
        Gets the criteria_list of this CatalogInventoryStockStatusCriteriaInterface.
        Criteria objects added to current Composite Criteria

        :return: The criteria_list of this CatalogInventoryStockStatusCriteriaInterface.
        :rtype: List[FrameworkCriteriaInterface]
        """
        return self._criteria_list

    @criteria_list.setter
    def criteria_list(self, criteria_list: List[FrameworkCriteriaInterface]):
        """
        Sets the criteria_list of this CatalogInventoryStockStatusCriteriaInterface.
        Criteria objects added to current Composite Criteria

        :param criteria_list: The criteria_list of this CatalogInventoryStockStatusCriteriaInterface.
        :type criteria_list: List[FrameworkCriteriaInterface]
        """
        if criteria_list is None:
            raise ValueError("Invalid value for `criteria_list`, must not be `None`")

        self._criteria_list = criteria_list

    @property
    def filters(self) -> List[str]:
        """
        Gets the filters of this CatalogInventoryStockStatusCriteriaInterface.
        List of filters

        :return: The filters of this CatalogInventoryStockStatusCriteriaInterface.
        :rtype: List[str]
        """
        return self._filters

    @filters.setter
    def filters(self, filters: List[str]):
        """
        Sets the filters of this CatalogInventoryStockStatusCriteriaInterface.
        List of filters

        :param filters: The filters of this CatalogInventoryStockStatusCriteriaInterface.
        :type filters: List[str]
        """
        if filters is None:
            raise ValueError("Invalid value for `filters`, must not be `None`")

        self._filters = filters

    @property
    def orders(self) -> List[str]:
        """
        Gets the orders of this CatalogInventoryStockStatusCriteriaInterface.
        Ordering criteria

        :return: The orders of this CatalogInventoryStockStatusCriteriaInterface.
        :rtype: List[str]
        """
        return self._orders

    @orders.setter
    def orders(self, orders: List[str]):
        """
        Sets the orders of this CatalogInventoryStockStatusCriteriaInterface.
        Ordering criteria

        :param orders: The orders of this CatalogInventoryStockStatusCriteriaInterface.
        :type orders: List[str]
        """
        if orders is None:
            raise ValueError("Invalid value for `orders`, must not be `None`")

        self._orders = orders

    @property
    def limit(self) -> List[str]:
        """
        Gets the limit of this CatalogInventoryStockStatusCriteriaInterface.
        Limit

        :return: The limit of this CatalogInventoryStockStatusCriteriaInterface.
        :rtype: List[str]
        """
        return self._limit

    @limit.setter
    def limit(self, limit: List[str]):
        """
        Sets the limit of this CatalogInventoryStockStatusCriteriaInterface.
        Limit

        :param limit: The limit of this CatalogInventoryStockStatusCriteriaInterface.
        :type limit: List[str]
        """
        if limit is None:
            raise ValueError("Invalid value for `limit`, must not be `None`")

        self._limit = limit

