{
    "contractName": "IReputationMiningCycle",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "_newHash",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "_nLeaves",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "_jrh",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "_firstDisagreeIdx",
                    "type": "uint256"
                }
            ],
            "name": "BinarySearchConfirmed",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "_newHash",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "_nLeaves",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "_jrh",
                    "type": "bytes32"
                }
            ],
            "name": "BinarySearchStep",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "_newHash",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "_nLeaves",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "_jrh",
                    "type": "bytes32"
                }
            ],
            "name": "ChallengeCompleted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "_newHash",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "_nLeaves",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "_jrh",
                    "type": "bytes32"
                }
            ],
            "name": "HashInvalidated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "_newHash",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "_nLeaves",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "_jrh",
                    "type": "bytes32"
                }
            ],
            "name": "JustificationRootHashConfirmed",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "previousNewReputationUID",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "_disagreeStateReputationUID",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bool",
                    "name": "_existingUID",
                    "type": "bool"
                }
            ],
            "name": "ProveUIDSuccess",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "int256",
                    "name": "_agreeStateReputationValue",
                    "type": "int256"
                },
                {
                    "indexed": false,
                    "internalType": "int256",
                    "name": "_disagreeStateReputationValue",
                    "type": "int256"
                },
                {
                    "indexed": false,
                    "internalType": "int256",
                    "name": "_originReputationValue",
                    "type": "int256"
                }
            ],
            "name": "ProveValueSuccess",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "_miner",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "_newHash",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "_nLeaves",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "_jrh",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "_entryIndex",
                    "type": "uint256"
                }
            ],
            "name": "ReputationRootHashSubmitted",
            "type": "event"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "int256",
                    "name": "_amount",
                    "type": "int256"
                },
                {
                    "internalType": "uint256",
                    "name": "_skillId",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_colonyAddress",
                    "type": "address"
                },
                {
                    "internalType": "uint128",
                    "name": "_nParents",
                    "type": "uint128"
                },
                {
                    "internalType": "uint128",
                    "name": "_nChildren",
                    "type": "uint128"
                }
            ],
            "name": "appendReputationUpdateLog",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_round",
                    "type": "uint256"
                }
            ],
            "name": "challengeRoundComplete",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "complete",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_round",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_idx",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "_jhIntermediateValue",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes32[]",
                    "name": "_siblings",
                    "type": "bytes32[]"
                }
            ],
            "name": "confirmBinarySearchResult",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_round",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_index",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes32[]",
                    "name": "_siblings1",
                    "type": "bytes32[]"
                },
                {
                    "internalType": "bytes32[]",
                    "name": "_siblings2",
                    "type": "bytes32[]"
                }
            ],
            "name": "confirmJustificationRootHash",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_roundNumber",
                    "type": "uint256"
                }
            ],
            "name": "confirmNewHash",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getDecayConstant",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "numerator",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "denominator",
                    "type": "uint256"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getDisputeRewardSize",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "reward",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_round",
                    "type": "uint256"
                }
            ],
            "name": "getDisputeRound",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "firstSubmitter",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastResponseTimestamp",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "challengeStepCompleted",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "intermediateReputationHash",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "uint256",
                            "name": "intermediateReputationNLeaves",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lowerBound",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "upperBound",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "targetHashDuringSearch",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "hash1",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "hash2",
                            "type": "bytes32"
                        }
                    ],
                    "internalType": "struct ReputationMiningCycleDataTypes.DisputedEntry[]",
                    "name": "submissions",
                    "type": "tuple[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_submitter",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_entryIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes32",
                    "name": "_newHash",
                    "type": "bytes32"
                }
            ],
            "name": "getEntryHash",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "entryHash",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getMinStake",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "minStake",
                    "type": "uint256"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getMiningWindowDuration",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "miningWindowDuration",
                    "type": "uint256"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getNInvalidatedHashes",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "nInvalidatedHashes",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_hash",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint256",
                    "name": "_nLeaves",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes32",
                    "name": "_jrh",
                    "type": "bytes32"
                }
            ],
            "name": "getNSubmissionsForHash",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "count",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getNUniqueSubmittedHashes",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "nUniqueSubmittedHashes",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                }
            ],
            "name": "getReputationHashSubmission",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "bytes32",
                            "name": "proposedNewRootHash",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "uint256",
                            "name": "nLeaves",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "jrh",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "uint256",
                            "name": "jrhNLeaves",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct ReputationMiningCycleDataTypes.Submission",
                    "name": "submission",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getReputationMiningWindowOpenTimestamp",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "timestamp",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "getReputationUpdateLogEntry",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "user",
                            "type": "address"
                        },
                        {
                            "internalType": "int256",
                            "name": "amount",
                            "type": "int256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "skillId",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "colony",
                            "type": "address"
                        },
                        {
                            "internalType": "uint128",
                            "name": "nUpdates",
                            "type": "uint128"
                        },
                        {
                            "internalType": "uint128",
                            "name": "nPreviousUpdates",
                            "type": "uint128"
                        }
                    ],
                    "internalType": "struct ReputationMiningCycleDataTypes.ReputationLogEntry",
                    "name": "reputationUpdateLogEntry",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getReputationUpdateLogLength",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "nUpdates",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "enum ReputationMiningCycleDataTypes.DisputeStages",
                    "name": "_stage",
                    "type": "uint8"
                },
                {
                    "internalType": "uint256",
                    "name": "_since",
                    "type": "uint256"
                }
            ],
            "name": "getResponsePossible",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "possible",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_hash",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint256",
                    "name": "_nLeaves",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes32",
                    "name": "_jrh",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint256",
                    "name": "_index",
                    "type": "uint256"
                }
            ],
            "name": "getSubmissionUser",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_tokenLocking",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_clnyToken",
                    "type": "address"
                }
            ],
            "name": "initialise",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_round",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_idx",
                    "type": "uint256"
                }
            ],
            "name": "invalidateHash",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_miner",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_index",
                    "type": "uint256"
                }
            ],
            "name": "minerSubmittedEntryIndex",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "result",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "resetWindow",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_round",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_idx",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "_jhIntermediateValue",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes32[]",
                    "name": "_siblings",
                    "type": "bytes32[]"
                }
            ],
            "name": "respondToBinarySearchForChallenge",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256[26]",
                    "name": "_u",
                    "type": "uint256[26]"
                },
                {
                    "internalType": "bytes32[7]",
                    "name": "_b32",
                    "type": "bytes32[7]"
                },
                {
                    "internalType": "bytes32[]",
                    "name": "_reputationSiblings",
                    "type": "bytes32[]"
                },
                {
                    "internalType": "bytes32[]",
                    "name": "_agreeStateSiblings",
                    "type": "bytes32[]"
                },
                {
                    "internalType": "bytes32[]",
                    "name": "_disagreeStateSiblings",
                    "type": "bytes32[]"
                },
                {
                    "internalType": "bytes32[]",
                    "name": "_userOriginReputationSiblings",
                    "type": "bytes32[]"
                },
                {
                    "internalType": "bytes32[]",
                    "name": "_childReputationSiblings",
                    "type": "bytes32[]"
                },
                {
                    "internalType": "bytes32[]",
                    "name": "_adjacentReputationSiblings",
                    "type": "bytes32[]"
                }
            ],
            "name": "respondToChallenge",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "_stakers",
                    "type": "address[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_weights",
                    "type": "uint256[]"
                },
                {
                    "internalType": "address",
                    "name": "_metaColonyAddress",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_reward",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_miningSkillId",
                    "type": "uint256"
                }
            ],
            "name": "rewardStakersWithReputation",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_newHash",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint256",
                    "name": "_nLeaves",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes32",
                    "name": "_jrh",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint256",
                    "name": "_entryIndex",
                    "type": "uint256"
                }
            ],
            "name": "submitRootHash",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                }
            ],
            "name": "userInvolvedInMiningCycle",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "involved",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ]
}