{
  "_format": "hh-sol-artifact-1",
  "contractName": "StakingStorage",
  "sourceName": "contracts/governance/Staking/StakingStorage.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "DELEGATION_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "DOMAIN_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MAX_DURATION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MAX_VOTING_WEIGHT",
      "outputs": [
        {
          "internalType": "uint96",
          "name": "",
          "type": "uint96"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "SOVToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "WEIGHT_FACTOR",
      "outputs": [
        {
          "internalType": "uint96",
          "name": "",
          "type": "uint96"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "admins",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "allUnlocked",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "name": "delegateStakingCheckpoints",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "fromBlock",
          "type": "uint32"
        },
        {
          "internalType": "uint96",
          "name": "stake",
          "type": "uint96"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "delegates",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "feeSharing",
      "outputs": [
        {
          "internalType": "contract IFeeSharingProxy",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kickoffTS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "newStakingContract",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "numDelegateStakingCheckpoints",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "numTotalStakingCheckpoints",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "numUserStakingCheckpoints",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "name": "totalStakingCheckpoints",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "fromBlock",
          "type": "uint32"
        },
        {
          "internalType": "uint96",
          "name": "stake",
          "type": "uint96"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "name": "userStakingCheckpoints",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "fromBlock",
          "type": "uint32"
        },
        {
          "internalType": "uint96",
          "name": "stake",
          "type": "uint96"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "vestingCodeHashes",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "vestingRegistryLogic",
      "outputs": [
        {
          "internalType": "contract VestingRegistryLogic",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "vestingWhitelist",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "weightScaling",
      "outputs": [
        {
          "internalType": "uint96",
          "name": "",
          "type": "uint96"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60c0604052600a608081905269534f565374616b696e6760b01b60a090815261002b91600291906100a9565b506005805460ff19169055600d80546001600160a01b0316600360a01b17905560006100556100a4565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610141565b335b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100ea57805160ff1916838001178555610117565b82800160010185558215610117579182015b828111156101175782518255916020019190600101906100fc565b50610123929150610127565b5090565b6100a691905b80821115610123576000815560010161012d565b610a6a806101506000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80639436e7d4116100de578063b1724b4611610097578063db27ec1811610071578063db27ec181461030a578063dfb267c21461031d578063e7a324dc14610330578063f2fde38b146103385761018d565b8063b1724b46146102f2578063bf626ec1146102fa578063d27569e7146103025761018d565b80639436e7d41461029457806394c2ce58146102b45780639929e886146102c7578063a58848c5146102cf578063adae9002146102d7578063ae81dfe4146102ea5761018d565b806327dd1b001161014b5780636b6fde0e116101255780636b6fde0e1461025e5780637ecebe00146102715780638da5cb5b146102845780638f32d59b1461028c5761018d565b806327dd1b001461020a578063429b62e51461022a57806368cefccc1461023d5761018d565b8062073f991461019257806303a18fa3146101b057806307392cc0146101c5578063104932cf146101e557806317748adc146101ed57806320606b7014610202575b600080fd5b61019a61034d565b6040516101a7919061093a565b60405180910390f35b6101b8610353565b6040516101a79190610948565b6101d86101d3366004610730565b610362565b6040516101a7919061092c565b6101b8610377565b6101f5610386565b6040516101a791906109a6565b61019a61038b565b61021d6102183660046106a9565b6103a2565b6040516101a7919061091e565b6101d8610238366004610683565b6103c8565b61025061024b3660046106e3565b6103dd565b6040516101a7929190610984565b61025061026c3660046106e3565b610419565b61019a61027f366004610683565b610455565b61021d610467565b6101d8610476565b6102a76102a2366004610730565b61049a565b6040516101a79190610976565b6102a76102c23660046106a9565b6104b2565b6101d86104d5565b6101b86104de565b6101d86102e5366004610683565b6104ed565b61021d610502565b61019a610516565b6101f561051e565b6101f5610534565b6102a76103183660046106a9565b610539565b61025061032b36600461074e565b61055c565b61019a610592565b61034b610346366004610683565b61059e565b005b60015481565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b6011546001600160a01b031681565b600981565b60405161039790610908565b604051809103902081565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b600f6020526000908152604090205460ff1681565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600c6020526000908152604090205481565b6000546001600160a01b031690565b600080546001600160a01b031661048b6105d7565b6001600160a01b031614905090565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b60055460ff1681565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b600d54600160a01b90046001600160601b031681565b600a81565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160601b031682565b60405161039790610913565b6105a6610476565b6105cb5760405162461bcd60e51b81526004016105c290610966565b60405180910390fd5b6105d4816105db565b50565b3390565b6001600160a01b0381166106015760405162461bcd60e51b81526004016105c290610956565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b803561066781610a01565b92915050565b803561066781610a15565b803561066781610a1e565b60006020828403121561069557600080fd5b60006106a1848461065c565b949350505050565b600080604083850312156106bc57600080fd5b60006106c8858561065c565b92505060206106d98582860161066d565b9150509250929050565b6000806000606084860312156106f857600080fd5b6000610704868661065c565b93505060206107158682870161066d565b925050604061072686828701610678565b9150509250925092565b60006020828403121561074257600080fd5b60006106a1848461066d565b6000806040838503121561076157600080fd5b600061076d858561066d565b92505060206106d985828601610678565b610787816109c2565b82525050565b610787816109cd565b610787816109d2565b610787816109f6565b60006107b56026836109b4565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006107fd6043836109bd565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000610868600c836109b4565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000610890604b836109bd565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e7460208201526a323536206578706972792960a81b6040820152604b0192915050565b610787816109e1565b610787816109ea565b6000610667826107f0565b600061066782610883565b60208101610667828461077e565b60208101610667828461078d565b602081016106678284610796565b60208101610667828461079f565b60208082528101610667816107a8565b602080825281016106678161085b565b6020810161066782846108f6565b6040810161099282856108f6565b61099f60208301846108ff565b9392505050565b6020810161066782846108ff565b90815260200190565b919050565b6000610667826109d5565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b6001600160601b031690565b6000610667826109c2565b610a0a816109c2565b81146105d457600080fd5b610a0a816109d2565b610a0a816109e156fea365627a7a723158203855d80d95fcbef73227e1f2453f89135b51a36425d301244d05922ac9f4d1f36c6578706572696d656e74616cf564736f6c63430005110040",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018d5760003560e01c80639436e7d4116100de578063b1724b4611610097578063db27ec1811610071578063db27ec181461030a578063dfb267c21461031d578063e7a324dc14610330578063f2fde38b146103385761018d565b8063b1724b46146102f2578063bf626ec1146102fa578063d27569e7146103025761018d565b80639436e7d41461029457806394c2ce58146102b45780639929e886146102c7578063a58848c5146102cf578063adae9002146102d7578063ae81dfe4146102ea5761018d565b806327dd1b001161014b5780636b6fde0e116101255780636b6fde0e1461025e5780637ecebe00146102715780638da5cb5b146102845780638f32d59b1461028c5761018d565b806327dd1b001461020a578063429b62e51461022a57806368cefccc1461023d5761018d565b8062073f991461019257806303a18fa3146101b057806307392cc0146101c5578063104932cf146101e557806317748adc146101ed57806320606b7014610202575b600080fd5b61019a61034d565b6040516101a7919061093a565b60405180910390f35b6101b8610353565b6040516101a79190610948565b6101d86101d3366004610730565b610362565b6040516101a7919061092c565b6101b8610377565b6101f5610386565b6040516101a791906109a6565b61019a61038b565b61021d6102183660046106a9565b6103a2565b6040516101a7919061091e565b6101d8610238366004610683565b6103c8565b61025061024b3660046106e3565b6103dd565b6040516101a7929190610984565b61025061026c3660046106e3565b610419565b61019a61027f366004610683565b610455565b61021d610467565b6101d8610476565b6102a76102a2366004610730565b61049a565b6040516101a79190610976565b6102a76102c23660046106a9565b6104b2565b6101d86104d5565b6101b86104de565b6101d86102e5366004610683565b6104ed565b61021d610502565b61019a610516565b6101f561051e565b6101f5610534565b6102a76103183660046106a9565b610539565b61025061032b36600461074e565b61055c565b61019a610592565b61034b610346366004610683565b61059e565b005b60015481565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b6011546001600160a01b031681565b600981565b60405161039790610908565b604051809103902081565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b600f6020526000908152604090205460ff1681565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600c6020526000908152604090205481565b6000546001600160a01b031690565b600080546001600160a01b031661048b6105d7565b6001600160a01b031614905090565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b60055460ff1681565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b600d54600160a01b90046001600160601b031681565b600a81565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160601b031682565b60405161039790610913565b6105a6610476565b6105cb5760405162461bcd60e51b81526004016105c290610966565b60405180910390fd5b6105d4816105db565b50565b3390565b6001600160a01b0381166106015760405162461bcd60e51b81526004016105c290610956565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b803561066781610a01565b92915050565b803561066781610a15565b803561066781610a1e565b60006020828403121561069557600080fd5b60006106a1848461065c565b949350505050565b600080604083850312156106bc57600080fd5b60006106c8858561065c565b92505060206106d98582860161066d565b9150509250929050565b6000806000606084860312156106f857600080fd5b6000610704868661065c565b93505060206107158682870161066d565b925050604061072686828701610678565b9150509250925092565b60006020828403121561074257600080fd5b60006106a1848461066d565b6000806040838503121561076157600080fd5b600061076d858561066d565b92505060206106d985828601610678565b610787816109c2565b82525050565b610787816109cd565b610787816109d2565b610787816109f6565b60006107b56026836109b4565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006107fd6043836109bd565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000610868600c836109b4565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000610890604b836109bd565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e7460208201526a323536206578706972792960a81b6040820152604b0192915050565b610787816109e1565b610787816109ea565b6000610667826107f0565b600061066782610883565b60208101610667828461077e565b60208101610667828461078d565b602081016106678284610796565b60208101610667828461079f565b60208082528101610667816107a8565b602080825281016106678161085b565b6020810161066782846108f6565b6040810161099282856108f6565b61099f60208301846108ff565b9392505050565b6020810161066782846108ff565b90815260200190565b919050565b6000610667826109d5565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b6001600160601b031690565b6000610667826109c2565b610a0a816109c2565b81146105d457600080fd5b610a0a816109d2565b610a0a816109e156fea365627a7a723158203855d80d95fcbef73227e1f2453f89135b51a36425d301244d05922ac9f4d1f36c6578706572696d656e74616cf564736f6c63430005110040",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
