{
  "_format": "hh-sol-artifact-1",
  "contractName": "ManagedService",
  "sourceName": "contracts/ManagedService.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "CallerIsNotProtocolPaymentRecipient",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ExecutedCall",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "ProtocolPaymentClaimed",
      "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"
    },
    {
      "inputs": [],
      "name": "CALLER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "claimProtocolPayment",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "executeCall",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "payable",
      "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": "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": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100df565b61003a600082610040565b5061010f565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166100db576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561009a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000602082840312156100f157600080fd5b81516001600160a01b038116811461010857600080fd5b9392505050565b610f518061011e6000396000f3fe6080604052600436106100b55760003560e01c8063774237fc11610069578063a217fddf1161004e578063a217fddf1461021b578063b74e9e3b14610230578063d547741f1461025057600080fd5b8063774237fc1461019657806391d14854146101ca57600080fd5b80632f2ff15d1161009a5780632f2ff15d1461013457806336568abe1461015657806354132d781461017657600080fd5b806301ffc9a7146100c1578063248a9ca3146100f657600080fd5b366100bc57005b600080fd5b3480156100cd57600080fd5b506100e16100dc366004610ba6565b610270565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b50610126610111366004610be8565b60009081526020819052604090206001015490565b6040519081526020016100ed565b34801561014057600080fd5b5061015461014f366004610c2a565b610309565b005b34801561016257600080fd5b50610154610171366004610c2a565b610333565b610189610184366004610c85565b6103d1565b6040516100ed9190610dac565b3480156101a257600080fd5b506101267f843c3a00fa95510a35f425371231fd3fe4642e719cb4595160763d6d02594b5081565b3480156101d657600080fd5b506100e16101e5366004610c2a565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561022757600080fd5b50610126600081565b34801561023c57600080fd5b5061015461024b366004610be8565b610511565b34801561025c57600080fd5b5061015461026b366004610c2a565b6106fe565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061030357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008281526020819052604090206001015461032481610723565b61032e8383610730565b505050565b73ffffffffffffffffffffffffffffffffffffffff811633146103c35760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cd8282610820565b5050565b60607f843c3a00fa95510a35f425371231fd3fe4642e719cb4595160763d6d02594b506103fd81610723565b60405183815273ffffffffffffffffffffffffffffffffffffffff86169033907fc2822ad937e2e42263be82e6c6bd0969b5d174e5a131d5c6372d47cb54cbbce79060200160405180910390a36000808673ffffffffffffffffffffffffffffffffffffffff1685876040516104739190610dbf565b60006040518083038185875af1925050503d80600081146104b0576040519150601f19603f3d011682016040523d82523d6000602084013e6104b5565b606091505b5091509150816105075760405162461bcd60e51b815260206004820152601f60248201527f5065726d697373696f6e656443616c6c65723a2063616c6c206661696c65640060448201526064016103ba565b9695505050505050565b3360009081527f96a39c6873e8c91df4ff4e5fee2914eac96e97cdea7396527c6f3edbad83a904602052604090205460ff16610579576040517fbf7ee2a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b478111156105ef5760405162461bcd60e51b815260206004820152603f60248201527f4d616e61676564536572766963653a20496e73756666696369656e742066756e60448201527f647320746f2077697468647261772070726f746f636f6c207061796d656e740060648201526084016103ba565b60405181815233907f95c4271d7d135112b6c5b35869852607dbafbfab924b79a54d15a440394461079060200160405180910390a260408051600080825260208201909252339083906040516106459190610dbf565b60006040518083038185875af1925050503d8060008114610682576040519150601f19603f3d011682016040523d82523d6000602084013e610687565b606091505b50509050806103cd5760405162461bcd60e51b815260206004820152603360248201527f4d616e61676564536572766963653a204661696c656420746f2077697468647260448201527f61772070726f746f636f6c207061796d656e740000000000000000000000000060648201526084016103ba565b60008281526020819052604090206001015461071981610723565b61032e8383610820565b61072d81336108d7565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166103cd5760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556107c23390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156103cd5760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166103cd5761091581610957565b610920836020610976565b604051602001610931929190610ddb565b60408051601f198184030181529082905262461bcd60e51b82526103ba91600401610dac565b606061030373ffffffffffffffffffffffffffffffffffffffff831660145b60606000610985836002610e8b565b610990906002610ec8565b67ffffffffffffffff8111156109a8576109a8610c56565b6040519080825280601f01601f1916602001820160405280156109d2576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110610a0957610a09610ee0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610a6c57610a6c610ee0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000610aa8846002610e8b565b610ab3906001610ec8565b90505b6001811115610b50577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110610af457610af4610ee0565b1a60f81b828281518110610b0a57610b0a610ee0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93610b4981610f0f565b9050610ab6565b508315610b9f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016103ba565b9392505050565b600060208284031215610bb857600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b9f57600080fd5b600060208284031215610bfa57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c2557600080fd5b919050565b60008060408385031215610c3d57600080fd5b82359150610c4d60208401610c01565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215610c9a57600080fd5b610ca384610c01565b9250602084013567ffffffffffffffff80821115610cc057600080fd5b818601915086601f830112610cd457600080fd5b813581811115610ce657610ce6610c56565b604051601f8201601f19908116603f01168101908382118183101715610d0e57610d0e610c56565b81604052828152896020848701011115610d2757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60005b83811015610d6b578181015183820152602001610d53565b83811115610d7a576000848401525b50505050565b60008151808452610d98816020860160208601610d50565b601f01601f19169290920160200192915050565b602081526000610b9f6020830184610d80565b60008251610dd1818460208701610d50565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351610e13816017850160208801610d50565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351610e50816028840160208801610d50565b01602801949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610ec357610ec3610e5c565b500290565b60008219821115610edb57610edb610e5c565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081610f1e57610f1e610e5c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea164736f6c634300080f000a",
  "deployedBytecode": "0x6080604052600436106100b55760003560e01c8063774237fc11610069578063a217fddf1161004e578063a217fddf1461021b578063b74e9e3b14610230578063d547741f1461025057600080fd5b8063774237fc1461019657806391d14854146101ca57600080fd5b80632f2ff15d1161009a5780632f2ff15d1461013457806336568abe1461015657806354132d781461017657600080fd5b806301ffc9a7146100c1578063248a9ca3146100f657600080fd5b366100bc57005b600080fd5b3480156100cd57600080fd5b506100e16100dc366004610ba6565b610270565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b50610126610111366004610be8565b60009081526020819052604090206001015490565b6040519081526020016100ed565b34801561014057600080fd5b5061015461014f366004610c2a565b610309565b005b34801561016257600080fd5b50610154610171366004610c2a565b610333565b610189610184366004610c85565b6103d1565b6040516100ed9190610dac565b3480156101a257600080fd5b506101267f843c3a00fa95510a35f425371231fd3fe4642e719cb4595160763d6d02594b5081565b3480156101d657600080fd5b506100e16101e5366004610c2a565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561022757600080fd5b50610126600081565b34801561023c57600080fd5b5061015461024b366004610be8565b610511565b34801561025c57600080fd5b5061015461026b366004610c2a565b6106fe565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061030357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008281526020819052604090206001015461032481610723565b61032e8383610730565b505050565b73ffffffffffffffffffffffffffffffffffffffff811633146103c35760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cd8282610820565b5050565b60607f843c3a00fa95510a35f425371231fd3fe4642e719cb4595160763d6d02594b506103fd81610723565b60405183815273ffffffffffffffffffffffffffffffffffffffff86169033907fc2822ad937e2e42263be82e6c6bd0969b5d174e5a131d5c6372d47cb54cbbce79060200160405180910390a36000808673ffffffffffffffffffffffffffffffffffffffff1685876040516104739190610dbf565b60006040518083038185875af1925050503d80600081146104b0576040519150601f19603f3d011682016040523d82523d6000602084013e6104b5565b606091505b5091509150816105075760405162461bcd60e51b815260206004820152601f60248201527f5065726d697373696f6e656443616c6c65723a2063616c6c206661696c65640060448201526064016103ba565b9695505050505050565b3360009081527f96a39c6873e8c91df4ff4e5fee2914eac96e97cdea7396527c6f3edbad83a904602052604090205460ff16610579576040517fbf7ee2a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b478111156105ef5760405162461bcd60e51b815260206004820152603f60248201527f4d616e61676564536572766963653a20496e73756666696369656e742066756e60448201527f647320746f2077697468647261772070726f746f636f6c207061796d656e740060648201526084016103ba565b60405181815233907f95c4271d7d135112b6c5b35869852607dbafbfab924b79a54d15a440394461079060200160405180910390a260408051600080825260208201909252339083906040516106459190610dbf565b60006040518083038185875af1925050503d8060008114610682576040519150601f19603f3d011682016040523d82523d6000602084013e610687565b606091505b50509050806103cd5760405162461bcd60e51b815260206004820152603360248201527f4d616e61676564536572766963653a204661696c656420746f2077697468647260448201527f61772070726f746f636f6c207061796d656e740000000000000000000000000060648201526084016103ba565b60008281526020819052604090206001015461071981610723565b61032e8383610820565b61072d81336108d7565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166103cd5760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556107c23390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156103cd5760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166103cd5761091581610957565b610920836020610976565b604051602001610931929190610ddb565b60408051601f198184030181529082905262461bcd60e51b82526103ba91600401610dac565b606061030373ffffffffffffffffffffffffffffffffffffffff831660145b60606000610985836002610e8b565b610990906002610ec8565b67ffffffffffffffff8111156109a8576109a8610c56565b6040519080825280601f01601f1916602001820160405280156109d2576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110610a0957610a09610ee0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610a6c57610a6c610ee0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000610aa8846002610e8b565b610ab3906001610ec8565b90505b6001811115610b50577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110610af457610af4610ee0565b1a60f81b828281518110610b0a57610b0a610ee0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93610b4981610f0f565b9050610ab6565b508315610b9f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016103ba565b9392505050565b600060208284031215610bb857600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b9f57600080fd5b600060208284031215610bfa57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c2557600080fd5b919050565b60008060408385031215610c3d57600080fd5b82359150610c4d60208401610c01565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215610c9a57600080fd5b610ca384610c01565b9250602084013567ffffffffffffffff80821115610cc057600080fd5b818601915086601f830112610cd457600080fd5b813581811115610ce657610ce6610c56565b604051601f8201601f19908116603f01168101908382118183101715610d0e57610d0e610c56565b81604052828152896020848701011115610d2757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60005b83811015610d6b578181015183820152602001610d53565b83811115610d7a576000848401525b50505050565b60008151808452610d98816020860160208601610d50565b601f01601f19169290920160200192915050565b602081526000610b9f6020830184610d80565b60008251610dd1818460208701610d50565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351610e13816017850160208801610d50565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351610e50816028840160208801610d50565b01602801949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610ec357610ec3610e5c565b500290565b60008219821115610edb57610edb610e5c565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081610f1e57610f1e610e5c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
