# coding: utf-8

"""
    OriginStamp Documentation

    <br/>The following documentation describes the API v3 for OriginStamp. With this documentation you are able to try out the different requests and see the responses. For the authorization, add your API key to the Authorization header of your request.<br/><h2>Invoice</h2><p>The invoice is based on your individual usage. The following table illustrates the request types, that are billed in credits.</p><table><tr><th>Request Type</th><th>Condition</th><th>Credits</th><tr><td style='border-bottom-style:solid; border-color: #c0c0c0;'></td><tr><th>Submission</th><th>create timestamp</th><th>1 Credit</th><tr><th>Submission</th><th>timestamp already exists</th><th>0.3 Credits</th><tr><th>Status</th><th>no timestamp information available</th><th>0.1 Credit</th><tr><th>Status</th><th>timestamp information</th><th>0.3 Credits</th><tr><th>Proof</th><th>no proof available</th><th>0.1 Credits</th><tr><th>Proof</th><th>merkle tree as proof</th><th>3 Credits</th><tr><th>Proof</th><th>seed as proof</th><th>3 Credits</th><tr><th>Proof</th><th>PDF Certificate</th><th>5 Credits</th><tr><th>Notification</th><th>webhook notification</th><th>1.5 Credits</th><tr><th>Notification</th><th>mail notification</th><th>5 Credits</th><tr><th>Notification</th><th>trigger webhook</th><th>5 0.3</th></table><br/><h2>Common Problems</h2><ul><li>Make sure you set the Authorization with your API key</li><li>If a cloudflare error occurs, please set a custom UserAgent header.</li><li>Please have a look at the models below to find out what each field means.</li></ul>  # noqa: E501

    OpenAPI spec version: 3.0
    Contact: mail@originstamp.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


class TimestampData(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 = {
        'currency_id': 'int',
        'private_key': 'str',
        'submit_status': 'int',
        'timestamp': 'int',
        'transaction': 'str'
    }

    attribute_map = {
        'currency_id': 'currency_id',
        'private_key': 'private_key',
        'submit_status': 'submit_status',
        'timestamp': 'timestamp',
        'transaction': 'transaction'
    }

    def __init__(self, currency_id=None, private_key=None, submit_status=None, timestamp=None, transaction=None):  # noqa: E501
        """TimestampData - a model defined in Swagger"""  # noqa: E501

        self._currency_id = None
        self._private_key = None
        self._submit_status = None
        self._timestamp = None
        self._transaction = None
        self.discriminator = None

        if currency_id is not None:
            self.currency_id = currency_id
        if private_key is not None:
            self.private_key = private_key
        if submit_status is not None:
            self.submit_status = submit_status
        if timestamp is not None:
            self.timestamp = timestamp
        if transaction is not None:
            self.transaction = transaction

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

        0: Bitcoin  # noqa: E501

        :return: The currency_id of this TimestampData.  # noqa: E501
        :rtype: int
        """
        return self._currency_id

    @currency_id.setter
    def currency_id(self, currency_id):
        """Sets the currency_id of this TimestampData.

        0: Bitcoin  # noqa: E501

        :param currency_id: The currency_id of this TimestampData.  # noqa: E501
        :type: int
        """

        self._currency_id = currency_id

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

        The private key represents the top hash in the Merkle Tree (see https://en.wikipedia.org/wiki/Merkle_tree ) or the hash of all hashes in the transaction.  # noqa: E501

        :return: The private_key of this TimestampData.  # noqa: E501
        :rtype: str
        """
        return self._private_key

    @private_key.setter
    def private_key(self, private_key):
        """Sets the private_key of this TimestampData.

        The private key represents the top hash in the Merkle Tree (see https://en.wikipedia.org/wiki/Merkle_tree ) or the hash of all hashes in the transaction.  # noqa: E501

        :param private_key: The private_key of this TimestampData.  # noqa: E501
        :type: str
        """

        self._private_key = private_key

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

        The submit status of the hash:   0: the hash was not broadcasted yet  1: the hash was included into a transaction and broadcasted to the network, but not included into a block  2: the transaction was included into the latest block  3: the timestamp for your hash was successfully created.  # noqa: E501

        :return: The submit_status of this TimestampData.  # noqa: E501
        :rtype: int
        """
        return self._submit_status

    @submit_status.setter
    def submit_status(self, submit_status):
        """Sets the submit_status of this TimestampData.

        The submit status of the hash:   0: the hash was not broadcasted yet  1: the hash was included into a transaction and broadcasted to the network, but not included into a block  2: the transaction was included into the latest block  3: the timestamp for your hash was successfully created.  # noqa: E501

        :param submit_status: The submit_status of this TimestampData.  # noqa: E501
        :type: int
        """

        self._submit_status = submit_status

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

        The date is returned in the following format: [ms] since 1.1.1970 (unix epoch), timezone: UTC. This is a true timestamp.  # noqa: E501

        :return: The timestamp of this TimestampData.  # noqa: E501
        :rtype: int
        """
        return self._timestamp

    @timestamp.setter
    def timestamp(self, timestamp):
        """Sets the timestamp of this TimestampData.

        The date is returned in the following format: [ms] since 1.1.1970 (unix epoch), timezone: UTC. This is a true timestamp.  # noqa: E501

        :param timestamp: The timestamp of this TimestampData.  # noqa: E501
        :type: int
        """

        self._timestamp = timestamp

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

        If available: the transaction hash of the timestamp.  # noqa: E501

        :return: The transaction of this TimestampData.  # noqa: E501
        :rtype: str
        """
        return self._transaction

    @transaction.setter
    def transaction(self, transaction):
        """Sets the transaction of this TimestampData.

        If available: the transaction hash of the timestamp.  # noqa: E501

        :param transaction: The transaction of this TimestampData.  # noqa: E501
        :type: str
        """

        self._transaction = transaction

    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

        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, TimestampData):
            return False

        return self.__dict__ == other.__dict__

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