{
  "_format": "hh-sol-artifact-1",
  "contractName": "EmissionController",
  "sourceName": "contracts/EmissionController.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_registry",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_ratePerEpoch",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "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": false,
          "internalType": "uint256",
          "name": "old",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "rate",
          "type": "uint256"
        }
      ],
      "name": "RateUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "allocateEmission",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "callable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentEpoch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLastEpoch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNextEpoch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getStartTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nextEpochPoint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ratePerEpoch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registry",
      "outputs": [
        {
          "internalType": "contract IRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_period",
          "type": "uint256"
        }
      ],
      "name": "setPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "tokenStakingPool",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "epochRate",
          "type": "uint256"
        }
      ],
      "name": "updateRate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405162000c1d38038062000c1d83398101604081905261003191610116565b62093a80426000610041336100a7565b6001839055600282905561007861006382856100f7602090811b6107b317901c565b60025461010a60201b6107c61790919060201c565b6003555050600480546001600160a01b0319166001600160a01b0394909416939093179092556005555061019b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006101038284610166565b9392505050565b6000610103828461014e565b60008060408385031215610128578182fd5b82516001600160a01b038116811461013e578283fd5b6020939093015192949293505050565b6000821982111561016157610161610185565b500190565b600081600019048311821515161561018057610180610185565b500290565b634e487b7160e01b600052601160045260246000fd5b610a7280620001ab6000396000f3fe608060405234801561001057600080fd5b50600436106100e05760003560e01c80638da5cb5b116100875780638da5cb5b1461017f578063b97dd9e214610190578063c1ba630e14610198578063c5967c26146101c1578063c828371e146101c9578063d8e2219c146101d1578063efe97d05146101da578063f2fde38b146101e257600080fd5b80630f3a9f65146100e5578063161ad706146100fa5780631ed2419514610102578063398bac631461011957806369ea1771146101215780636a2ab60214610134578063715018a61461014c5780637b10399914610154575b600080fd5b6100f86100f3366004610973565b6101f5565b005b6100f8610202565b6001545b6040519081526020015b60405180910390f35b610106610672565b6100f861012f366004610973565b610681565b61013c6106ca565b6040519015158152602001610110565b6100f86106d4565b600454610167906001600160a01b031681565b6040516001600160a01b039091168152602001610110565b6000546001600160a01b0316610167565b6101066106e8565b6101676101a636600461091b565b6006602052600090815260409020546001600160a01b031681565b61010661070e565b600254610106565b61010660055481565b610106610730565b6100f86101f036600461091b565b61073a565b6101fd6107d2565b600155565b60025442116102515760405162461bcd60e51b8152602060048201526016602482015275115c1bd8da0e881b9bdd081cdd185c9d1959081e595d60521b60448201526064015b60405180910390fd5b61025961082c565b61029a5760405162461bcd60e51b8152602060048201526012602482015271115c1bd8da0e881b9bdd08185b1b1bddd95960721b6044820152606401610248565b6000600460009054906101000a90046001600160a01b03166001600160a01b0316633de00c366040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ea57600080fd5b505afa1580156102fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103229190610937565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b15801561036357600080fd5b505afa158015610377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039b919061098b565b90506000600554600014156103b15750806103c0565b6103bd82600554610845565b90505b600081116104025760405162461bcd60e51b815260206004820152600f60248201526e1b9bc81b585a18481d1bc81cd95b99608a1b6044820152606401610248565b6004805460408051631ef0061b60e11b815290516001600160a01b0390921692633de00c36928282019260209290829003018186803b15801561044457600080fd5b505afa158015610458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047c9190610937565b6001600160a01b031663a9059cbb600460009054906101000a90046001600160a01b03166001600160a01b03166381ca29a16040518163ffffffff1660e01b815260040160206040518083038186803b1580156104d857600080fd5b505afa1580156104ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105109190610937565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b15801561055857600080fd5b505af115801561056c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105909190610953565b5060048054604080516381ca29a160e01b815290516001600160a01b03909216926381ca29a1928282019260209290829003018186803b1580156105d357600080fd5b505afa1580156105e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060b9190610937565b6001600160a01b0316633c6b16ab826040518263ffffffff1660e01b815260040161063891815260200190565b600060405180830381600087803b15801561065257600080fd5b505af1158015610666573d6000803e3d6000fd5b50504260035550505050565b600061067c61085b565b905090565b6106896107d2565b60055460408051918252602082018390527fb38780ddde1f073d91c150de2696f3f7085883648ba21cc5ef01029cb21d1916910160405180910390a1600555565b600061067c61082c565b6106dc6107d2565b6106e6600061087a565b565b600061067c600154610708600254610702600254426108ca565b906108da565b906108e6565b600061067c6107276001546107216108f2565b906107b3565b600254906107c6565b600061067c6108f2565b6107426107d2565b6001600160a01b0381166107a75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610248565b6107b08161087a565b50565b60006107bf82846109db565b9392505050565b60006107bf82846109a3565b6000546001600160a01b031633146106e65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610248565b60006108366108f2565b61083e6106e8565b1015905090565b600081831061085457816107bf565b5090919050565b600061067c6001546107086002546003546108da90919063ffffffff16565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183101561085457816107bf565b60006107bf82846109fa565b60006107bf82846109bb565b600060035460025414156109085761067c61085b565b61067c600161091561085b565b906107c6565b60006020828403121561092c578081fd5b81356107bf81610a27565b600060208284031215610948578081fd5b81516107bf81610a27565b600060208284031215610964578081fd5b815180151581146107bf578182fd5b600060208284031215610984578081fd5b5035919050565b60006020828403121561099c578081fd5b5051919050565b600082198211156109b6576109b6610a11565b500190565b6000826109d657634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156109f5576109f5610a11565b500290565b600082821015610a0c57610a0c610a11565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146107b057600080fdfea26469706673582212209dd17daa98447a81a6b9cbfb7491f95dd9debd44b5bcfc2b3ebb39abaca7c11e64736f6c63430008040033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100e05760003560e01c80638da5cb5b116100875780638da5cb5b1461017f578063b97dd9e214610190578063c1ba630e14610198578063c5967c26146101c1578063c828371e146101c9578063d8e2219c146101d1578063efe97d05146101da578063f2fde38b146101e257600080fd5b80630f3a9f65146100e5578063161ad706146100fa5780631ed2419514610102578063398bac631461011957806369ea1771146101215780636a2ab60214610134578063715018a61461014c5780637b10399914610154575b600080fd5b6100f86100f3366004610973565b6101f5565b005b6100f8610202565b6001545b6040519081526020015b60405180910390f35b610106610672565b6100f861012f366004610973565b610681565b61013c6106ca565b6040519015158152602001610110565b6100f86106d4565b600454610167906001600160a01b031681565b6040516001600160a01b039091168152602001610110565b6000546001600160a01b0316610167565b6101066106e8565b6101676101a636600461091b565b6006602052600090815260409020546001600160a01b031681565b61010661070e565b600254610106565b61010660055481565b610106610730565b6100f86101f036600461091b565b61073a565b6101fd6107d2565b600155565b60025442116102515760405162461bcd60e51b8152602060048201526016602482015275115c1bd8da0e881b9bdd081cdd185c9d1959081e595d60521b60448201526064015b60405180910390fd5b61025961082c565b61029a5760405162461bcd60e51b8152602060048201526012602482015271115c1bd8da0e881b9bdd08185b1b1bddd95960721b6044820152606401610248565b6000600460009054906101000a90046001600160a01b03166001600160a01b0316633de00c366040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ea57600080fd5b505afa1580156102fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103229190610937565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b15801561036357600080fd5b505afa158015610377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039b919061098b565b90506000600554600014156103b15750806103c0565b6103bd82600554610845565b90505b600081116104025760405162461bcd60e51b815260206004820152600f60248201526e1b9bc81b585a18481d1bc81cd95b99608a1b6044820152606401610248565b6004805460408051631ef0061b60e11b815290516001600160a01b0390921692633de00c36928282019260209290829003018186803b15801561044457600080fd5b505afa158015610458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047c9190610937565b6001600160a01b031663a9059cbb600460009054906101000a90046001600160a01b03166001600160a01b03166381ca29a16040518163ffffffff1660e01b815260040160206040518083038186803b1580156104d857600080fd5b505afa1580156104ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105109190610937565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b15801561055857600080fd5b505af115801561056c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105909190610953565b5060048054604080516381ca29a160e01b815290516001600160a01b03909216926381ca29a1928282019260209290829003018186803b1580156105d357600080fd5b505afa1580156105e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060b9190610937565b6001600160a01b0316633c6b16ab826040518263ffffffff1660e01b815260040161063891815260200190565b600060405180830381600087803b15801561065257600080fd5b505af1158015610666573d6000803e3d6000fd5b50504260035550505050565b600061067c61085b565b905090565b6106896107d2565b60055460408051918252602082018390527fb38780ddde1f073d91c150de2696f3f7085883648ba21cc5ef01029cb21d1916910160405180910390a1600555565b600061067c61082c565b6106dc6107d2565b6106e6600061087a565b565b600061067c600154610708600254610702600254426108ca565b906108da565b906108e6565b600061067c6107276001546107216108f2565b906107b3565b600254906107c6565b600061067c6108f2565b6107426107d2565b6001600160a01b0381166107a75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610248565b6107b08161087a565b50565b60006107bf82846109db565b9392505050565b60006107bf82846109a3565b6000546001600160a01b031633146106e65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610248565b60006108366108f2565b61083e6106e8565b1015905090565b600081831061085457816107bf565b5090919050565b600061067c6001546107086002546003546108da90919063ffffffff16565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183101561085457816107bf565b60006107bf82846109fa565b60006107bf82846109bb565b600060035460025414156109085761067c61085b565b61067c600161091561085b565b906107c6565b60006020828403121561092c578081fd5b81356107bf81610a27565b600060208284031215610948578081fd5b81516107bf81610a27565b600060208284031215610964578081fd5b815180151581146107bf578182fd5b600060208284031215610984578081fd5b5035919050565b60006020828403121561099c578081fd5b5051919050565b600082198211156109b6576109b6610a11565b500190565b6000826109d657634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156109f5576109f5610a11565b500290565b600082821015610a0c57610a0c610a11565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146107b057600080fdfea26469706673582212209dd17daa98447a81a6b9cbfb7491f95dd9debd44b5bcfc2b3ebb39abaca7c11e64736f6c63430008040033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
