{
  "contractName": "IEER2TokenReceiver",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_operator",
          "type": "address"
        },
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "name": "_value",
          "type": "uint256"
        },
        {
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "onEER2Received",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_operator",
          "type": "address"
        },
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_typeIDs",
          "type": "uint256[]"
        },
        {
          "name": "_values",
          "type": "uint256[]"
        },
        {
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "onEER2BatchReceived",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.5.0;\n\n\n/**\n    Note: The ERC-165 identifier for this interface is 0x4e2312e0.\n*/\ninterface IEER2TokenReceiver {\n    /**\n        @notice Handle the receipt of a single EER2 token type.\n        @dev An EER2-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated.\n        This function MUST return `bytes4(keccak256(\"onEER2Received(address,address,uint256,uint256,bytes)\"))` (i.e. 0xf23a6e61) if it accepts the transfer.\n        This function MUST revert if it rejects the transfer.\n        Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\n        @param _operator  The address which initiated the transfer (i.e. msg.sender)\n        @param _from      The address which previously owned the token\n        @param _typeID    The ID of the token being transferred\n        @param _value     The amount of tokens being transferred\n        @param _data      Additional data with no specified format\n        @return           `bytes4(keccak256(\"onEER2Received(address,address,uint256,uint256,bytes)\"))`\n    */\n    function onEER2Received(\n        address _operator,\n        address _from,\n        uint256 _typeID,\n        uint256 _value,\n        bytes calldata _data\n    ) external returns (bytes4);\n\n    /**\n        @notice Handle the receipt of multiple EER2 token types.\n        @dev An EER2-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated.\n        This function MUST return `bytes4(keccak256(\"onEER2BatchReceived(address,address,uint256[],uint256[],bytes)\"))` (i.e. 0xbc197c81) if it accepts the transfer(s).\n        This function MUST revert if it rejects the transfer(s).\n        Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\n        @param _operator  The address which initiated the batch transfer (i.e. msg.sender)\n        @param _from      The address which previously owned the token\n        @param _typeIDs   An array containing typeIDs of each token being transferred (order and length must match _values array)\n        @param _values    An array containing amounts of each token being transferred (order and length must match _typeIDs array)\n        @param _data      Additional data with no specified format\n        @return           `bytes4(keccak256(\"onEER2BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n    */\n    function onEER2BatchReceived(\n        address _operator,\n        address _from,\n        uint256[] calldata _typeIDs,\n        uint256[] calldata _values,\n        bytes calldata _data\n    ) external returns (bytes4);\n}\n",
  "sourcePath": "@Evrynetlabs/credit-contract/contracts/IEER2TokenReceiver.sol",
  "ast": {
    "absolutePath": "@Evrynetlabs/credit-contract/contracts/IEER2TokenReceiver.sol",
    "exportedSymbols": {
      "IEER2TokenReceiver": [
        2817
      ]
    },
    "id": 2818,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2784,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:13"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": "Note: The ERC-165 identifier for this interface is 0x4e2312e0.",
        "fullyImplemented": false,
        "id": 2817,
        "linearizedBaseContracts": [
          2817
        ],
        "name": "IEER2TokenReceiver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": "@notice Handle the receipt of a single EER2 token type.\n@dev An EER2-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated.\nThis function MUST return `bytes4(keccak256(\"onEER2Received(address,address,uint256,uint256,bytes)\"))` (i.e. 0xf23a6e61) if it accepts the transfer.\nThis function MUST revert if it rejects the transfer.\nReturn of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\n@param _operator  The address which initiated the transfer (i.e. msg.sender)\n@param _from      The address which previously owned the token\n@param _typeID    The ID of the token being transferred\n@param _value     The amount of tokens being transferred\n@param _data      Additional data with no specified format\n@return           `bytes4(keccak256(\"onEER2Received(address,address,uint256,uint256,bytes)\"))`",
            "id": 2799,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "onEER2Received",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2795,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2786,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2799,
                  "src": "1236:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2785,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1236:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2788,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2799,
                  "src": "1263:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2787,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1263:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2790,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2799,
                  "src": "1286:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2789,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1286:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2792,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2799,
                  "src": "1311:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2791,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1311:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2794,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2799,
                  "src": "1335:20:13",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2793,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1335:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1226:135:13"
            },
            "returnParameters": {
              "id": 2798,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2797,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2799,
                  "src": "1380:6:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2796,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1380:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1379:8:13"
            },
            "scope": 2817,
            "src": "1203:185:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@notice Handle the receipt of multiple EER2 token types.\n@dev An EER2-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated.\nThis function MUST return `bytes4(keccak256(\"onEER2BatchReceived(address,address,uint256[],uint256[],bytes)\"))` (i.e. 0xbc197c81) if it accepts the transfer(s).\nThis function MUST revert if it rejects the transfer(s).\nReturn of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\n@param _operator  The address which initiated the batch transfer (i.e. msg.sender)\n@param _from      The address which previously owned the token\n@param _typeIDs   An array containing typeIDs of each token being transferred (order and length must match _values array)\n@param _values    An array containing amounts of each token being transferred (order and length must match _typeIDs array)\n@param _data      Additional data with no specified format\n@return           `bytes4(keccak256(\"onEER2BatchReceived(address,address,uint256[],uint256[],bytes)\"))`",
            "id": 2816,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "onEER2BatchReceived",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2801,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "2670:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2800,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2670:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2803,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "2697:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2802,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2697:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2806,
                  "name": "_typeIDs",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "2720:27:13",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2804,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2720:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2805,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2720:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2809,
                  "name": "_values",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "2757:26:13",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2807,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2757:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2808,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2757:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2811,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "2793:20:13",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2810,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2793:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2660:159:13"
            },
            "returnParameters": {
              "id": 2815,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2814,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "2838:6:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2813,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2838:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2837:8:13"
            },
            "scope": 2817,
            "src": "2632:214:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 2818,
        "src": "100:2748:13"
      }
    ],
    "src": "0:2849:13"
  },
  "legacyAST": {
    "absolutePath": "@Evrynetlabs/credit-contract/contracts/IEER2TokenReceiver.sol",
    "exportedSymbols": {
      "IEER2TokenReceiver": [
        2817
      ]
    },
    "id": 2818,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2784,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:13"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": "Note: The ERC-165 identifier for this interface is 0x4e2312e0.",
        "fullyImplemented": false,
        "id": 2817,
        "linearizedBaseContracts": [
          2817
        ],
        "name": "IEER2TokenReceiver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": "@notice Handle the receipt of a single EER2 token type.\n@dev An EER2-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated.\nThis function MUST return `bytes4(keccak256(\"onEER2Received(address,address,uint256,uint256,bytes)\"))` (i.e. 0xf23a6e61) if it accepts the transfer.\nThis function MUST revert if it rejects the transfer.\nReturn of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\n@param _operator  The address which initiated the transfer (i.e. msg.sender)\n@param _from      The address which previously owned the token\n@param _typeID    The ID of the token being transferred\n@param _value     The amount of tokens being transferred\n@param _data      Additional data with no specified format\n@return           `bytes4(keccak256(\"onEER2Received(address,address,uint256,uint256,bytes)\"))`",
            "id": 2799,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "onEER2Received",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2795,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2786,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2799,
                  "src": "1236:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2785,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1236:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2788,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2799,
                  "src": "1263:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2787,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1263:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2790,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2799,
                  "src": "1286:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2789,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1286:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2792,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2799,
                  "src": "1311:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2791,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1311:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2794,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2799,
                  "src": "1335:20:13",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2793,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1335:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1226:135:13"
            },
            "returnParameters": {
              "id": 2798,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2797,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2799,
                  "src": "1380:6:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2796,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1380:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1379:8:13"
            },
            "scope": 2817,
            "src": "1203:185:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@notice Handle the receipt of multiple EER2 token types.\n@dev An EER2-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated.\nThis function MUST return `bytes4(keccak256(\"onEER2BatchReceived(address,address,uint256[],uint256[],bytes)\"))` (i.e. 0xbc197c81) if it accepts the transfer(s).\nThis function MUST revert if it rejects the transfer(s).\nReturn of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\n@param _operator  The address which initiated the batch transfer (i.e. msg.sender)\n@param _from      The address which previously owned the token\n@param _typeIDs   An array containing typeIDs of each token being transferred (order and length must match _values array)\n@param _values    An array containing amounts of each token being transferred (order and length must match _typeIDs array)\n@param _data      Additional data with no specified format\n@return           `bytes4(keccak256(\"onEER2BatchReceived(address,address,uint256[],uint256[],bytes)\"))`",
            "id": 2816,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "onEER2BatchReceived",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2801,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "2670:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2800,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2670:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2803,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "2697:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2802,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2697:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2806,
                  "name": "_typeIDs",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "2720:27:13",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2804,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2720:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2805,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2720:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2809,
                  "name": "_values",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "2757:26:13",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2807,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2757:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2808,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2757:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2811,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "2793:20:13",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2810,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2793:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2660:159:13"
            },
            "returnParameters": {
              "id": 2815,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2814,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "2838:6:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2813,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2838:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2837:8:13"
            },
            "scope": 2817,
            "src": "2632:214:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 2818,
        "src": "100:2748:13"
      }
    ],
    "src": "0:2849:13"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.19",
  "updatedAt": "2020-04-08T07:30:09.381Z",
  "devdoc": {
    "methods": {
      "onEER2BatchReceived(address,address,uint256[],uint256[],bytes)": {
        "details": "An EER2-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated. This function MUST return `bytes4(keccak256(\"onEER2BatchReceived(address,address,uint256[],uint256[],bytes)\"))` (i.e. 0xbc197c81) if it accepts the transfer(s). This function MUST revert if it rejects the transfer(s). Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.",
        "params": {
          "_data": "Additional data with no specified format",
          "_from": "The address which previously owned the token",
          "_operator": "The address which initiated the batch transfer (i.e. msg.sender)",
          "_typeIDs": "An array containing typeIDs of each token being transferred (order and length must match _values array)",
          "_values": "An array containing amounts of each token being transferred (order and length must match _typeIDs array)"
        },
        "return": "`bytes4(keccak256(\"onEER2BatchReceived(address,address,uint256[],uint256[],bytes)\"))`"
      },
      "onEER2Received(address,address,uint256,uint256,bytes)": {
        "details": "An EER2-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated. This function MUST return `bytes4(keccak256(\"onEER2Received(address,address,uint256,uint256,bytes)\"))` (i.e. 0xf23a6e61) if it accepts the transfer. This function MUST revert if it rejects the transfer. Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.",
        "params": {
          "_data": "Additional data with no specified format",
          "_from": "The address which previously owned the token",
          "_operator": "The address which initiated the transfer (i.e. msg.sender)",
          "_typeID": "The ID of the token being transferred",
          "_value": "The amount of tokens being transferred"
        },
        "return": "`bytes4(keccak256(\"onEER2Received(address,address,uint256,uint256,bytes)\"))`"
      }
    }
  },
  "userdoc": {
    "methods": {
      "onEER2BatchReceived(address,address,uint256[],uint256[],bytes)": {
        "notice": "Handle the receipt of multiple EER2 token types."
      },
      "onEER2Received(address,address,uint256,uint256,bytes)": {
        "notice": "Handle the receipt of a single EER2 token type."
      }
    },
    "notice": "Note: The ERC-165 identifier for this interface is 0x4e2312e0."
  }
}