# coding: utf-8

from __future__ import absolute_import
from datetime import date, datetime  # noqa: F401

from typing import List, Dict  # noqa: F401

from det.models.base_model_ import Model
from det.models.classification_defs_item import ClassificationDefsItem  # noqa: F401,E501
from det.models.entity_defs_item import EntityDefsItem  # noqa: F401,E501
from det.models.enum_defs_item import EnumDefsItem  # noqa: F401,E501
from det import util


class TypedefsItem(Model):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    def __init__(self, classification_defs: List[ClassificationDefsItem]=None, enum_defs: List[EnumDefsItem]=None, entity_defs: List[EntityDefsItem]=None):  # noqa: E501
        """TypedefsItem - a model defined in Swagger

        :param classification_defs: The classification_defs of this TypedefsItem.  # noqa: E501
        :type classification_defs: List[ClassificationDefsItem]
        :param enum_defs: The enum_defs of this TypedefsItem.  # noqa: E501
        :type enum_defs: List[EnumDefsItem]
        :param entity_defs: The entity_defs of this TypedefsItem.  # noqa: E501
        :type entity_defs: List[EntityDefsItem]
        """
        self.swagger_types = {
            'classification_defs': List[ClassificationDefsItem],
            'enum_defs': List[EnumDefsItem],
            'entity_defs': List[EntityDefsItem]
        }

        self.attribute_map = {
            'classification_defs': 'classificationDefs',
            'enum_defs': 'enumDefs',
            'entity_defs': 'entityDefs'
        }

        self._classification_defs = classification_defs
        self._enum_defs = enum_defs
        self._entity_defs = entity_defs

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

        :param dikt: A dict.
        :type: dict
        :return: The TypedefsItem of this TypedefsItem.  # noqa: E501
        :rtype: TypedefsItem
        """
        return util.deserialize_model(dikt, cls)

    @property
    def classification_defs(self) -> List[ClassificationDefsItem]:
        """Gets the classification_defs of this TypedefsItem.


        :return: The classification_defs of this TypedefsItem.
        :rtype: List[ClassificationDefsItem]
        """
        return self._classification_defs

    @classification_defs.setter
    def classification_defs(self, classification_defs: List[ClassificationDefsItem]):
        """Sets the classification_defs of this TypedefsItem.


        :param classification_defs: The classification_defs of this TypedefsItem.
        :type classification_defs: List[ClassificationDefsItem]
        """

        self._classification_defs = classification_defs

    @property
    def enum_defs(self) -> List[EnumDefsItem]:
        """Gets the enum_defs of this TypedefsItem.


        :return: The enum_defs of this TypedefsItem.
        :rtype: List[EnumDefsItem]
        """
        return self._enum_defs

    @enum_defs.setter
    def enum_defs(self, enum_defs: List[EnumDefsItem]):
        """Sets the enum_defs of this TypedefsItem.


        :param enum_defs: The enum_defs of this TypedefsItem.
        :type enum_defs: List[EnumDefsItem]
        """

        self._enum_defs = enum_defs

    @property
    def entity_defs(self) -> List[EntityDefsItem]:
        """Gets the entity_defs of this TypedefsItem.


        :return: The entity_defs of this TypedefsItem.
        :rtype: List[EntityDefsItem]
        """
        return self._entity_defs

    @entity_defs.setter
    def entity_defs(self, entity_defs: List[EntityDefsItem]):
        """Sets the entity_defs of this TypedefsItem.


        :param entity_defs: The entity_defs of this TypedefsItem.
        :type entity_defs: List[EntityDefsItem]
        """

        self._entity_defs = entity_defs
