# coding: utf-8

"""
    Mainnet Cash

    A developer friendly bitcoin cash wallet api  This API is currently in *active* development, breaking changes may be made prior to official release of version 1.0.0.   # noqa: E501

    The version of the OpenAPI document: 0.5.3
    Contact: hello@mainnet.cash
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from mainnet.configuration import Configuration


class BalanceRequest(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'wallet_id': 'str',
        'slp_aware': 'bool',
        'slp_semi_aware': 'bool'
    }

    attribute_map = {
        'wallet_id': 'walletId',
        'slp_aware': 'slpAware',
        'slp_semi_aware': 'slpSemiAware'
    }

    def __init__(self, wallet_id=None, slp_aware=False, slp_semi_aware=False, local_vars_configuration=None):  # noqa: E501
        """BalanceRequest - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._wallet_id = None
        self._slp_aware = None
        self._slp_semi_aware = None
        self.discriminator = None

        self.wallet_id = wallet_id
        if slp_aware is not None:
            self.slp_aware = slp_aware
        if slp_semi_aware is not None:
            self.slp_semi_aware = slp_semi_aware

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

        The walletId to get a balance for.   # noqa: E501

        :return: The wallet_id of this BalanceRequest.  # noqa: E501
        :rtype: str
        """
        return self._wallet_id

    @wallet_id.setter
    def wallet_id(self, wallet_id):
        """Sets the wallet_id of this BalanceRequest.

        The walletId to get a balance for.   # noqa: E501

        :param wallet_id: The wallet_id of this BalanceRequest.  # noqa: E501
        :type wallet_id: str
        """
        if self.local_vars_configuration.client_side_validation and wallet_id is None:  # noqa: E501
            raise ValueError("Invalid value for `wallet_id`, must not be `None`")  # noqa: E501

        self._wallet_id = wallet_id

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

        If you have any SLP tokens on the address, you should set `slpAware` to `true` to prevent accidental token burning This flag activates utxo checking against an external slp indexer So far this option is not switched on by default  # noqa: E501

        :return: The slp_aware of this BalanceRequest.  # noqa: E501
        :rtype: bool
        """
        return self._slp_aware

    @slp_aware.setter
    def slp_aware(self, slp_aware):
        """Sets the slp_aware of this BalanceRequest.

        If you have any SLP tokens on the address, you should set `slpAware` to `true` to prevent accidental token burning This flag activates utxo checking against an external slp indexer So far this option is not switched on by default  # noqa: E501

        :param slp_aware: The slp_aware of this BalanceRequest.  # noqa: E501
        :type slp_aware: bool
        """

        self._slp_aware = slp_aware

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

        This flag requires an utxo to have more than 546 sats to be spendable and counted in the balance This option is not switched on by default  # noqa: E501

        :return: The slp_semi_aware of this BalanceRequest.  # noqa: E501
        :rtype: bool
        """
        return self._slp_semi_aware

    @slp_semi_aware.setter
    def slp_semi_aware(self, slp_semi_aware):
        """Sets the slp_semi_aware of this BalanceRequest.

        This flag requires an utxo to have more than 546 sats to be spendable and counted in the balance This option is not switched on by default  # noqa: E501

        :param slp_semi_aware: The slp_semi_aware of this BalanceRequest.  # noqa: E501
        :type slp_semi_aware: bool
        """

        self._slp_semi_aware = slp_semi_aware

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

        for attr, _ in six.iteritems(self.openapi_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, BalanceRequest):
            return False

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
