# coding: utf-8

"""
    Phantasma API

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: v1
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

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

    Do not edit the class manually.
    """
    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'id': 'str',
        'series': 'str',
        'mint': 'str',
        'chain_name': 'str',
        'owner_address': 'str',
        'creator_address': 'str',
        'ram': 'str',
        'rom': 'str',
        'status': 'str',
        'infusion': 'list[TokenPropertyResult]',
        'properties': 'list[TokenPropertyResult]'
    }

    attribute_map = {
        'id': 'id',
        'series': 'series',
        'mint': 'mint',
        'chain_name': 'chainName',
        'owner_address': 'ownerAddress',
        'creator_address': 'creatorAddress',
        'ram': 'ram',
        'rom': 'rom',
        'status': 'status',
        'infusion': 'infusion',
        'properties': 'properties'
    }

    def __init__(self, id=None, series=None, mint=None, chain_name=None, owner_address=None, creator_address=None, ram=None, rom=None, status=None, infusion=None, properties=None):  # noqa: E501
        """TokenDataResult - a model defined in Swagger"""  # noqa: E501
        self._id = None
        self._series = None
        self._mint = None
        self._chain_name = None
        self._owner_address = None
        self._creator_address = None
        self._ram = None
        self._rom = None
        self._status = None
        self._infusion = None
        self._properties = None
        self.discriminator = None
        if id is not None:
            self.id = id
        if series is not None:
            self.series = series
        if mint is not None:
            self.mint = mint
        if chain_name is not None:
            self.chain_name = chain_name
        if owner_address is not None:
            self.owner_address = owner_address
        if creator_address is not None:
            self.creator_address = creator_address
        if ram is not None:
            self.ram = ram
        if rom is not None:
            self.rom = rom
        if status is not None:
            self.status = status
        if infusion is not None:
            self.infusion = infusion
        if properties is not None:
            self.properties = properties

    @property
    def id(self):
        """Gets the id of this TokenDataResult.  # noqa: E501


        :return: The id of this TokenDataResult.  # noqa: E501
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this TokenDataResult.


        :param id: The id of this TokenDataResult.  # noqa: E501
        :type: str
        """

        self._id = id

    @property
    def series(self):
        """Gets the series of this TokenDataResult.  # noqa: E501


        :return: The series of this TokenDataResult.  # noqa: E501
        :rtype: str
        """
        return self._series

    @series.setter
    def series(self, series):
        """Sets the series of this TokenDataResult.


        :param series: The series of this TokenDataResult.  # noqa: E501
        :type: str
        """

        self._series = series

    @property
    def mint(self):
        """Gets the mint of this TokenDataResult.  # noqa: E501


        :return: The mint of this TokenDataResult.  # noqa: E501
        :rtype: str
        """
        return self._mint

    @mint.setter
    def mint(self, mint):
        """Sets the mint of this TokenDataResult.


        :param mint: The mint of this TokenDataResult.  # noqa: E501
        :type: str
        """

        self._mint = mint

    @property
    def chain_name(self):
        """Gets the chain_name of this TokenDataResult.  # noqa: E501


        :return: The chain_name of this TokenDataResult.  # noqa: E501
        :rtype: str
        """
        return self._chain_name

    @chain_name.setter
    def chain_name(self, chain_name):
        """Sets the chain_name of this TokenDataResult.


        :param chain_name: The chain_name of this TokenDataResult.  # noqa: E501
        :type: str
        """

        self._chain_name = chain_name

    @property
    def owner_address(self):
        """Gets the owner_address of this TokenDataResult.  # noqa: E501


        :return: The owner_address of this TokenDataResult.  # noqa: E501
        :rtype: str
        """
        return self._owner_address

    @owner_address.setter
    def owner_address(self, owner_address):
        """Sets the owner_address of this TokenDataResult.


        :param owner_address: The owner_address of this TokenDataResult.  # noqa: E501
        :type: str
        """

        self._owner_address = owner_address

    @property
    def creator_address(self):
        """Gets the creator_address of this TokenDataResult.  # noqa: E501


        :return: The creator_address of this TokenDataResult.  # noqa: E501
        :rtype: str
        """
        return self._creator_address

    @creator_address.setter
    def creator_address(self, creator_address):
        """Sets the creator_address of this TokenDataResult.


        :param creator_address: The creator_address of this TokenDataResult.  # noqa: E501
        :type: str
        """

        self._creator_address = creator_address

    @property
    def ram(self):
        """Gets the ram of this TokenDataResult.  # noqa: E501


        :return: The ram of this TokenDataResult.  # noqa: E501
        :rtype: str
        """
        return self._ram

    @ram.setter
    def ram(self, ram):
        """Sets the ram of this TokenDataResult.


        :param ram: The ram of this TokenDataResult.  # noqa: E501
        :type: str
        """

        self._ram = ram

    @property
    def rom(self):
        """Gets the rom of this TokenDataResult.  # noqa: E501


        :return: The rom of this TokenDataResult.  # noqa: E501
        :rtype: str
        """
        return self._rom

    @rom.setter
    def rom(self, rom):
        """Sets the rom of this TokenDataResult.


        :param rom: The rom of this TokenDataResult.  # noqa: E501
        :type: str
        """

        self._rom = rom

    @property
    def status(self):
        """Gets the status of this TokenDataResult.  # noqa: E501


        :return: The status of this TokenDataResult.  # noqa: E501
        :rtype: str
        """
        return self._status

    @status.setter
    def status(self, status):
        """Sets the status of this TokenDataResult.


        :param status: The status of this TokenDataResult.  # noqa: E501
        :type: str
        """

        self._status = status

    @property
    def infusion(self):
        """Gets the infusion of this TokenDataResult.  # noqa: E501


        :return: The infusion of this TokenDataResult.  # noqa: E501
        :rtype: list[TokenPropertyResult]
        """
        return self._infusion

    @infusion.setter
    def infusion(self, infusion):
        """Sets the infusion of this TokenDataResult.


        :param infusion: The infusion of this TokenDataResult.  # noqa: E501
        :type: list[TokenPropertyResult]
        """

        self._infusion = infusion

    @property
    def properties(self):
        """Gets the properties of this TokenDataResult.  # noqa: E501


        :return: The properties of this TokenDataResult.  # noqa: E501
        :rtype: list[TokenPropertyResult]
        """
        return self._properties

    @properties.setter
    def properties(self, properties):
        """Sets the properties of this TokenDataResult.


        :param properties: The properties of this TokenDataResult.  # noqa: E501
        :type: list[TokenPropertyResult]
        """

        self._properties = properties

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(TokenDataResult, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, TokenDataResult):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
