[
  {
     "anonymous":false,
     "inputs":[
        {
           "indexed":false,
           "internalType":"address",
           "name":"previousAdmin",
           "type":"address"
        },
        {
           "indexed":false,
           "internalType":"address",
           "name":"newAdmin",
           "type":"address"
        }
     ],
     "name":"AdminChanged",
     "type":"event"
  },
  {
     "anonymous":false,
     "inputs":[
        {
           "indexed":true,
           "internalType":"address",
           "name":"beacon",
           "type":"address"
        }
     ],
     "name":"BeaconUpgraded",
     "type":"event"
  },
  {
     "anonymous":false,
     "inputs":[
        {
           "indexed":true,
           "internalType":"bytes32",
           "name":"role",
           "type":"bytes32"
        },
        {
           "indexed":true,
           "internalType":"bytes32",
           "name":"previousAdminRole",
           "type":"bytes32"
        },
        {
           "indexed":true,
           "internalType":"bytes32",
           "name":"newAdminRole",
           "type":"bytes32"
        }
     ],
     "name":"RoleAdminChanged",
     "type":"event"
  },
  {
     "anonymous":false,
     "inputs":[
        {
           "indexed":true,
           "internalType":"bytes32",
           "name":"role",
           "type":"bytes32"
        },
        {
           "indexed":true,
           "internalType":"address",
           "name":"account",
           "type":"address"
        },
        {
           "indexed":true,
           "internalType":"address",
           "name":"sender",
           "type":"address"
        }
     ],
     "name":"RoleGranted",
     "type":"event"
  },
  {
     "anonymous":false,
     "inputs":[
        {
           "indexed":true,
           "internalType":"bytes32",
           "name":"role",
           "type":"bytes32"
        },
        {
           "indexed":true,
           "internalType":"address",
           "name":"account",
           "type":"address"
        },
        {
           "indexed":true,
           "internalType":"address",
           "name":"sender",
           "type":"address"
        }
     ],
     "name":"RoleRevoked",
     "type":"event"
  },
  {
     "anonymous":false,
     "inputs":[
        {
           "indexed":true,
           "internalType":"address",
           "name":"sender",
           "type":"address"
        },
        {
           "indexed":false,
           "internalType":"uint256",
           "name":"tokenId",
           "type":"uint256"
        }
     ],
     "name":"TokenStaked",
     "type":"event"
  },
  {
     "anonymous":false,
     "inputs":[
        {
           "indexed":true,
           "internalType":"address",
           "name":"sender",
           "type":"address"
        },
        {
           "indexed":false,
           "internalType":"uint256",
           "name":"tokenId",
           "type":"uint256"
        }
     ],
     "name":"TokenUnstaked",
     "type":"event"
  },
  {
     "anonymous":false,
     "inputs":[
        {
           "indexed":true,
           "internalType":"address",
           "name":"implementation",
           "type":"address"
        }
     ],
     "name":"Upgraded",
     "type":"event"
  },
  {
     "inputs":[

     ],
     "name":"DEFAULT_ADMIN_ROLE",
     "outputs":[
        {
           "internalType":"bytes32",
           "name":"",
           "type":"bytes32"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[

     ],
     "name":"MANAGER_ROLE",
     "outputs":[
        {
           "internalType":"bytes32",
           "name":"",
           "type":"bytes32"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[

     ],
     "name":"SIGNER_ROLE",
     "outputs":[
        {
           "internalType":"bytes32",
           "name":"",
           "type":"bytes32"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[

     ],
     "name":"UPGRADER_ROLE",
     "outputs":[
        {
           "internalType":"bytes32",
           "name":"",
           "type":"bytes32"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"bytes32",
           "name":"role",
           "type":"bytes32"
        }
     ],
     "name":"getRoleAdmin",
     "outputs":[
        {
           "internalType":"bytes32",
           "name":"",
           "type":"bytes32"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"bytes32",
           "name":"role",
           "type":"bytes32"
        },
        {
           "internalType":"address",
           "name":"account",
           "type":"address"
        }
     ],
     "name":"grantRole",
     "outputs":[

     ],
     "stateMutability":"nonpayable",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"bytes32",
           "name":"role",
           "type":"bytes32"
        },
        {
           "internalType":"address",
           "name":"account",
           "type":"address"
        }
     ],
     "name":"hasRole",
     "outputs":[
        {
           "internalType":"bool",
           "name":"",
           "type":"bool"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"address",
           "name":"stakingContract_",
           "type":"address"
        },
        {
           "internalType":"address",
           "name":"tokenContract_",
           "type":"address"
        },
        {
           "internalType":"address",
           "name":"oilContract_",
           "type":"address"
        }
     ],
     "name":"initialize",
     "outputs":[

     ],
     "stateMutability":"nonpayable",
     "type":"function"
  },
  {
     "inputs":[

     ],
     "name":"oilContract",
     "outputs":[
        {
           "internalType":"contract Oil",
           "name":"",
           "type":"address"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"address",
           "name":"operator",
           "type":"address"
        },
        {
           "internalType":"address",
           "name":"from",
           "type":"address"
        },
        {
           "internalType":"uint256",
           "name":"tokenId",
           "type":"uint256"
        },
        {
           "internalType":"bytes",
           "name":"data",
           "type":"bytes"
        }
     ],
     "name":"onERC721Received",
     "outputs":[
        {
           "internalType":"bytes4",
           "name":"",
           "type":"bytes4"
        }
     ],
     "stateMutability":"nonpayable",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"uint256",
           "name":"tokenId_",
           "type":"uint256"
        }
     ],
     "name":"ownerOf",
     "outputs":[
        {
           "internalType":"address",
           "name":"",
           "type":"address"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[

     ],
     "name":"proxiableUUID",
     "outputs":[
        {
           "internalType":"bytes32",
           "name":"",
           "type":"bytes32"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"bytes32",
           "name":"role",
           "type":"bytes32"
        },
        {
           "internalType":"address",
           "name":"account",
           "type":"address"
        }
     ],
     "name":"renounceRole",
     "outputs":[

     ],
     "stateMutability":"nonpayable",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"bytes32",
           "name":"role",
           "type":"bytes32"
        },
        {
           "internalType":"address",
           "name":"account",
           "type":"address"
        }
     ],
     "name":"revokeRole",
     "outputs":[

     ],
     "stateMutability":"nonpayable",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"uint256[]",
           "name":"tokenIds_",
           "type":"uint256[]"
        }
     ],
     "name":"secondsStakedOf",
     "outputs":[
        {
           "internalType":"uint256[]",
           "name":"",
           "type":"uint256[]"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"uint256[]",
           "name":"tokenIds_",
           "type":"uint256[]"
        }
     ],
     "name":"stake",
     "outputs":[

     ],
     "stateMutability":"nonpayable",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"uint256[]",
           "name":"tokenIds_",
           "type":"uint256[]"
        }
     ],
     "name":"stakedTimeOf",
     "outputs":[
        {
           "internalType":"uint256[]",
           "name":"",
           "type":"uint256[]"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[

     ],
     "name":"stakingContract",
     "outputs":[
        {
           "internalType":"address",
           "name":"",
           "type":"address"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"bytes4",
           "name":"interfaceId",
           "type":"bytes4"
        }
     ],
     "name":"supportsInterface",
     "outputs":[
        {
           "internalType":"bool",
           "name":"",
           "type":"bool"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[

     ],
     "name":"tokenContract",
     "outputs":[
        {
           "internalType":"contract IERC721Like",
           "name":"",
           "type":"address"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"address",
           "name":"owner_",
           "type":"address"
        }
     ],
     "name":"tokensOf",
     "outputs":[
        {
           "internalType":"uint256[]",
           "name":"",
           "type":"uint256[]"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[

     ],
     "name":"uniqueOwnerCount",
     "outputs":[
        {
           "internalType":"uint256",
           "name":"",
           "type":"uint256"
        }
     ],
     "stateMutability":"view",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"uint256[]",
           "name":"tokenIds_",
           "type":"uint256[]"
        }
     ],
     "name":"unstake",
     "outputs":[

     ],
     "stateMutability":"nonpayable",
     "type":"function"
  },
  {
     "inputs":[

     ],
     "name":"unstakeAll",
     "outputs":[

     ],
     "stateMutability":"nonpayable",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"address",
           "name":"newImplementation",
           "type":"address"
        }
     ],
     "name":"upgradeTo",
     "outputs":[

     ],
     "stateMutability":"nonpayable",
     "type":"function"
  },
  {
     "inputs":[
        {
           "internalType":"address",
           "name":"newImplementation",
           "type":"address"
        },
        {
           "internalType":"bytes",
           "name":"data",
           "type":"bytes"
        }
     ],
     "name":"upgradeToAndCall",
     "outputs":[

     ],
     "stateMutability":"payable",
     "type":"function"
  }
]
