# coding: utf-8

"""
    Midgard Public API

    The Midgard Public API queries THORChain and any chains linked via the Bifröst and prepares information about the network to be readily available for public users. The API parses transaction event data from THORChain and stores them in a time-series database to make time-dependent queries easy. Midgard does not hold critical information. To interact with THORChain protocol, users should query THORNode directly.  # noqa: E501

    OpenAPI spec version: 2.20.1
    Contact: devs@thorchain.org
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class BondMetrics(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 = {
        'average_active_bond': 'str',
        'average_standby_bond': 'str',
        'bond_hard_cap': 'str',
        'maximum_active_bond': 'str',
        'maximum_standby_bond': 'str',
        'median_active_bond': 'str',
        'median_standby_bond': 'str',
        'minimum_active_bond': 'str',
        'minimum_standby_bond': 'str',
        'total_active_bond': 'str',
        'total_standby_bond': 'str'
    }

    attribute_map = {
        'average_active_bond': 'averageActiveBond',
        'average_standby_bond': 'averageStandbyBond',
        'bond_hard_cap': 'bondHardCap',
        'maximum_active_bond': 'maximumActiveBond',
        'maximum_standby_bond': 'maximumStandbyBond',
        'median_active_bond': 'medianActiveBond',
        'median_standby_bond': 'medianStandbyBond',
        'minimum_active_bond': 'minimumActiveBond',
        'minimum_standby_bond': 'minimumStandbyBond',
        'total_active_bond': 'totalActiveBond',
        'total_standby_bond': 'totalStandbyBond'
    }

    def __init__(self, average_active_bond=None, average_standby_bond=None, bond_hard_cap=None, maximum_active_bond=None, maximum_standby_bond=None, median_active_bond=None, median_standby_bond=None, minimum_active_bond=None, minimum_standby_bond=None, total_active_bond=None, total_standby_bond=None):  # noqa: E501
        """BondMetrics - a model defined in Swagger"""  # noqa: E501
        self._average_active_bond = None
        self._average_standby_bond = None
        self._bond_hard_cap = None
        self._maximum_active_bond = None
        self._maximum_standby_bond = None
        self._median_active_bond = None
        self._median_standby_bond = None
        self._minimum_active_bond = None
        self._minimum_standby_bond = None
        self._total_active_bond = None
        self._total_standby_bond = None
        self.discriminator = None
        self.average_active_bond = average_active_bond
        self.average_standby_bond = average_standby_bond
        self.bond_hard_cap = bond_hard_cap
        self.maximum_active_bond = maximum_active_bond
        self.maximum_standby_bond = maximum_standby_bond
        self.median_active_bond = median_active_bond
        self.median_standby_bond = median_standby_bond
        self.minimum_active_bond = minimum_active_bond
        self.minimum_standby_bond = minimum_standby_bond
        self.total_active_bond = total_active_bond
        self.total_standby_bond = total_standby_bond

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

        Int64(e8), Average bond of active nodes  # noqa: E501

        :return: The average_active_bond of this BondMetrics.  # noqa: E501
        :rtype: str
        """
        return self._average_active_bond

    @average_active_bond.setter
    def average_active_bond(self, average_active_bond):
        """Sets the average_active_bond of this BondMetrics.

        Int64(e8), Average bond of active nodes  # noqa: E501

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

        self._average_active_bond = average_active_bond

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

        Int64(e8), Average bond of standby nodes  # noqa: E501

        :return: The average_standby_bond of this BondMetrics.  # noqa: E501
        :rtype: str
        """
        return self._average_standby_bond

    @average_standby_bond.setter
    def average_standby_bond(self, average_standby_bond):
        """Sets the average_standby_bond of this BondMetrics.

        Int64(e8), Average bond of standby nodes  # noqa: E501

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

        self._average_standby_bond = average_standby_bond

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

        Int64(e8), Highest effective bond for nodes  # noqa: E501

        :return: The bond_hard_cap of this BondMetrics.  # noqa: E501
        :rtype: str
        """
        return self._bond_hard_cap

    @bond_hard_cap.setter
    def bond_hard_cap(self, bond_hard_cap):
        """Sets the bond_hard_cap of this BondMetrics.

        Int64(e8), Highest effective bond for nodes  # noqa: E501

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

        self._bond_hard_cap = bond_hard_cap

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

        Int64(e8), Maxinum bond of active nodes  # noqa: E501

        :return: The maximum_active_bond of this BondMetrics.  # noqa: E501
        :rtype: str
        """
        return self._maximum_active_bond

    @maximum_active_bond.setter
    def maximum_active_bond(self, maximum_active_bond):
        """Sets the maximum_active_bond of this BondMetrics.

        Int64(e8), Maxinum bond of active nodes  # noqa: E501

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

        self._maximum_active_bond = maximum_active_bond

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

        Int64(e8), Maximum bond of standby nodes  # noqa: E501

        :return: The maximum_standby_bond of this BondMetrics.  # noqa: E501
        :rtype: str
        """
        return self._maximum_standby_bond

    @maximum_standby_bond.setter
    def maximum_standby_bond(self, maximum_standby_bond):
        """Sets the maximum_standby_bond of this BondMetrics.

        Int64(e8), Maximum bond of standby nodes  # noqa: E501

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

        self._maximum_standby_bond = maximum_standby_bond

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

        Int64(e8), Median bond of active nodes  # noqa: E501

        :return: The median_active_bond of this BondMetrics.  # noqa: E501
        :rtype: str
        """
        return self._median_active_bond

    @median_active_bond.setter
    def median_active_bond(self, median_active_bond):
        """Sets the median_active_bond of this BondMetrics.

        Int64(e8), Median bond of active nodes  # noqa: E501

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

        self._median_active_bond = median_active_bond

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

        Int64(e8), Median bond of standby nodes  # noqa: E501

        :return: The median_standby_bond of this BondMetrics.  # noqa: E501
        :rtype: str
        """
        return self._median_standby_bond

    @median_standby_bond.setter
    def median_standby_bond(self, median_standby_bond):
        """Sets the median_standby_bond of this BondMetrics.

        Int64(e8), Median bond of standby nodes  # noqa: E501

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

        self._median_standby_bond = median_standby_bond

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

        Int64(e8), Minumum bond of active nodes  # noqa: E501

        :return: The minimum_active_bond of this BondMetrics.  # noqa: E501
        :rtype: str
        """
        return self._minimum_active_bond

    @minimum_active_bond.setter
    def minimum_active_bond(self, minimum_active_bond):
        """Sets the minimum_active_bond of this BondMetrics.

        Int64(e8), Minumum bond of active nodes  # noqa: E501

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

        self._minimum_active_bond = minimum_active_bond

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

        Int64(e8), Minumum bond of standby nodes  # noqa: E501

        :return: The minimum_standby_bond of this BondMetrics.  # noqa: E501
        :rtype: str
        """
        return self._minimum_standby_bond

    @minimum_standby_bond.setter
    def minimum_standby_bond(self, minimum_standby_bond):
        """Sets the minimum_standby_bond of this BondMetrics.

        Int64(e8), Minumum bond of standby nodes  # noqa: E501

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

        self._minimum_standby_bond = minimum_standby_bond

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

        Int64(e8), Total bond of active nodes  # noqa: E501

        :return: The total_active_bond of this BondMetrics.  # noqa: E501
        :rtype: str
        """
        return self._total_active_bond

    @total_active_bond.setter
    def total_active_bond(self, total_active_bond):
        """Sets the total_active_bond of this BondMetrics.

        Int64(e8), Total bond of active nodes  # noqa: E501

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

        self._total_active_bond = total_active_bond

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

        Int64(e8), Total bond of standby nodes  # noqa: E501

        :return: The total_standby_bond of this BondMetrics.  # noqa: E501
        :rtype: str
        """
        return self._total_standby_bond

    @total_standby_bond.setter
    def total_standby_bond(self, total_standby_bond):
        """Sets the total_standby_bond of this BondMetrics.

        Int64(e8), Total bond of standby nodes  # noqa: E501

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

        self._total_standby_bond = total_standby_bond

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

        return self.__dict__ == other.__dict__

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