# coding: utf-8

"""
    GoPlus Security API Document

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

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

import pprint
import re  # noqa: F401

import six

class ResponseWrapperSolanaTokenSecurityResult(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 = {
        'metadata': 'ResponseWrapperSolanaTokenSecurityMetadata',
        'creators': 'list[ResponseWrapperSolanaTokenSecurityCreators]',
        'lp_holders': 'list[ResponseWrapperSolanaTokenSecurityLpHolders]',
        'closable': 'ResponseWrapperSolanaTokenSecurityClosable',
        'transfer_hook': 'list[ResponseWrapperSolanaTokenSecurityTransferHook]',
        'transfer_hook_upgradable': 'ResponseWrapperSolanaTokenSecurityTransferHookUpgradable',
        'trusted_token': 'int',
        'default_account_state_upgradable': 'ResponseWrapperSolanaTokenSecurityDefaultAccountStateUpgradable',
        'none_transferable': 'str',
        'default_account_state': 'str',
        'mintable': 'ResponseWrapperSolanaTokenSecurityMintable',
        'balance_mutable_authority': 'ResponseWrapperSolanaTokenSecurityBalanceMutableAuthority',
        'transfer_fee': 'ResponseWrapperSolanaTokenSecurityTransferFee',
        'holders': 'list[ResponseWrapperSolanaTokenSecurityHolders]',
        'freezable': 'ResponseWrapperSolanaTokenSecurityFreezable',
        'metadata_mutable': 'ResponseWrapperSolanaTokenSecurityMetadataMutable',
        'dex': 'list[ResponseWrapperSolanaTokenSecurityDex]',
        'transfer_fee_upgradable': 'ResponseWrapperSolanaTokenSecurityTransferFeeUpgradable'
    }

    attribute_map = {
        'metadata': 'metadata',
        'creators': 'creators',
        'lp_holders': 'lp_holders',
        'closable': 'closable',
        'transfer_hook': 'transfer_hook',
        'transfer_hook_upgradable': 'transfer_hook_upgradable',
        'trusted_token': 'trusted_token',
        'default_account_state_upgradable': 'default_account_state_upgradable',
        'none_transferable': 'none_transferable',
        'default_account_state': 'default_account_state',
        'mintable': 'mintable',
        'balance_mutable_authority': 'balance_mutable_authority',
        'transfer_fee': 'transfer_fee',
        'holders': 'holders',
        'freezable': 'freezable',
        'metadata_mutable': 'metadata_mutable',
        'dex': 'dex',
        'transfer_fee_upgradable': 'transfer_fee_upgradable'
    }

    def __init__(self, metadata=None, creators=None, lp_holders=None, closable=None, transfer_hook=None, transfer_hook_upgradable=None, trusted_token=None, default_account_state_upgradable=None, none_transferable=None, default_account_state=None, mintable=None, balance_mutable_authority=None, transfer_fee=None, holders=None, freezable=None, metadata_mutable=None, dex=None, transfer_fee_upgradable=None):  # noqa: E501
        """ResponseWrapperSolanaTokenSecurityResult - a model defined in Swagger"""  # noqa: E501
        self._metadata = None
        self._creators = None
        self._lp_holders = None
        self._closable = None
        self._transfer_hook = None
        self._transfer_hook_upgradable = None
        self._trusted_token = None
        self._default_account_state_upgradable = None
        self._none_transferable = None
        self._default_account_state = None
        self._mintable = None
        self._balance_mutable_authority = None
        self._transfer_fee = None
        self._holders = None
        self._freezable = None
        self._metadata_mutable = None
        self._dex = None
        self._transfer_fee_upgradable = None
        self.discriminator = None
        if metadata is not None:
            self.metadata = metadata
        if creators is not None:
            self.creators = creators
        if lp_holders is not None:
            self.lp_holders = lp_holders
        if closable is not None:
            self.closable = closable
        if transfer_hook is not None:
            self.transfer_hook = transfer_hook
        if transfer_hook_upgradable is not None:
            self.transfer_hook_upgradable = transfer_hook_upgradable
        if trusted_token is not None:
            self.trusted_token = trusted_token
        if default_account_state_upgradable is not None:
            self.default_account_state_upgradable = default_account_state_upgradable
        if none_transferable is not None:
            self.none_transferable = none_transferable
        if default_account_state is not None:
            self.default_account_state = default_account_state
        if mintable is not None:
            self.mintable = mintable
        if balance_mutable_authority is not None:
            self.balance_mutable_authority = balance_mutable_authority
        if transfer_fee is not None:
            self.transfer_fee = transfer_fee
        if holders is not None:
            self.holders = holders
        if freezable is not None:
            self.freezable = freezable
        if metadata_mutable is not None:
            self.metadata_mutable = metadata_mutable
        if dex is not None:
            self.dex = dex
        if transfer_fee_upgradable is not None:
            self.transfer_fee_upgradable = transfer_fee_upgradable

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


        :return: The metadata of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: ResponseWrapperSolanaTokenSecurityMetadata
        """
        return self._metadata

    @metadata.setter
    def metadata(self, metadata):
        """Sets the metadata of this ResponseWrapperSolanaTokenSecurityResult.


        :param metadata: The metadata of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: ResponseWrapperSolanaTokenSecurityMetadata
        """

        self._metadata = metadata

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

        Contains information about the token creators.  # noqa: E501

        :return: The creators of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: list[ResponseWrapperSolanaTokenSecurityCreators]
        """
        return self._creators

    @creators.setter
    def creators(self, creators):
        """Sets the creators of this ResponseWrapperSolanaTokenSecurityResult.

        Contains information about the token creators.  # noqa: E501

        :param creators: The creators of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: list[ResponseWrapperSolanaTokenSecurityCreators]
        """

        self._creators = creators

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

        List of top10 liquidity holders and their balances of the largest main token(SOL, USDC, USDT) liquidity pool.  # noqa: E501

        :return: The lp_holders of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: list[ResponseWrapperSolanaTokenSecurityLpHolders]
        """
        return self._lp_holders

    @lp_holders.setter
    def lp_holders(self, lp_holders):
        """Sets the lp_holders of this ResponseWrapperSolanaTokenSecurityResult.

        List of top10 liquidity holders and their balances of the largest main token(SOL, USDC, USDT) liquidity pool.  # noqa: E501

        :param lp_holders: The lp_holders of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: list[ResponseWrapperSolanaTokenSecurityLpHolders]
        """

        self._lp_holders = lp_holders

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


        :return: The closable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: ResponseWrapperSolanaTokenSecurityClosable
        """
        return self._closable

    @closable.setter
    def closable(self, closable):
        """Sets the closable of this ResponseWrapperSolanaTokenSecurityResult.


        :param closable: The closable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: ResponseWrapperSolanaTokenSecurityClosable
        """

        self._closable = closable

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

        If there is any external hook in the token programme.(Notice: Hook may block user from trading)  # noqa: E501

        :return: The transfer_hook of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: list[ResponseWrapperSolanaTokenSecurityTransferHook]
        """
        return self._transfer_hook

    @transfer_hook.setter
    def transfer_hook(self, transfer_hook):
        """Sets the transfer_hook of this ResponseWrapperSolanaTokenSecurityResult.

        If there is any external hook in the token programme.(Notice: Hook may block user from trading)  # noqa: E501

        :param transfer_hook: The transfer_hook of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: list[ResponseWrapperSolanaTokenSecurityTransferHook]
        """

        self._transfer_hook = transfer_hook

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


        :return: The transfer_hook_upgradable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: ResponseWrapperSolanaTokenSecurityTransferHookUpgradable
        """
        return self._transfer_hook_upgradable

    @transfer_hook_upgradable.setter
    def transfer_hook_upgradable(self, transfer_hook_upgradable):
        """Sets the transfer_hook_upgradable of this ResponseWrapperSolanaTokenSecurityResult.


        :param transfer_hook_upgradable: The transfer_hook_upgradable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: ResponseWrapperSolanaTokenSecurityTransferHookUpgradable
        """

        self._transfer_hook_upgradable = transfer_hook_upgradable

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

        If the token is a famous and trustworthy one. \"1\" means yes.  # noqa: E501

        :return: The trusted_token of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: int
        """
        return self._trusted_token

    @trusted_token.setter
    def trusted_token(self, trusted_token):
        """Sets the trusted_token of this ResponseWrapperSolanaTokenSecurityResult.

        If the token is a famous and trustworthy one. \"1\" means yes.  # noqa: E501

        :param trusted_token: The trusted_token of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: int
        """

        self._trusted_token = trusted_token

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


        :return: The default_account_state_upgradable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: ResponseWrapperSolanaTokenSecurityDefaultAccountStateUpgradable
        """
        return self._default_account_state_upgradable

    @default_account_state_upgradable.setter
    def default_account_state_upgradable(self, default_account_state_upgradable):
        """Sets the default_account_state_upgradable of this ResponseWrapperSolanaTokenSecurityResult.


        :param default_account_state_upgradable: The default_account_state_upgradable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: ResponseWrapperSolanaTokenSecurityDefaultAccountStateUpgradable
        """

        self._default_account_state_upgradable = default_account_state_upgradable

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

        Indicates whether the token is non-transferable, \"1\" means non-transferable, \"0\" means transferable  # noqa: E501

        :return: The none_transferable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: str
        """
        return self._none_transferable

    @none_transferable.setter
    def none_transferable(self, none_transferable):
        """Sets the none_transferable of this ResponseWrapperSolanaTokenSecurityResult.

        Indicates whether the token is non-transferable, \"1\" means non-transferable, \"0\" means transferable  # noqa: E501

        :param none_transferable: The none_transferable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: str
        """

        self._none_transferable = none_transferable

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

        The default state of newly created accounts. \"0\" for Uninitialized, \"1\" for Initialized, \"2\" for Frozen.(Notice: Uninitialized (0): The token is newly created and not ready for use. It cannot perform any token operations and typically needs to be initialized to become active. Initialized (1): The token is fully ready for use and can engage in normal token transactions. Most token operations require the account to be in this state. Frozen (2): All the account that created whe the token is \"frozen\" would be locked and prohibited from performing any token transactions or operations, usually for security or compliance reasons, until it is manually unfrozen.)  # noqa: E501

        :return: The default_account_state of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: str
        """
        return self._default_account_state

    @default_account_state.setter
    def default_account_state(self, default_account_state):
        """Sets the default_account_state of this ResponseWrapperSolanaTokenSecurityResult.

        The default state of newly created accounts. \"0\" for Uninitialized, \"1\" for Initialized, \"2\" for Frozen.(Notice: Uninitialized (0): The token is newly created and not ready for use. It cannot perform any token operations and typically needs to be initialized to become active. Initialized (1): The token is fully ready for use and can engage in normal token transactions. Most token operations require the account to be in this state. Frozen (2): All the account that created whe the token is \"frozen\" would be locked and prohibited from performing any token transactions or operations, usually for security or compliance reasons, until it is manually unfrozen.)  # noqa: E501

        :param default_account_state: The default_account_state of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: str
        """

        self._default_account_state = default_account_state

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


        :return: The mintable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: ResponseWrapperSolanaTokenSecurityMintable
        """
        return self._mintable

    @mintable.setter
    def mintable(self, mintable):
        """Sets the mintable of this ResponseWrapperSolanaTokenSecurityResult.


        :param mintable: The mintable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: ResponseWrapperSolanaTokenSecurityMintable
        """

        self._mintable = mintable

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


        :return: The balance_mutable_authority of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: ResponseWrapperSolanaTokenSecurityBalanceMutableAuthority
        """
        return self._balance_mutable_authority

    @balance_mutable_authority.setter
    def balance_mutable_authority(self, balance_mutable_authority):
        """Sets the balance_mutable_authority of this ResponseWrapperSolanaTokenSecurityResult.


        :param balance_mutable_authority: The balance_mutable_authority of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: ResponseWrapperSolanaTokenSecurityBalanceMutableAuthority
        """

        self._balance_mutable_authority = balance_mutable_authority

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


        :return: The transfer_fee of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: ResponseWrapperSolanaTokenSecurityTransferFee
        """
        return self._transfer_fee

    @transfer_fee.setter
    def transfer_fee(self, transfer_fee):
        """Sets the transfer_fee of this ResponseWrapperSolanaTokenSecurityResult.


        :param transfer_fee: The transfer_fee of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: ResponseWrapperSolanaTokenSecurityTransferFee
        """

        self._transfer_fee = transfer_fee

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

        List of top 10 addresses holding the token and their balances.  # noqa: E501

        :return: The holders of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: list[ResponseWrapperSolanaTokenSecurityHolders]
        """
        return self._holders

    @holders.setter
    def holders(self, holders):
        """Sets the holders of this ResponseWrapperSolanaTokenSecurityResult.

        List of top 10 addresses holding the token and their balances.  # noqa: E501

        :param holders: The holders of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: list[ResponseWrapperSolanaTokenSecurityHolders]
        """

        self._holders = holders

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


        :return: The freezable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: ResponseWrapperSolanaTokenSecurityFreezable
        """
        return self._freezable

    @freezable.setter
    def freezable(self, freezable):
        """Sets the freezable of this ResponseWrapperSolanaTokenSecurityResult.


        :param freezable: The freezable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: ResponseWrapperSolanaTokenSecurityFreezable
        """

        self._freezable = freezable

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


        :return: The metadata_mutable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: ResponseWrapperSolanaTokenSecurityMetadataMutable
        """
        return self._metadata_mutable

    @metadata_mutable.setter
    def metadata_mutable(self, metadata_mutable):
        """Sets the metadata_mutable of this ResponseWrapperSolanaTokenSecurityResult.


        :param metadata_mutable: The metadata_mutable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: ResponseWrapperSolanaTokenSecurityMetadataMutable
        """

        self._metadata_mutable = metadata_mutable

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

        Dex Info  # noqa: E501

        :return: The dex of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: list[ResponseWrapperSolanaTokenSecurityDex]
        """
        return self._dex

    @dex.setter
    def dex(self, dex):
        """Sets the dex of this ResponseWrapperSolanaTokenSecurityResult.

        Dex Info  # noqa: E501

        :param dex: The dex of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: list[ResponseWrapperSolanaTokenSecurityDex]
        """

        self._dex = dex

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


        :return: The transfer_fee_upgradable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :rtype: ResponseWrapperSolanaTokenSecurityTransferFeeUpgradable
        """
        return self._transfer_fee_upgradable

    @transfer_fee_upgradable.setter
    def transfer_fee_upgradable(self, transfer_fee_upgradable):
        """Sets the transfer_fee_upgradable of this ResponseWrapperSolanaTokenSecurityResult.


        :param transfer_fee_upgradable: The transfer_fee_upgradable of this ResponseWrapperSolanaTokenSecurityResult.  # noqa: E501
        :type: ResponseWrapperSolanaTokenSecurityTransferFeeUpgradable
        """

        self._transfer_fee_upgradable = transfer_fee_upgradable

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

        return self.__dict__ == other.__dict__

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