# 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
"""

from __future__ import absolute_import

import re  # noqa: F401

# python 2 and python 3 compatibility library
import six

from swagger_client.api_client import ApiClient


class ApproveControllerV2Api(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    Ref: https://github.com/swagger-api/swagger-codegen
    """

    def __init__(self, api_client=None):
        if api_client is None:
            api_client = ApiClient()
        self.api_client = api_client

    def address_nft1155_approve_list_using_get1(self, addresses, chain_id, **kwargs):  # noqa: E501
        """Returns the ERC-1155 approvals of an EOA address and associated risk items.  # noqa: E501

        Reports the outstanding token approvals issued to ERC-1155 contracts by the given EOA address and associated risk items, including the date that the approval was issued, the allowance of the approval, and the transaction ID issuing the allowance.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.address_nft1155_approve_list_using_get1(addresses, chain_id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str addresses: contract address (required)
        :param str chain_id: chain id (required)
        :param str authorization: Authorization (test: Bearer 81|9ihH8JzEuFu4MQ9DjWmH5WrNCPW...)
        :return: ResponseWrapperListApproveNFT1155ListResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.address_nft1155_approve_list_using_get1_with_http_info(addresses, chain_id, **kwargs)  # noqa: E501
        else:
            (data) = self.address_nft1155_approve_list_using_get1_with_http_info(addresses, chain_id, **kwargs)  # noqa: E501
            return data

    def address_nft1155_approve_list_using_get1_with_http_info(self, addresses, chain_id, **kwargs):  # noqa: E501
        """Returns the ERC-1155 approvals of an EOA address and associated risk items.  # noqa: E501

        Reports the outstanding token approvals issued to ERC-1155 contracts by the given EOA address and associated risk items, including the date that the approval was issued, the allowance of the approval, and the transaction ID issuing the allowance.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.address_nft1155_approve_list_using_get1_with_http_info(addresses, chain_id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str addresses: contract address (required)
        :param str chain_id: chain id (required)
        :param str authorization: Authorization (test: Bearer 81|9ihH8JzEuFu4MQ9DjWmH5WrNCPW...)
        :return: ResponseWrapperListApproveNFT1155ListResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['addresses', 'chain_id', 'authorization']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method address_nft1155_approve_list_using_get1" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'addresses' is set
        if ('addresses' not in params or
                params['addresses'] is None):
            raise ValueError("Missing the required parameter `addresses` when calling `address_nft1155_approve_list_using_get1`")  # noqa: E501
        # verify the required parameter 'chain_id' is set
        if ('chain_id' not in params or
                params['chain_id'] is None):
            raise ValueError("Missing the required parameter `chain_id` when calling `address_nft1155_approve_list_using_get1`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'chain_id' in params:
            path_params['chainId'] = params['chain_id']  # noqa: E501

        query_params = []
        if 'addresses' in params:
            query_params.append(('addresses', params['addresses']))  # noqa: E501

        header_params = {}
        if 'authorization' in params:
            header_params['Authorization'] = params['authorization']  # noqa: E501

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['*/*'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/api/v2/nft1155_approval_security/{chainId}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ResponseWrapperListApproveNFT1155ListResponse',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def address_nft721_approve_list_using_get1(self, addresses, chain_id, **kwargs):  # noqa: E501
        """Returns the ERC-721 approvals of an EOA address and associated risk items.  # noqa: E501

        Reports the outstanding token approvals issued to ERC-721 contracts by the given EOA address and associated risk items, including the date that the approval was issued, the allowance of the approval, and the transaction ID issuing the allowance.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.address_nft721_approve_list_using_get1(addresses, chain_id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str addresses: contract address (required)
        :param str chain_id: chain id (required)
        :param str authorization: Authorization (test: Bearer 81|9ihH8JzEuFu4MQ9DjWmH5WrNCPW...)
        :return: ResponseWrapperListApproveNFTListResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.address_nft721_approve_list_using_get1_with_http_info(addresses, chain_id, **kwargs)  # noqa: E501
        else:
            (data) = self.address_nft721_approve_list_using_get1_with_http_info(addresses, chain_id, **kwargs)  # noqa: E501
            return data

    def address_nft721_approve_list_using_get1_with_http_info(self, addresses, chain_id, **kwargs):  # noqa: E501
        """Returns the ERC-721 approvals of an EOA address and associated risk items.  # noqa: E501

        Reports the outstanding token approvals issued to ERC-721 contracts by the given EOA address and associated risk items, including the date that the approval was issued, the allowance of the approval, and the transaction ID issuing the allowance.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.address_nft721_approve_list_using_get1_with_http_info(addresses, chain_id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str addresses: contract address (required)
        :param str chain_id: chain id (required)
        :param str authorization: Authorization (test: Bearer 81|9ihH8JzEuFu4MQ9DjWmH5WrNCPW...)
        :return: ResponseWrapperListApproveNFTListResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['addresses', 'chain_id', 'authorization']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method address_nft721_approve_list_using_get1" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'addresses' is set
        if ('addresses' not in params or
                params['addresses'] is None):
            raise ValueError("Missing the required parameter `addresses` when calling `address_nft721_approve_list_using_get1`")  # noqa: E501
        # verify the required parameter 'chain_id' is set
        if ('chain_id' not in params or
                params['chain_id'] is None):
            raise ValueError("Missing the required parameter `chain_id` when calling `address_nft721_approve_list_using_get1`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'chain_id' in params:
            path_params['chainId'] = params['chain_id']  # noqa: E501

        query_params = []
        if 'addresses' in params:
            query_params.append(('addresses', params['addresses']))  # noqa: E501

        header_params = {}
        if 'authorization' in params:
            header_params['Authorization'] = params['authorization']  # noqa: E501

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['*/*'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/api/v2/nft721_approval_security/{chainId}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ResponseWrapperListApproveNFTListResponse',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def address_token_approve_list_using_get1(self, addresses, chain_id, **kwargs):  # noqa: E501
        """Returns the ERC-20 approvals of an EOA address and associated risk items.  # noqa: E501

        Reports the outstanding token approvals issued to ERC-20 contracts by the given EOA address and associated risk items, including the date that the approval was issued, the allowance of the approval, and the transaction ID issuing the allowance.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.address_token_approve_list_using_get1(addresses, chain_id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str addresses: contract address (required)
        :param str chain_id: chain id (required)
        :param str authorization: Authorization (test: Bearer 81|9ihH8JzEuFu4MQ9DjWmH5WrNCPW...)
        :return: ResponseWrapperListApproveTokenOutListResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.address_token_approve_list_using_get1_with_http_info(addresses, chain_id, **kwargs)  # noqa: E501
        else:
            (data) = self.address_token_approve_list_using_get1_with_http_info(addresses, chain_id, **kwargs)  # noqa: E501
            return data

    def address_token_approve_list_using_get1_with_http_info(self, addresses, chain_id, **kwargs):  # noqa: E501
        """Returns the ERC-20 approvals of an EOA address and associated risk items.  # noqa: E501

        Reports the outstanding token approvals issued to ERC-20 contracts by the given EOA address and associated risk items, including the date that the approval was issued, the allowance of the approval, and the transaction ID issuing the allowance.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.address_token_approve_list_using_get1_with_http_info(addresses, chain_id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str addresses: contract address (required)
        :param str chain_id: chain id (required)
        :param str authorization: Authorization (test: Bearer 81|9ihH8JzEuFu4MQ9DjWmH5WrNCPW...)
        :return: ResponseWrapperListApproveTokenOutListResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['addresses', 'chain_id', 'authorization']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method address_token_approve_list_using_get1" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'addresses' is set
        if ('addresses' not in params or
                params['addresses'] is None):
            raise ValueError("Missing the required parameter `addresses` when calling `address_token_approve_list_using_get1`")  # noqa: E501
        # verify the required parameter 'chain_id' is set
        if ('chain_id' not in params or
                params['chain_id'] is None):
            raise ValueError("Missing the required parameter `chain_id` when calling `address_token_approve_list_using_get1`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'chain_id' in params:
            path_params['chainId'] = params['chain_id']  # noqa: E501

        query_params = []
        if 'addresses' in params:
            query_params.append(('addresses', params['addresses']))  # noqa: E501

        header_params = {}
        if 'authorization' in params:
            header_params['Authorization'] = params['authorization']  # noqa: E501

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['*/*'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/api/v2/token_approval_security/{chainId}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ResponseWrapperListApproveTokenOutListResponse',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)
