@gooddollar/goodcontracts
Version:
GoodDollar Contracts
1,301 lines • 94.8 kB
JSON
{
"contractName": "MinterRole",
"abi": [
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "MinterAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "MinterRemoved",
"type": "event"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "isMinter",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "addMinter",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceMinter",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/access/roles/MinterRole.sol\":\"MinterRole\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzz-raw://4ca6617349a9b36fd82e9442a8e445ce9021a174e4399d1457ddc894ee3f5df3\",\"dweb:/ipfs/QmcmyB4cNazZ1sw963Afaijt67M9bDgwmGXCgQajGTD4tm\"]},\"openzeppelin-solidity/contracts/access/roles/MinterRole.sol\":{\"keccak256\":\"0x3199053db04cdae6c9b4380921a4a4ee720b568d6a9660883b29d25fbec31bc0\",\"urls\":[\"bzz-raw://1b0ff368e21d6007c06e4cfb286fe59d7d7d3ec06283300c9be2153ba11fa93a\",\"dweb:/ipfs/QmRPq2wZM4RAcbj31dP34GCr1CSy2qy3JqfXEkdVie4HLT\"]}},\"version\":1}",
"bytecode": "0x",
"deployedBytecode": "0x",
"sourceMap": "",
"deployedSourceMap": "",
"source": "pragma solidity ^0.5.0;\n\nimport \"../Roles.sol\";\n\ncontract MinterRole {\n using Roles for Roles.Role;\n\n event MinterAdded(address indexed account);\n event MinterRemoved(address indexed account);\n\n Roles.Role private _minters;\n\n constructor () internal {\n _addMinter(msg.sender);\n }\n\n modifier onlyMinter() {\n require(isMinter(msg.sender));\n _;\n }\n\n function isMinter(address account) public view returns (bool) {\n return _minters.has(account);\n }\n\n function addMinter(address account) public onlyMinter {\n _addMinter(account);\n }\n\n function renounceMinter() public {\n _removeMinter(msg.sender);\n }\n\n function _addMinter(address account) internal {\n _minters.add(account);\n emit MinterAdded(account);\n }\n\n function _removeMinter(address account) internal {\n _minters.remove(account);\n emit MinterRemoved(account);\n }\n}\n",
"sourcePath": "openzeppelin-solidity/contracts/access/roles/MinterRole.sol",
"ast": {
"absolutePath": "openzeppelin-solidity/contracts/access/roles/MinterRole.sol",
"exportedSymbols": {
"MinterRole": [
20844
]
},
"id": 20845,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 20743,
"literals": [
"solidity",
"^",
"0.5",
".0"
],
"nodeType": "PragmaDirective",
"src": "0:23:71"
},
{
"absolutePath": "openzeppelin-solidity/contracts/access/Roles.sol",
"file": "../Roles.sol",
"id": 20744,
"nodeType": "ImportDirective",
"scope": 20845,
"sourceUnit": 20742,
"src": "25:22:71",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 20844,
"linearizedBaseContracts": [
20844
],
"name": "MinterRole",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 20747,
"libraryName": {
"contractScope": null,
"id": 20745,
"name": "Roles",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 20741,
"src": "81:5:71",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Roles_$20741",
"typeString": "library Roles"
}
},
"nodeType": "UsingForDirective",
"src": "75:27:71",
"typeName": {
"contractScope": null,
"id": 20746,
"name": "Roles.Role",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 20654,
"src": "91:10:71",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Role_$20654_storage_ptr",
"typeString": "struct Roles.Role"
}
}
},
{
"anonymous": false,
"documentation": null,
"id": 20751,
"name": "MinterAdded",
"nodeType": "EventDefinition",
"parameters": {
"id": 20750,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 20749,
"indexed": true,
"name": "account",
"nodeType": "VariableDeclaration",
"scope": 20751,
"src": "126:23:71",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 20748,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "126:7:71",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "125:25:71"
},
"src": "108:43:71"
},
{
"anonymous": false,
"documentation": null,
"id": 20755,
"name": "MinterRemoved",
"nodeType": "EventDefinition",
"parameters": {
"id": 20754,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 20753,
"indexed": true,
"name": "account",
"nodeType": "VariableDeclaration",
"scope": 20755,
"src": "176:23:71",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 20752,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "176:7:71",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "175:25:71"
},
"src": "156:45:71"
},
{
"constant": false,
"id": 20757,
"name": "_minters",
"nodeType": "VariableDeclaration",
"scope": 20844,
"src": "207:27:71",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Role_$20654_storage",
"typeString": "struct Roles.Role"
},
"typeName": {
"contractScope": null,
"id": 20756,
"name": "Roles.Role",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 20654,
"src": "207:10:71",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Role_$20654_storage_ptr",
"typeString": "struct Roles.Role"
}
},
"value": null,
"visibility": "private"
},
{
"body": {
"id": 20765,
"nodeType": "Block",
"src": "265:39:71",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 20761,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22171,
"src": "286:3:71",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 20762,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "286:10:71",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 20760,
"name": "_addMinter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20827,
"src": "275:10:71",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 20763,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "275:22:71",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 20764,
"nodeType": "ExpressionStatement",
"src": "275:22:71"
}
]
},
"documentation": null,
"id": 20766,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 20758,
"nodeType": "ParameterList",
"parameters": [],
"src": "253:2:71"
},
"returnParameters": {
"id": 20759,
"nodeType": "ParameterList",
"parameters": [],
"src": "265:0:71"
},
"scope": 20844,
"src": "241:63:71",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 20776,
"nodeType": "Block",
"src": "332:57:71",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 20770,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22171,
"src": "359:3:71",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 20771,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "359:10:71",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 20769,
"name": "isMinter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20790,
"src": "350:8:71",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view returns (bool)"
}
},
"id": 20772,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "350:20:71",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 20768,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
22174,
22175
],
"referencedDeclaration": 22174,
"src": "342:7:71",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 20773,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "342:29:71",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 20774,
"nodeType": "ExpressionStatement",
"src": "342:29:71"
},
{
"id": 20775,
"nodeType": "PlaceholderStatement",
"src": "381:1:71"
}
]
},
"documentation": null,
"id": 20777,
"name": "onlyMinter",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 20767,
"nodeType": "ParameterList",
"parameters": [],
"src": "329:2:71"
},
"src": "310:79:71",
"visibility": "internal"
},
{
"body": {
"id": 20789,
"nodeType": "Block",
"src": "457:45:71",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 20786,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20779,
"src": "487:7:71",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"id": 20784,
"name": "_minters",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20757,
"src": "474:8:71",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Role_$20654_storage",
"typeString": "struct Roles.Role storage ref"
}
},
"id": 20785,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "has",
"nodeType": "MemberAccess",
"referencedDeclaration": 20740,
"src": "474:12:71",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_struct$_Role_$20654_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$20654_storage_ptr_$",
"typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)"
}
},
"id": 20787,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "474:21:71",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 20783,
"id": 20788,
"nodeType": "Return",
"src": "467:28:71"
}
]
},
"documentation": null,
"id": 20790,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isMinter",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 20780,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 20779,
"name": "account",
"nodeType": "VariableDeclaration",
"scope": 20790,
"src": "413:15:71",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 20778,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "413:7:71",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "412:17:71"
},
"returnParameters": {
"id": 20783,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 20782,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 20790,
"src": "451:4:71",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 20781,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "451:4:71",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "450:6:71"
},
"scope": 20844,
"src": "395:107:71",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 20801,
"nodeType": "Block",
"src": "562:36:71",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 20798,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20792,
"src": "583:7:71",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 20797,
"name": "_addMinter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20827,
"src": "572:10:71",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 20799,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "572:19:71",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 20800,
"nodeType": "ExpressionStatement",
"src": "572:19:71"
}
]
},
"documentation": null,
"id": 20802,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 20795,
"modifierName": {
"argumentTypes": null,
"id": 20794,
"name": "onlyMinter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20777,
"src": "551:10:71",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "551:10:71"
}
],
"name": "addMinter",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 20793,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 20792,
"name": "account",
"nodeType": "VariableDeclaration",
"scope": 20802,
"src": "527:15:71",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 20791,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "527:7:71",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "526:17:71"
},
"returnParameters": {
"id": 20796,
"nodeType": "ParameterList",
"parameters": [],
"src": "562:0:71"
},
"scope": 20844,
"src": "508:90:71",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 20810,
"nodeType": "Block",
"src": "637:42:71",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 20806,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22171,
"src": "661:3:71",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 20807,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "661:10:71",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 20805,
"name": "_removeMinter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20843,
"src": "647:13:71",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 20808,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "647:25:71",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 20809,
"nodeType": "ExpressionStatement",
"src": "647:25:71"
}
]
},
"documentation": null,
"id": 20811,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "renounceMinter",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 20803,
"nodeType": "ParameterList",
"parameters": [],
"src": "627:2:71"
},
"returnParameters": {
"id": 20804,
"nodeType": "ParameterList",
"parameters": [],
"src": "637:0:71"
},
"scope": 20844,
"src": "604:75:71",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 20826,
"nodeType": "Block",
"src": "731:73:71",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 20819,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20813,
"src": "754:7:71",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"id": 20816,
"name": "_minters",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20757,
"src": "741:8:71",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Role_$20654_storage",
"typeString": "struct Roles.Role storage ref"
}
},
"id": 20818,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 20686,
"src": "741:12:71",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$20654_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$20654_storage_ptr_$",
"typeString": "function (struct Roles.Role storage pointer,address)"
}
},
"id": 20820,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "741:21:71",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 20821,
"nodeType": "ExpressionStatement",
"src": "741:21:71"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 20823,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20813,
"src": "789:7:71",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 20822,
"name": "MinterAdded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20751,
"src": "777:11:71",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 20824,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "777:20:71",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 20825,
"nodeType": "EmitStatement",
"src": "772:25:71"
}
]
},
"documentation": null,
"id": 20827,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_addMinter",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 20814,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 20813,
"name": "account",
"nodeType": "VariableDeclaration",
"scope": 20827,
"src": "705:15:71",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 20812,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "705:7:71",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "704:17:71"
},
"returnParameters": {
"id": 20815,
"nodeType": "ParameterList",
"parameters": [],
"src": "731:0:71"
},
"scope": 20844,
"src": "685:119:71",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 20842,
"nodeType": "Block",
"src": "859:78:71",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 20835,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20829,
"src": "885:7:71",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"id": 20832,
"name": "_minters",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20757,
"src": "869:8:71",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Role_$20654_storage",
"typeString": "struct Roles.Role storage ref"
}
},
"id": 20834,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "remove",
"nodeType": "MemberAccess",
"referencedDeclaration": 20717,
"src": "869:15:71",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$20654_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$20654_storage_ptr_$",
"typeString": "function (struct Roles.Role storage pointer,address)"
}
},
"id": 20836,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "869:24:71",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 20837,
"nodeType": "ExpressionStatement",
"src": "869:24:71"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 20839,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20829,
"src": "922:7:71",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 20838,
"name": "MinterRemoved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20755,
"src": "908:13:71",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 20840,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "908:22:71",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 20841,
"nodeType": "EmitStatement",
"src": "903:27:71"
}
]
},
"documentation": null,
"id": 20843,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_removeMinter",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 20830,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 20829,
"name": "account",
"nodeType": "VariableDeclaration",
"scope": 20843,
"src": "833:15:71",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 20828,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "833:7:71",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "832:17:71"
},
"returnParameters": {
"id": 20831,
"nodeType": "ParameterList",
"parameters": [],
"src": "859:0:71"
},
"scope": 20844,
"src": "810:127:71",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
}
],
"scope": 20845,
"src": "49:890:71"
}
],
"src": "0:940:71"
},
"legacyAST": {
"absolutePath": "openzeppelin-solidity/contracts/access/roles/MinterRole.sol",
"exportedSymbols": {
"MinterRole": [
20844
]
},
"id": 20845,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 20743,
"liter