{
  "_format": "hh-sol-artifact-1",
  "contractName": "Governed",
  "sourceName": "contracts/governance/implementation/Governed.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allowedAfterTimestamp",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "encodedCall",
          "type": "bytes"
        }
      ],
      "name": "GovernanceCallTimelocked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "initialGovernance",
          "type": "address"
        }
      ],
      "name": "GovernanceInitialised",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "governanceSettings",
          "type": "address"
        }
      ],
      "name": "GovernedProductionModeEntered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "TimelockedGovernanceCallCanceled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "TimelockedGovernanceCallExecuted",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_selector",
          "type": "bytes4"
        }
      ],
      "name": "cancelGovernanceCall",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_selector",
          "type": "bytes4"
        }
      ],
      "name": "executeGovernanceCall",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governanceSettings",
      "outputs": [
        {
          "internalType": "contract IGovernanceSettings",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_initialGovernance",
          "type": "address"
        }
      ],
      "name": "initialise",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "productionMode",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "switchToProductionMode",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "name": "timelockedCalls",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "allowedAfterTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "encodedCall",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50604051610b87380380610b878339818101604052602081101561003357600080fd5b5051806001600160a01b0381161561004e5761004e816100a3565b506001600160a01b03811661009d576040805162461bcd60e51b815260206004820152601060248201526f5f676f7665726e616e6365207a65726f60801b604482015290519081900360640190fd5b50610165565b600054600160a01b900460ff1615610102576040805162461bcd60e51b815260206004820152601460248201527f696e697469616c6973656420213d2066616c7365000000000000000000000000604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b610a13806101746000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806374e6310e1161005b57806374e6310e146101095780639d6a890f146101af578063e17f212e146101d5578063f5a98383146101f157610088565b80635aa6e6751461008d5780635ff27079146100b157806362354e03146100da57806367fc4029146100e2575b600080fd5b6100956101f9565b604080516001600160a01b039092168252519081900360200190f35b6100d8600480360360208110156100c757600080fd5b50356001600160e01b03191661028e565b005b6100956105e3565b6100d8600480360360208110156100f857600080fd5b50356001600160e01b0319166105ee565b6101306004803603602081101561011f57600080fd5b50356001600160e01b0319166106d6565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6100d8600480360360208110156101c557600080fd5b50356001600160a01b031661077c565b6101dd610835565b604080519115158252519081900360200190f35b6100d8610845565b60008054600160a81b900460ff1661021c576000546001600160a01b0316610289565b60076001609c1b016001600160a01b031663732524946040518163ffffffff1660e01b815260040160206040518083038186803b15801561025c57600080fd5b505afa158015610270573d6000803e3d6000fd5b505050506040513d602081101561028657600080fd5b50515b905090565b60408051630debfda360e41b8152336004820152905160076001609c1b019163debfda30916024808301926020929190829003018186803b1580156102d257600080fd5b505afa1580156102e6573d6000803e3d6000fd5b505050506040513d60208110156102fc57600080fd5b505161033f576040805162461bcd60e51b815260206004820152600d60248201526c37b7363c9032bc32b1baba37b960991b604482015290519081900360640190fd5b6001600160e01b03198116600090815260016020526040902080546103ab576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b8054421015610401576040805162461bcd60e51b815260206004820152601960248201527f74696d656c6f636b3a206e6f7420616c6c6f7765642079657400000000000000604482015290519081900360640190fd5b6000816001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561049b5780601f106104705761010080835404028352916020019161049b565b820191906000526020600020905b81548152906001019060200180831161047e57829003601f168201915b5050506001600160e01b03198616600090815260016020819052604082208281559495509092506104cf915083018261097d565b50506000805460ff60b01b1916600160b01b178155604051825130918491819060208401908083835b602083106105175780518252601f1990920191602091820191016104f8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610579576040519150601f19603f3d011682016040523d82523d6000602084013e61057e565b606091505b50506000805460ff60b01b19169055604080516001600160e01b03198716815242602082015281519293507fa7326b57fc9cfe267aaea5e7f0b01757154d265620a0585819416ee9ddd2c438929081900390910190a16105dd816108ff565b50505050565b60076001609c1b0181565b6105f661091c565b6001600160e01b03198116600090815260016020526040902054610661576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b604080516001600160e01b03198316815242602082015281517f7735b2391c38a81419c513e30ca578db7158eadd7101511b23e221c654d19cf8929181900390910190a16001600160e01b031981166000908152600160208190526040822082815591906106d19083018261097d565b505050565b600160208181526000928352604092839020805481840180548651600296821615610100026000190190911695909504601f810185900485028601850190965285855290949193929091908301828280156107725780601f1061074757610100808354040283529160200191610772565b820191906000526020600020905b81548152906001019060200180831161075557829003601f168201915b5050505050905082565b600054600160a01b900460ff16156107d2576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b600054600160a81b900460ff1681565b61084d61091c565b600054600160a81b900460ff16156108ac576040805162461bcd60e51b815260206004820152601a60248201527f616c726561647920696e2070726f64756374696f6e206d6f6465000000000000604482015290519081900360640190fd5b60008054600161ff0160a01b031916600160a81b1790556040805160076001609c1b01815290517f83af113638b5422f9e977cebc0aaf0eaf2188eb9a8baae7f9d46c42b33a1560c9181900360200190a1565b3d604051818101604052816000823e8215610918578181f35b8181fd5b6109246101f9565b6001600160a01b0316336001600160a01b03161461097b576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b565b50805460018160011615610100020316600290046000825580601f106109a357506109c1565b601f0160209004906000526020600020908101906109c191906109c4565b50565b5b808211156109d957600081556001016109c5565b509056fea2646970667358221220a52017402f822d79b578626f9bbab3e69560c3e02227dacdcdaaec15471d139964736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c806374e6310e1161005b57806374e6310e146101095780639d6a890f146101af578063e17f212e146101d5578063f5a98383146101f157610088565b80635aa6e6751461008d5780635ff27079146100b157806362354e03146100da57806367fc4029146100e2575b600080fd5b6100956101f9565b604080516001600160a01b039092168252519081900360200190f35b6100d8600480360360208110156100c757600080fd5b50356001600160e01b03191661028e565b005b6100956105e3565b6100d8600480360360208110156100f857600080fd5b50356001600160e01b0319166105ee565b6101306004803603602081101561011f57600080fd5b50356001600160e01b0319166106d6565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6100d8600480360360208110156101c557600080fd5b50356001600160a01b031661077c565b6101dd610835565b604080519115158252519081900360200190f35b6100d8610845565b60008054600160a81b900460ff1661021c576000546001600160a01b0316610289565b60076001609c1b016001600160a01b031663732524946040518163ffffffff1660e01b815260040160206040518083038186803b15801561025c57600080fd5b505afa158015610270573d6000803e3d6000fd5b505050506040513d602081101561028657600080fd5b50515b905090565b60408051630debfda360e41b8152336004820152905160076001609c1b019163debfda30916024808301926020929190829003018186803b1580156102d257600080fd5b505afa1580156102e6573d6000803e3d6000fd5b505050506040513d60208110156102fc57600080fd5b505161033f576040805162461bcd60e51b815260206004820152600d60248201526c37b7363c9032bc32b1baba37b960991b604482015290519081900360640190fd5b6001600160e01b03198116600090815260016020526040902080546103ab576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b8054421015610401576040805162461bcd60e51b815260206004820152601960248201527f74696d656c6f636b3a206e6f7420616c6c6f7765642079657400000000000000604482015290519081900360640190fd5b6000816001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561049b5780601f106104705761010080835404028352916020019161049b565b820191906000526020600020905b81548152906001019060200180831161047e57829003601f168201915b5050506001600160e01b03198616600090815260016020819052604082208281559495509092506104cf915083018261097d565b50506000805460ff60b01b1916600160b01b178155604051825130918491819060208401908083835b602083106105175780518252601f1990920191602091820191016104f8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610579576040519150601f19603f3d011682016040523d82523d6000602084013e61057e565b606091505b50506000805460ff60b01b19169055604080516001600160e01b03198716815242602082015281519293507fa7326b57fc9cfe267aaea5e7f0b01757154d265620a0585819416ee9ddd2c438929081900390910190a16105dd816108ff565b50505050565b60076001609c1b0181565b6105f661091c565b6001600160e01b03198116600090815260016020526040902054610661576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b604080516001600160e01b03198316815242602082015281517f7735b2391c38a81419c513e30ca578db7158eadd7101511b23e221c654d19cf8929181900390910190a16001600160e01b031981166000908152600160208190526040822082815591906106d19083018261097d565b505050565b600160208181526000928352604092839020805481840180548651600296821615610100026000190190911695909504601f810185900485028601850190965285855290949193929091908301828280156107725780601f1061074757610100808354040283529160200191610772565b820191906000526020600020905b81548152906001019060200180831161075557829003601f168201915b5050505050905082565b600054600160a01b900460ff16156107d2576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b600054600160a81b900460ff1681565b61084d61091c565b600054600160a81b900460ff16156108ac576040805162461bcd60e51b815260206004820152601a60248201527f616c726561647920696e2070726f64756374696f6e206d6f6465000000000000604482015290519081900360640190fd5b60008054600161ff0160a01b031916600160a81b1790556040805160076001609c1b01815290517f83af113638b5422f9e977cebc0aaf0eaf2188eb9a8baae7f9d46c42b33a1560c9181900360200190a1565b3d604051818101604052816000823e8215610918578181f35b8181fd5b6109246101f9565b6001600160a01b0316336001600160a01b03161461097b576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b565b50805460018160011615610100020316600290046000825580601f106109a357506109c1565b601f0160209004906000526020600020908101906109c191906109c4565b50565b5b808211156109d957600081556001016109c5565b509056fea2646970667358221220a52017402f822d79b578626f9bbab3e69560c3e02227dacdcdaaec15471d139964736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
