{
  "_format": "hh-sol-artifact-1",
  "contractName": "FaucetService",
  "sourceName": "contracts/services/FaucetService.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_masterOwner",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "_callers",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_rewardPerApprove",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_balanceThresholdForReward",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "OwnershipChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "Received",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "Released",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldThreshold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newThreshold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "UpdateBalanceThresholdForReward",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "UpdateCallerStatus",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "UpdateRewardAmount",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        }
      ],
      "name": "WalletFunded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "FLAVOR",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "allowedCallers",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "balanceThresholdForReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable[]",
          "name": "_wallets",
          "type": "address[]"
        }
      ],
      "name": "faucet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "flavor",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "masterOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "release",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardPerApprove",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_newBalanceThresholdForReward",
          "type": "uint256"
        }
      ],
      "name": "updateBalanceThresholdForReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_caller",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_approved",
          "type": "bool"
        }
      ],
      "name": "updateCallerStatus",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_newRewardAmount",
          "type": "uint256"
        }
      ],
      "name": "updateRewardAmount",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162001008380380620010088339810160408190526200003491620001ad565b6001600160a01b038416620000665760405162461bcd60e51b81526004016200005d90620002a0565b60405180910390fd5b60008211620000895760405162461bcd60e51b81526004016200005d9062000328565b60005b8351811015620001615760006001600160a01b0316848281518110620000c257634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03161415620000f45760405162461bcd60e51b81526004016200005d90620002e3565b60018060008684815181106200011a57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558062000158816200037a565b9150506200008c565b50600080546001600160a01b0319166001600160a01b03959095169490941790935560025550600355620003b8565b80516001600160a01b0381168114620001a857600080fd5b919050565b60008060008060808587031215620001c3578384fd5b620001ce8562000190565b602086810151919550906001600160401b0380821115620001ed578586fd5b818801915088601f83011262000201578586fd5b815181811115620002165762000216620003a2565b83810260405185828201018181108582111715620002385762000238620003a2565b604052828152858101935084860182860187018d10156200025757898afd5b8995505b8386101562000284576200026f8162000190565b8552600195909501949386019386016200025b565b5060408b01516060909b0151999c909b50975050505050505050565b60208082526023908201527f466175636574536572766963653a20696e76616c6964206d6173746572206f776040820152623732b960e91b606082015260800190565b60208082526025908201527f466175636574536572766963653a20696e76616c69642063616c6c6572206164604082015264647265737360d81b606082015260800190565b60208082526032908201527f466175636574536572766963653a207265776172642070657220617070726f7660408201527165206d757374206e6f74206265207a65726f60701b606082015260800190565b60006000198214156200039b57634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b610c4080620003c86000396000f3fe6080604052600436106100e15760003560e01c806386d1a69f1161007f578063e7201d7d11610059578063e7201d7d1461026b578063f2fde38b1461028d578063f59e4f65146102ad578063ffa1ad74146102c25761012b565b806386d1a69f146102165780639b85fe761461022b578063de09bacf1461024b5761012b565b806358c1c499116100bb57806358c1c4991461019f578063775e6920146101b45780637b334154146101c957806386aa98b0146101f65761012b565b806315c2ba14146101305780634b14c0421461015257806354fd4d501461017d5761012b565b3661012b57336001600160a01b03167f74cf3d18d0ddca79038197ad0dd2c7fa5005ef61a5d1ed190e8a8a437e2fcf103442604051610121929190610b7e565b60405180910390a2005b600080fd5b34801561013c57600080fd5b5061015061014b366004610935565b6102d7565b005b34801561015e57600080fd5b50610167610374565b6040516101749190610b75565b60405180910390f35b34801561018957600080fd5b5061019261037a565b604051610174919061097c565b3480156101ab57600080fd5b5061019261039a565b3480156101c057600080fd5b506101676103c5565b3480156101d557600080fd5b506101e96101e4366004610867565b6103cb565b6040516101749190610961565b34801561020257600080fd5b506101506102113660046108c6565b6103e0565b34801561022257600080fd5b506101506105ac565b34801561023757600080fd5b5061015061024636600461088a565b61064c565b34801561025757600080fd5b50610150610266366004610935565b610700565b34801561027757600080fd5b50610280610768565b604051610174919061094d565b34801561029957600080fd5b506101506102a8366004610867565b610777565b3480156102b957600080fd5b5061019261081c565b3480156102ce57600080fd5b50610192610845565b6000546001600160a01b0316331461030a5760405162461bcd60e51b815260040161030190610aa4565b60405180910390fd5b6000811161032a5760405162461bcd60e51b815260040161030190610b20565b600280549082905560405133907f73e9d6d9b9f59093c10026af838c807858a65951bb561826b3d579c7d7f397779061036890849086904290610b8c565b60405180910390a25050565b60025481565b60408051808201909152600681526518971817191b60d11b602082015290565b6040518060400160405280600f81526020016e46617563657453657276696365563160881b81525081565b60035481565b60016020526000908152604090205460ff1681565b6000546001600160a01b031633148061040857503360009081526001602052604090205460ff165b6104245760405162461bcd60e51b815260040161030190610a59565b600254610432908290610ba2565b4710156104515760405162461bcd60e51b8152600401610301906109cf565b60005b818110156105a75760035483838381811061047f57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906104949190610867565b6001600160a01b03163111610595578282828181106104c357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906104d89190610867565b6001600160a01b03166108fc6002549081150290604051600060405180830381858888f19350505050158015610512573d6000803e3d6000fd5b5082828281811061053357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906105489190610867565b6001600160a01b0316336001600160a01b03167fdcd765526e7e876773520212c462da95330cd0b04f266d7902578351482bee9e60025460405161058c9190610b75565b60405180910390a35b8061059f81610bc1565b915050610454565b505050565b6000546001600160a01b031633146105d65760405162461bcd60e51b815260040161030190610aa4565b6040514790339082156108fc029083906000818181858888f19350505050158015610605573d6000803e3d6000fd5b50336001600160a01b03167f82e416ba72d10e709b5de7ac16f5f49ff1d94f22d55bf582d353d3c313a1e8dd8242604051610641929190610b7e565b60405180910390a250565b6000546001600160a01b031633146106765760405162461bcd60e51b815260040161030190610aa4565b6001600160a01b03821661069c5760405162461bcd60e51b815260040161030190610adb565b6001600160a01b03821660008181526001602052604090819020805460ff19168415151790555133907f4a4c549681e4e5177d89ab065a43c9a5947535128674bcfb83ca9983ebb81acf906106f4908590429061096c565b60405180910390a35050565b6000546001600160a01b0316331461072a5760405162461bcd60e51b815260040161030190610aa4565b600380549082905560405133907f8d3daf86bdaac0eea606ba9ad986a8c6716abb09f2006f6587986d74a581a1d49061036890849086904290610b8c565b6000546001600160a01b031681565b6000546001600160a01b031633146107a15760405162461bcd60e51b815260040161030190610aa4565b6001600160a01b0381166107c75760405162461bcd60e51b815260040161030190610a12565b600080546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fb629abac56920604331e5facef022448ad893d0c85a4f1bc737b086d3d568003906106f4904290610b75565b60408051808201909152600f81526e46617563657453657276696365563160881b602082015290565b6040518060400160405280600681526020016518971817191b60d11b81525081565b600060208284031215610878578081fd5b813561088381610bf2565b9392505050565b6000806040838503121561089c578081fd5b82356108a781610bf2565b9150602083013580151581146108bb578182fd5b809150509250929050565b600080602083850312156108d8578182fd5b823567ffffffffffffffff808211156108ef578384fd5b818501915085601f830112610902578384fd5b813581811115610910578485fd5b8660208083028501011115610923578485fd5b60209290920196919550909350505050565b600060208284031215610946578081fd5b5035919050565b6001600160a01b0391909116815260200190565b901515815260200190565b9115158252602082015260400190565b6000602080835283518082850152825b818110156109a85785810183015185820160400152820161098c565b818111156109b95783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f466175636574536572766963653a20696e73756666696369656e742062616c616040820152626e636560e81b606082015260800190565b60208082526027908201527f466175636574536572766963653a20696e76616c6964206e6577206d61737465604082015266391037bbb732b960c91b606082015260800190565b6020808252602b908201527f466175636574536572766963653a206e6f7420616c6c6f77656420746f20636160408201526a363610333ab731ba34b7b760a91b606082015260800190565b6020808252601f908201527f466175636574536572766963653a206e6f74206d6173746572206f776e657200604082015260600190565b60208082526025908201527f466175636574536572766963653a20696e76616c69642063616c6c6572206164604082015264647265737360d81b606082015260800190565b60208082526035908201527f466175636574536572766963653a207265776172642070657220617070726f7660408201527465206d757374206265206e6f74206265207a65726f60581b606082015260800190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b6000816000190483118215151615610bbc57610bbc610bdc565b500290565b6000600019821415610bd557610bd5610bdc565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610c0757600080fd5b5056fea26469706673582212208b3bcf85ae0a910c64a96c8155efec596c607890ad0639f74b38524e13cd017164736f6c63430008000033",
  "deployedBytecode": "0x6080604052600436106100e15760003560e01c806386d1a69f1161007f578063e7201d7d11610059578063e7201d7d1461026b578063f2fde38b1461028d578063f59e4f65146102ad578063ffa1ad74146102c25761012b565b806386d1a69f146102165780639b85fe761461022b578063de09bacf1461024b5761012b565b806358c1c499116100bb57806358c1c4991461019f578063775e6920146101b45780637b334154146101c957806386aa98b0146101f65761012b565b806315c2ba14146101305780634b14c0421461015257806354fd4d501461017d5761012b565b3661012b57336001600160a01b03167f74cf3d18d0ddca79038197ad0dd2c7fa5005ef61a5d1ed190e8a8a437e2fcf103442604051610121929190610b7e565b60405180910390a2005b600080fd5b34801561013c57600080fd5b5061015061014b366004610935565b6102d7565b005b34801561015e57600080fd5b50610167610374565b6040516101749190610b75565b60405180910390f35b34801561018957600080fd5b5061019261037a565b604051610174919061097c565b3480156101ab57600080fd5b5061019261039a565b3480156101c057600080fd5b506101676103c5565b3480156101d557600080fd5b506101e96101e4366004610867565b6103cb565b6040516101749190610961565b34801561020257600080fd5b506101506102113660046108c6565b6103e0565b34801561022257600080fd5b506101506105ac565b34801561023757600080fd5b5061015061024636600461088a565b61064c565b34801561025757600080fd5b50610150610266366004610935565b610700565b34801561027757600080fd5b50610280610768565b604051610174919061094d565b34801561029957600080fd5b506101506102a8366004610867565b610777565b3480156102b957600080fd5b5061019261081c565b3480156102ce57600080fd5b50610192610845565b6000546001600160a01b0316331461030a5760405162461bcd60e51b815260040161030190610aa4565b60405180910390fd5b6000811161032a5760405162461bcd60e51b815260040161030190610b20565b600280549082905560405133907f73e9d6d9b9f59093c10026af838c807858a65951bb561826b3d579c7d7f397779061036890849086904290610b8c565b60405180910390a25050565b60025481565b60408051808201909152600681526518971817191b60d11b602082015290565b6040518060400160405280600f81526020016e46617563657453657276696365563160881b81525081565b60035481565b60016020526000908152604090205460ff1681565b6000546001600160a01b031633148061040857503360009081526001602052604090205460ff165b6104245760405162461bcd60e51b815260040161030190610a59565b600254610432908290610ba2565b4710156104515760405162461bcd60e51b8152600401610301906109cf565b60005b818110156105a75760035483838381811061047f57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906104949190610867565b6001600160a01b03163111610595578282828181106104c357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906104d89190610867565b6001600160a01b03166108fc6002549081150290604051600060405180830381858888f19350505050158015610512573d6000803e3d6000fd5b5082828281811061053357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906105489190610867565b6001600160a01b0316336001600160a01b03167fdcd765526e7e876773520212c462da95330cd0b04f266d7902578351482bee9e60025460405161058c9190610b75565b60405180910390a35b8061059f81610bc1565b915050610454565b505050565b6000546001600160a01b031633146105d65760405162461bcd60e51b815260040161030190610aa4565b6040514790339082156108fc029083906000818181858888f19350505050158015610605573d6000803e3d6000fd5b50336001600160a01b03167f82e416ba72d10e709b5de7ac16f5f49ff1d94f22d55bf582d353d3c313a1e8dd8242604051610641929190610b7e565b60405180910390a250565b6000546001600160a01b031633146106765760405162461bcd60e51b815260040161030190610aa4565b6001600160a01b03821661069c5760405162461bcd60e51b815260040161030190610adb565b6001600160a01b03821660008181526001602052604090819020805460ff19168415151790555133907f4a4c549681e4e5177d89ab065a43c9a5947535128674bcfb83ca9983ebb81acf906106f4908590429061096c565b60405180910390a35050565b6000546001600160a01b0316331461072a5760405162461bcd60e51b815260040161030190610aa4565b600380549082905560405133907f8d3daf86bdaac0eea606ba9ad986a8c6716abb09f2006f6587986d74a581a1d49061036890849086904290610b8c565b6000546001600160a01b031681565b6000546001600160a01b031633146107a15760405162461bcd60e51b815260040161030190610aa4565b6001600160a01b0381166107c75760405162461bcd60e51b815260040161030190610a12565b600080546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fb629abac56920604331e5facef022448ad893d0c85a4f1bc737b086d3d568003906106f4904290610b75565b60408051808201909152600f81526e46617563657453657276696365563160881b602082015290565b6040518060400160405280600681526020016518971817191b60d11b81525081565b600060208284031215610878578081fd5b813561088381610bf2565b9392505050565b6000806040838503121561089c578081fd5b82356108a781610bf2565b9150602083013580151581146108bb578182fd5b809150509250929050565b600080602083850312156108d8578182fd5b823567ffffffffffffffff808211156108ef578384fd5b818501915085601f830112610902578384fd5b813581811115610910578485fd5b8660208083028501011115610923578485fd5b60209290920196919550909350505050565b600060208284031215610946578081fd5b5035919050565b6001600160a01b0391909116815260200190565b901515815260200190565b9115158252602082015260400190565b6000602080835283518082850152825b818110156109a85785810183015185820160400152820161098c565b818111156109b95783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f466175636574536572766963653a20696e73756666696369656e742062616c616040820152626e636560e81b606082015260800190565b60208082526027908201527f466175636574536572766963653a20696e76616c6964206e6577206d61737465604082015266391037bbb732b960c91b606082015260800190565b6020808252602b908201527f466175636574536572766963653a206e6f7420616c6c6f77656420746f20636160408201526a363610333ab731ba34b7b760a91b606082015260800190565b6020808252601f908201527f466175636574536572766963653a206e6f74206d6173746572206f776e657200604082015260600190565b60208082526025908201527f466175636574536572766963653a20696e76616c69642063616c6c6572206164604082015264647265737360d81b606082015260800190565b60208082526035908201527f466175636574536572766963653a207265776172642070657220617070726f7660408201527465206d757374206265206e6f74206265207a65726f60581b606082015260800190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b6000816000190483118215151615610bbc57610bbc610bdc565b500290565b6000600019821415610bd557610bd5610bdc565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610c0757600080fd5b5056fea26469706673582212208b3bcf85ae0a910c64a96c8155efec596c607890ad0639f74b38524e13cd017164736f6c63430008000033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
