@etherisc/gif-contracts
Version:
This repository holds the GIF core contracts and tools to develop, test and deploy GIF instances.
1,573 lines (1,572 loc) • 646 kB
JSON
{
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "approved",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "bundleId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "LogBundleTokenBurned",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "bundleId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "tokenOwner",
"type": "address"
}
],
"name": "LogBundleTokenMinted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "NAME",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SYMBOL",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "approve",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "bundleIdForTokenId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "burned",
"outputs": [
{
"internalType": "bool",
"name": "isBurned",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "exists",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getBundleId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getBundleModuleAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "bundleId",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "mint",
"outputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ownerOf",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "bundleModule",
"type": "address"
}
],
"name": "setBundleModule",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "tokenURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "tokenCount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"allSourcePaths": {
"101": "contracts/tokens/BundleToken.sol",
"17": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/ERC721.sol",
"18": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/IERC721.sol",
"19": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/IERC721Receiver.sol",
"20": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/extensions/IERC721Metadata.sol",
"21": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Address.sol",
"22": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Context.sol",
"24": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Strings.sol",
"25": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/introspection/ERC165.sol",
"26": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/introspection/IERC165.sol",
"4": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/access/Ownable.sol",
"53": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/tokens/IBundleToken.sol"
},
"ast": {
"absolutePath": "contracts/tokens/BundleToken.sol",
"exportedSymbols": {
"Address": [
26374
],
"BundleToken": [
17246
],
"Context": [
24074
],
"ERC165": [
26079
],
"ERC721": [
24987
],
"IBundleToken": [
24052
],
"IERC165": [
27203
],
"IERC721": [
23745
],
"IERC721Metadata": [
27618
],
"IERC721Receiver": [
27591
],
"Ownable": [
20950
],
"Strings": [
23075
]
},
"id": 17247,
"license": "Apache-2.0",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 17035,
"literals": [
"solidity",
"0.8",
".2"
],
"nodeType": "PragmaDirective",
"src": "39:22:101"
},
{
"absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/access/Ownable.sol",
"file": "@openzeppelin/contracts/access/Ownable.sol",
"id": 17036,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 17247,
"sourceUnit": 20951,
"src": "63:52:101",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/ERC721.sol",
"file": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
"id": 17037,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 17247,
"sourceUnit": 24988,
"src": "116:57:101",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/tokens/IBundleToken.sol",
"file": "@etherisc/gif-interface/contracts/tokens/IBundleToken.sol",
"id": 17038,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 17247,
"sourceUnit": 24053,
"src": "175:67:101",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 17039,
"name": "IBundleToken",
"nodeType": "IdentifierPath",
"referencedDeclaration": 24052,
"src": "273:12:101"
},
"id": 17040,
"nodeType": "InheritanceSpecifier",
"src": "273:12:101"
},
{
"baseName": {
"id": 17041,
"name": "ERC721",
"nodeType": "IdentifierPath",
"referencedDeclaration": 24987,
"src": "291:6:101"
},
"id": 17042,
"nodeType": "InheritanceSpecifier",
"src": "291:6:101"
},
{
"baseName": {
"id": 17043,
"name": "Ownable",
"nodeType": "IdentifierPath",
"referencedDeclaration": 20950,
"src": "303:7:101"
},
"id": 17044,
"nodeType": "InheritanceSpecifier",
"src": "303:7:101"
}
],
"contractDependencies": [
20950,
23745,
24052,
24074,
24987,
26079,
27203,
27618
],
"contractKind": "contract",
"fullyImplemented": true,
"id": 17246,
"linearizedBaseContracts": [
17246,
20950,
24987,
27618,
24052,
23745,
26079,
27203,
24074
],
"name": "BundleToken",
"nameLocation": "253:11:101",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"functionSelector": "a3f4df7e",
"id": 17047,
"mutability": "constant",
"name": "NAME",
"nameLocation": "340:4:101",
"nodeType": "VariableDeclaration",
"scope": 17246,
"src": "317:48:101",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 17045,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "317:6:101",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"hexValue": "4749462042756e646c6520546f6b656e",
"id": 17046,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "347:18:101",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_bbfc3e9b464864803acc054897a72761e0805ad16a65cd3c6e7237d5e77e32a8",
"typeString": "literal_string \"GIF Bundle Token\""
},
"value": "GIF Bundle Token"
},
"visibility": "public"
},
{
"constant": true,
"functionSelector": "f76f8d78",
"id": 17050,
"mutability": "constant",
"name": "SYMBOL",
"nameLocation": "394:6:101",
"nodeType": "VariableDeclaration",
"scope": 17246,
"src": "371:37:101",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 17048,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "371:6:101",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"hexValue": "42544b",
"id": 17049,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "403:5:101",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_cbd09d845af28ee5b0642a9230e90a4426144cbbda10cea126e4301fa7e1a7f0",
"typeString": "literal_string \"BTK\""
},
"value": "BTK"
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "6ae9d6e8",
"id": 17054,
"mutability": "mutable",
"name": "bundleIdForTokenId",
"nameLocation": "481:18:101",
"nodeType": "VariableDeclaration",
"scope": 17246,
"src": "415:84:101",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
"typeString": "mapping(uint256 => uint256)"
},
"typeName": {
"id": 17053,
"keyType": {
"id": 17051,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "423:7:101",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Mapping",
"src": "415:58:101",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
"typeString": "mapping(uint256 => uint256)"
},
"valueType": {
"id": 17052,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "449:7:101",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"visibility": "public"
},
{
"constant": false,
"id": 17056,
"mutability": "mutable",
"name": "_bundleModule",
"nameLocation": "521:13:101",
"nodeType": "VariableDeclaration",
"scope": 17246,
"src": "505:29:101",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 17055,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "505:7:101",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "private"
},
{
"constant": false,
"id": 17058,
"mutability": "mutable",
"name": "_totalSupply",
"nameLocation": "556:12:101",
"nodeType": "VariableDeclaration",
"scope": 17246,
"src": "540:28:101",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 17057,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "540:7:101",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "private"
},
{
"body": {
"id": 17079,
"nodeType": "Block",
"src": "603:180:101",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 17066,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 17061,
"name": "_bundleModule",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 17056,
"src": "621:13:101",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 17064,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "646:1:101",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 17063,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "638:7:101",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 17062,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "638:7:101",
"typeDescriptions": {}
}
},
"id": 17065,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "638:10:101",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "621:27:101",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552524f523a42544b2d3030313a4e4f545f494e495449414c495a4544",
"id": 17067,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "650:31:101",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_71c345712a418cc2c46cd273ab8511c6cbb55feb2ba9f1d283511627144b0e51",
"typeString": "literal_string \"ERROR:BTK-001:NOT_INITIALIZED\""
},
"value": "ERROR:BTK-001:NOT_INITIALIZED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_71c345712a418cc2c46cd273ab8511c6cbb55feb2ba9f1d283511627144b0e51",
"typeString": "literal_string \"ERROR:BTK-001:NOT_INITIALIZED\""
}
],
"id": 17060,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "613:7:101",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 17068,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "613:69:101",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 17069,
"nodeType": "ExpressionStatement",
"src": "613:69:101"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 17074,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 17071,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 24064,
"src": "700:10:101",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 17072,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "700:12:101",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 17073,
"name": "_bundleModule",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 17056,
"src": "716:13:101",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "700:29:101",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552524f523a42544b2d3030323a4e4f545f42554e444c455f4d4f44554c45",
"id": 17075,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "731:33:101",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_e4463d809287d808796cb4a3a161ee1bce186c0b33e3e1818bc6844ffcc5748f",
"typeString": "literal_string \"ERROR:BTK-002:NOT_BUNDLE_MODULE\""
},
"value": "ERROR:BTK-002:NOT_BUNDLE_MODULE"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_e4463d809287d808796cb4a3a161ee1bce186c0b33e3e1818bc6844ffcc5748f",
"typeString": "literal_string \"ERROR:BTK-002:NOT_BUNDLE_MODULE\""
}
],
"id": 17070,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "692:7:101",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 17076,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "692:73:101",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 17077,
"nodeType": "ExpressionStatement",
"src": "692:73:101"
},
{
"id": 17078,
"nodeType": "PlaceholderStatement",
"src": "775:1:101"
}
]
},
"id": 17080,
"name": "onlyBundleModule",
"nameLocation": "584:16:101",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 17059,
"nodeType": "ParameterList",
"parameters": [],
"src": "600:2:101"
},
"src": "575:208:101",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 17089,
"nodeType": "Block",
"src": "834:3:101",
"statements": []
},
"id": 17090,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"id": 17083,
"name": "NAME",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 17047,
"src": "810:4:101",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"id": 17084,
"name": "SYMBOL",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 17050,
"src": "816:6:101",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"id": 17085,
"modifierName": {
"id": 17082,
"name": "ERC721",
"nodeType": "IdentifierPath",
"referencedDeclaration": 24987,
"src": "803:6:101"
},
"nodeType": "ModifierInvocation",
"src": "803:20:101"
},
{
"arguments": [],
"id": 17087,
"modifierName": {
"id": 17086,
"name": "Ownable",
"nodeType": "IdentifierPath",
"referencedDeclaration": 20950,
"src": "824:7:101"
},
"nodeType": "ModifierInvocation",
"src": "824:9:101"
}
],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 17081,
"nodeType": "ParameterList",
"parameters": [],
"src": "800:2:101"
},
"returnParameters": {
"id": 17088,
"nodeType": "ParameterList",
"parameters": [],
"src": "834:0:101"
},
"scope": 17246,
"src": "789:48:101",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 17119,
"nodeType": "Block",
"src": "911:230:101",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 17101,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 17096,
"name": "_bundleModule",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 17056,
"src": "929:13:101",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 17099,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "954:1:101",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 17098,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "946:7:101",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 17097,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "946:7:101",
"typeDescriptions": {}
}
},
"id": 17100,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "946:10:101",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "929:27:101",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552524f523a42544b2d3030333a42554e444c455f4d4f44554c455f414c52454144595f444546494e4544",
"id": 17102,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "958:45:101",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_abc636ae2799ac58b80df921189c05433792fe090199f11c917db3daf328f355",
"typeString": "literal_string \"ERROR:BTK-003:BUNDLE_MODULE_ALREADY_DEFINED\""
},
"value": "ERROR:BTK-003:BUNDLE_MODULE_ALREADY_DEFINED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_abc636ae2799ac58b80df921189c05433792fe090199f11c917db3daf328f355",
"typeString": "literal_string \"ERROR:BTK-003:BUNDLE_MODULE_ALREADY_DEFINED\""
}
],
"id": 17095,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "921:7:101",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 17103,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "921:83:101",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 17104,
"nodeType": "ExpressionStatement",
"src": "921:83:101"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 17111,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 17106,
"name": "bundleModule",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 17092,
"src": "1022:12:101",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 17109,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1046:1:101",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{