# 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 ProofRequest(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': 'int',
        'hash_string': 'str',
        'proof_type': 'int'
    }

    attribute_map = {
        'currency': 'currency',
        'hash_string': 'hash_string',
        'proof_type': 'proof_type'
    }

    def __init__(self, currency=None, hash_string=None, proof_type=None):  # noqa: E501
        """ProofRequest - a model defined in Swagger"""  # noqa: E501

        self._currency = None
        self._hash_string = None
        self._proof_type = None
        self.discriminator = None

        self.currency = currency
        self.hash_string = hash_string
        self.proof_type = proof_type

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

        0: Bitcoin  # noqa: E501

        :return: The currency of this ProofRequest.  # noqa: E501
        :rtype: int
        """
        return self._currency

    @currency.setter
    def currency(self, currency):
        """Sets the currency of this ProofRequest.

        0: Bitcoin  # noqa: E501

        :param currency: The currency of this ProofRequest.  # noqa: E501
        :type: int
        """
        if currency is None:
            raise ValueError("Invalid value for `currency`, must not be `None`")  # noqa: E501

        self._currency = currency

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

        Hash in HEX representation for which the proof should be created. We allow the use of SHA-256. Note: We handle the hashes in lower-case.  # noqa: E501

        :return: The hash_string of this ProofRequest.  # noqa: E501
        :rtype: str
        """
        return self._hash_string

    @hash_string.setter
    def hash_string(self, hash_string):
        """Sets the hash_string of this ProofRequest.

        Hash in HEX representation for which the proof should be created. We allow the use of SHA-256. Note: We handle the hashes in lower-case.  # noqa: E501

        :param hash_string: The hash_string of this ProofRequest.  # noqa: E501
        :type: str
        """
        if hash_string is None:
            raise ValueError("Invalid value for `hash_string`, must not be `None`")  # noqa: E501

        self._hash_string = hash_string

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

        Specifies which type of file should be returned. Possible value(s):  0: proof with a seed file (txt) or proof with a merkle tree (xml) 1: proof with a PDF file   Other formats will follow.  # noqa: E501

        :return: The proof_type of this ProofRequest.  # noqa: E501
        :rtype: int
        """
        return self._proof_type

    @proof_type.setter
    def proof_type(self, proof_type):
        """Sets the proof_type of this ProofRequest.

        Specifies which type of file should be returned. Possible value(s):  0: proof with a seed file (txt) or proof with a merkle tree (xml) 1: proof with a PDF file   Other formats will follow.  # noqa: E501

        :param proof_type: The proof_type of this ProofRequest.  # noqa: E501
        :type: int
        """
        if proof_type is None:
            raise ValueError("Invalid value for `proof_type`, must not be `None`")  # noqa: E501

        self._proof_type = proof_type

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

        return self.__dict__ == other.__dict__

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