{
    "contractName": "IColonyNetwork",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "auction",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "quantity",
                    "type": "uint256"
                }
            ],
            "name": "AuctionCreated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "colonyId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "colonyAddress",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                }
            ],
            "name": "ColonyAdded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "colony",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "label",
                    "type": "bytes32"
                }
            ],
            "name": "ColonyLabelRegistered",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "resolver",
                    "type": "address"
                }
            ],
            "name": "ColonyNetworkInitialised",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "version",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "resolver",
                    "type": "address"
                }
            ],
            "name": "ColonyVersionAdded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "extensionId",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "version",
                    "type": "uint256"
                }
            ],
            "name": "ExtensionAddedToNetwork",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "extensionId",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "colony",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bool",
                    "name": "deprecated",
                    "type": "bool"
                }
            ],
            "name": "ExtensionDeprecated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "extensionId",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "colony",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "version",
                    "type": "uint256"
                }
            ],
            "name": "ExtensionInstalled",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "extensionId",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "colony",
                    "type": "address"
                }
            ],
            "name": "ExtensionUninstalled",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "extensionId",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "colony",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "version",
                    "type": "uint256"
                }
            ],
            "name": "ExtensionUpgraded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "metaColony",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "rootSkillId",
                    "type": "uint256"
                }
            ],
            "name": "MetaColonyCreated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "userAddress",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address payable",
                    "name": "relayerAddress",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "payload",
                    "type": "bytes"
                }
            ],
            "name": "MetaTransactionExecuted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "miningCycleResolver",
                    "type": "address"
                }
            ],
            "name": "MiningCycleResolverSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "feeInverse",
                    "type": "uint256"
                }
            ],
            "name": "NetworkFeeInverseSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                }
            ],
            "name": "RecoveryModeEntered",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                }
            ],
            "name": "RecoveryModeExitApproved",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                }
            ],
            "name": "RecoveryModeExited",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bool",
                    "name": "setTo",
                    "type": "bool"
                }
            ],
            "name": "RecoveryRoleSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "slot",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "fromValue",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "toValue",
                    "type": "bytes32"
                }
            ],
            "name": "RecoveryStorageSlotSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "ens",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "rootNode",
                    "type": "bytes32"
                }
            ],
            "name": "RegistrarInitialised",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "miner",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "tokensLost",
                    "type": "uint256"
                }
            ],
            "name": "ReputationMinerPenalised",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "hash",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "nLeaves",
                    "type": "uint256"
                }
            ],
            "name": "ReputationMiningCycleComplete",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "inactiveReputationMiningCycle",
                    "type": "address"
                }
            ],
            "name": "ReputationMiningInitialised",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "ReputationMiningRewardSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "newHash",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "newNLeaves",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "address[]",
                    "name": "stakers",
                    "type": "address[]"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "reward",
                    "type": "uint256"
                }
            ],
            "name": "ReputationRootHashSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "skillId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "parentSkillId",
                    "type": "uint256"
                }
            ],
            "name": "SkillAdded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "tokenAuthorityAddress",
                    "type": "address"
                }
            ],
            "name": "TokenAuthorityDeployed",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "tokenAddress",
                    "type": "address"
                }
            ],
            "name": "TokenDeployed",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "tokenLocking",
                    "type": "address"
                }
            ],
            "name": "TokenLockingAddressSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bool",
                    "name": "status",
                    "type": "bool"
                }
            ],
            "name": "TokenWhitelisted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "label",
                    "type": "bytes32"
                }
            ],
            "name": "UserLabelRegistered",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "approveExitRecovery",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_slot",
                    "type": "uint256"
                }
            ],
            "name": "checkNotAdditionalProtectedVariable",
            "outputs": [],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "enterRecoveryMode",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "userAddress",
                    "type": "address"
                },
                {
                    "internalType": "bytes",
                    "name": "payload",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes32",
                    "name": "sigR",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "sigS",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint8",
                    "name": "sigV",
                    "type": "uint8"
                }
            ],
            "name": "executeMetaTransaction",
            "outputs": [
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "stateMutability": "payable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "exitRecoveryMode",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "userAddress",
                    "type": "address"
                }
            ],
            "name": "getMetatransactionNonce",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "nonce",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "isInRecoveryMode",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "inRecoveryMode",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes[]",
                    "name": "data",
                    "type": "bytes[]"
                }
            ],
            "name": "multicall",
            "outputs": [
                {
                    "internalType": "bytes[]",
                    "name": "results",
                    "type": "bytes[]"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "numRecoveryRoles",
            "outputs": [
                {
                    "internalType": "uint64",
                    "name": "numRoles",
                    "type": "uint64"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                }
            ],
            "name": "removeRecoveryRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                }
            ],
            "name": "setRecoveryRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_slot",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes32",
                    "name": "_value",
                    "type": "bytes32"
                }
            ],
            "name": "setStorageSlotRecovery",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes4",
                    "name": "_interfaceID",
                    "type": "bytes4"
                }
            ],
            "name": "supportsInterface",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "_status",
                    "type": "bool"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_reputationMiningCycle",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "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"
                }
            ],
            "name": "setReplacementReputationUpdateLogEntry",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_reputationMiningCycle",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "getReplacementReputationUpdateLogEntry",
            "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 ColonyNetworkDataTypes.ReputationLogEntry",
                    "name": "_reputationLogEntry",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_reputationMiningCycle",
                    "type": "address"
                }
            ],
            "name": "getReplacementReputationUpdateLogsExist",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "_exists",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getMetaColony",
            "outputs": [
                {
                    "internalType": "address payable",
                    "name": "_colonyAddress",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getColonyCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "_count",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_colony",
                    "type": "address"
                }
            ],
            "name": "isColony",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "_addressIsColony",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_parentSkillId",
                    "type": "uint256"
                }
            ],
            "name": "addSkill",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "_skillId",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_skillId",
                    "type": "uint256"
                }
            ],
            "name": "getSkill",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint128",
                            "name": "nParents",
                            "type": "uint128"
                        },
                        {
                            "internalType": "uint128",
                            "name": "nChildren",
                            "type": "uint128"
                        },
                        {
                            "internalType": "uint256[]",
                            "name": "parents",
                            "type": "uint256[]"
                        },
                        {
                            "internalType": "uint256[]",
                            "name": "children",
                            "type": "uint256[]"
                        },
                        {
                            "internalType": "bool",
                            "name": "globalSkill",
                            "type": "bool"
                        },
                        {
                            "internalType": "bool",
                            "name": "deprecated",
                            "type": "bool"
                        }
                    ],
                    "internalType": "struct ColonyNetworkDataTypes.Skill",
                    "name": "_skill",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_skillId",
                    "type": "uint256"
                }
            ],
            "name": "deprecateSkill",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_skillId",
                    "type": "uint256"
                },
                {
                    "internalType": "bool",
                    "name": "_deprecated",
                    "type": "bool"
                }
            ],
            "name": "deprecateSkill",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "_changed",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "initialiseRootLocalSkill",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "_rootLocalSkillId",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "int256",
                    "name": "_amount",
                    "type": "int256"
                },
                {
                    "internalType": "uint256",
                    "name": "_skillId",
                    "type": "uint256"
                }
            ],
            "name": "appendReputationUpdateLog",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getSkillCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "_count",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getReputationMiningSkillId",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "_skillId",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_tokenLockingAddress",
                    "type": "address"
                }
            ],
            "name": "setTokenLocking",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getTokenLocking",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_lockingAddress",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_tokenAddress",
                    "type": "address"
                }
            ],
            "name": "createMetaColony",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_tokenAddress",
                    "type": "address"
                }
            ],
            "name": "createColony",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_colonyAddress",
                    "type": "address"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_tokenAddress",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_version",
                    "type": "uint256"
                },
                {
                    "internalType": "string",
                    "name": "_colonyName",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "_metadata",
                    "type": "string"
                }
            ],
            "name": "createColony",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_colonyAddress",
                    "type": "address"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_tokenAddress",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_version",
                    "type": "uint256"
                },
                {
                    "internalType": "string",
                    "name": "_colonyName",
                    "type": "string"
                }
            ],
            "name": "createColony",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_colonyAddress",
                    "type": "address"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_tokenAddress",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_version",
                    "type": "uint256"
                },
                {
                    "internalType": "string",
                    "name": "_colonyName",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "_orbitdb",
                    "type": "string"
                },
                {
                    "internalType": "bool",
                    "name": "_useExtensionManager",
                    "type": "bool"
                }
            ],
            "name": "createColony",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_colonyAddress",
                    "type": "address"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_tokenAddress",
                    "type": "address"
                },
                {
                    "internalType": "string",
                    "name": "_name",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "_symbol",
                    "type": "string"
                },
                {
                    "internalType": "uint8",
                    "name": "_decimals",
                    "type": "uint8"
                },
                {
                    "internalType": "uint256",
                    "name": "_version",
                    "type": "uint256"
                },
                {
                    "internalType": "string",
                    "name": "_colonyName",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "_metadata",
                    "type": "string"
                }
            ],
            "name": "createColonyForFrontend",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "colony",
                    "type": "address"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_version",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_resolver",
                    "type": "address"
                }
            ],
            "name": "addColonyVersion",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_resolver",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_version",
                    "type": "uint256"
                }
            ],
            "name": "initialise",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "getColony",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_colonyAddress",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getCurrentColonyVersion",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "_version",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_skillId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_parentSkillIndex",
                    "type": "uint256"
                }
            ],
            "name": "getParentSkillId",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "_parentSkillId",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_skillId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                }
            ],
            "name": "getChildSkillId",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "_childSkillId",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bool",
                    "name": "_active",
                    "type": "bool"
                }
            ],
            "name": "getReputationMiningCycle",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_repMiningCycleAddress",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_timeStaked",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_submissonIndex",
                    "type": "uint256"
                }
            ],
            "name": "calculateMinerWeight",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "_minerWeight",
                    "type": "uint256"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_version",
                    "type": "uint256"
                }
            ],
            "name": "getColonyVersionResolver",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_resolverAddress",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_newHash",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint256",
                    "name": "_newNLeaves",
                    "type": "uint256"
                },
                {
                    "internalType": "address[]",
                    "name": "_stakers",
                    "type": "address[]"
                }
            ],
            "name": "setReputationRootHash",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "startNextCycle",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "initialiseReputationMining",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getReputationRootHash",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "rootHash",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getReputationRootHashNLeaves",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "nLeaves",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getReputationRootHashNNodes",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "nNodes",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "startTokenAuction",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_ens",
                    "type": "address"
                },
                {
                    "internalType": "bytes32",
                    "name": "_rootNode",
                    "type": "bytes32"
                }
            ],
            "name": "setupRegistrar",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "_username",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "_orbitdb",
                    "type": "string"
                }
            ],
            "name": "registerUserLabel",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "_colonyName",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "_orbitdb",
                    "type": "string"
                }
            ],
            "name": "registerColonyLabel",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "_orbitdb",
                    "type": "string"
                }
            ],
            "name": "updateColonyOrbitDB",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "_orbitdb",
                    "type": "string"
                }
            ],
            "name": "updateUserOrbitDB",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_node",
                    "type": "bytes32"
                }
            ],
            "name": "getProfileDBAddress",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "_orbitdb",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_addr",
                    "type": "address"
                }
            ],
            "name": "lookupRegisteredENSDomain",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "_domain",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_node",
                    "type": "bytes32"
                }
            ],
            "name": "addr",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_address",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getENSRegistrar",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_address",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_miningResolverAddress",
                    "type": "address"
                }
            ],
            "name": "setMiningResolver",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getMiningResolver",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "miningResolverAddress",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_extensionId",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "_resolver",
                    "type": "address"
                }
            ],
            "name": "addExtensionToNetwork",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_extensionId",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint256",
                    "name": "_version",
                    "type": "uint256"
                }
            ],
            "name": "installExtension",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_extensionId",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint256",
                    "name": "_newVersion",
                    "type": "uint256"
                }
            ],
            "name": "upgradeExtension",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_extensionId",
                    "type": "bytes32"
                },
                {
                    "internalType": "bool",
                    "name": "_deprecated",
                    "type": "bool"
                }
            ],
            "name": "deprecateExtension",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_extensionId",
                    "type": "bytes32"
                }
            ],
            "name": "uninstallExtension",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_extensionId",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint256",
                    "name": "_version",
                    "type": "uint256"
                }
            ],
            "name": "getExtensionResolver",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_resolver",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_extensionId",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "_colony",
                    "type": "address"
                }
            ],
            "name": "getExtensionInstallation",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_installation",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getFeeInverse",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "_feeInverse",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_feeInverse",
                    "type": "uint256"
                }
            ],
            "name": "setFeeInverse",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "getPayoutWhitelist",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "_status",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                },
                {
                    "internalType": "bool",
                    "name": "_status",
                    "type": "bool"
                }
            ],
            "name": "setPayoutWhitelist",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "_stakers",
                    "type": "address[]"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "punishStakers",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "stakeForMining",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "unstakeForMining",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                }
            ],
            "name": "getMiningStake",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "timestamp",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct ColonyNetworkDataTypes.MiningStake",
                    "name": "_info",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_recipient",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "reward",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "burnUnneededRewards",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_recipient",
                    "type": "address"
                }
            ],
            "name": "claimMiningReward",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "setReputationMiningCycleReward",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getReputationMiningCycleReward",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "_name",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "_symbol",
                    "type": "string"
                },
                {
                    "internalType": "uint8",
                    "name": "_decimals",
                    "type": "uint8"
                }
            ],
            "name": "deployTokenViaNetwork",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_colony",
                    "type": "address"
                },
                {
                    "internalType": "address[]",
                    "name": "_allowedToTransfer",
                    "type": "address[]"
                }
            ],
            "name": "deployTokenAuthority",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_tokenAuthority",
                    "type": "address"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_delegate",
                    "type": "address"
                },
                {
                    "internalType": "bool",
                    "name": "_allowed",
                    "type": "bool"
                }
            ],
            "name": "setMiningDelegate",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_delegate",
                    "type": "address"
                }
            ],
            "name": "getMiningDelegator",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "_delegator",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "devdoc": {
        "events": {
            "AuctionCreated(address,address,uint256)": {
                "details": "Emitted from `IColonyNetwork.startTokenAuction` function",
                "params": {
                    "auction": "Address of the created auction contract",
                    "quantity": "Quantity of `token` to auction",
                    "token": "Address of the token for auction"
                }
            },
            "ColonyAdded(uint256,address,address)": {
                "details": "Emitted from `IColonyNetwork.createColony` function",
                "params": {
                    "colonyAddress": "The colony address in the network",
                    "colonyId": "The colony id in the network",
                    "token": "Address of the associated colony token"
                }
            },
            "ColonyLabelRegistered(address,bytes32)": {
                "params": {
                    "colony": "The colony address registered",
                    "label": "The label registered"
                }
            },
            "ColonyNetworkInitialised(address)": {
                "params": {
                    "resolver": "The Resolver contract address used by the Colony version 1"
                }
            },
            "ColonyVersionAdded(uint256,address)": {
                "params": {
                    "resolver": "The new colony contract resolver contract instance",
                    "version": "The new int colony version, e.g. 2, 3, 4, etc"
                }
            },
            "ExtensionAddedToNetwork(bytes32,uint256)": {
                "params": {
                    "extensionId": "The identifier for the extension",
                    "version": "The version of the extension"
                }
            },
            "ExtensionDeprecated(bytes32,address,bool)": {
                "params": {
                    "colony": "The address of the colony",
                    "deprecated": "Whether the extension is deprecated or not",
                    "extensionId": "The identifier for the extension"
                }
            },
            "ExtensionInstalled(bytes32,address,uint256)": {
                "params": {
                    "colony": "The address of the colony",
                    "extensionId": "The identifier for the extension",
                    "version": "The version of the extension"
                }
            },
            "ExtensionUninstalled(bytes32,address)": {
                "params": {
                    "colony": "The address of the colony",
                    "extensionId": "The identifier for the extension"
                }
            },
            "ExtensionUpgraded(bytes32,address,uint256)": {
                "params": {
                    "colony": "The address of the colony",
                    "extensionId": "The identifier for the extension",
                    "version": "The new version of the extension"
                }
            },
            "MetaColonyCreated(address,address,uint256)": {
                "params": {
                    "metaColony": "Address of the MetaColony instance (i.e. EtherRouter)",
                    "rootSkillId": "Id of the root skill of the global skills tree, normally this is 2 Note that the speciat mining skill is created at rootSkillId + 1, so normally this is 3 Skill id 1 is normally the local skill associate with meta colony domain 1",
                    "token": "Address of the associated CLNY token"
                }
            },
            "MiningCycleResolverSet(address)": {
                "params": {
                    "miningCycleResolver": "Resolver address for the ReputationMiningCycle contract"
                }
            },
            "NetworkFeeInverseSet(uint256)": {
                "params": {
                    "feeInverse": "The network fee inverse value"
                }
            },
            "RecoveryModeEntered(address)": {
                "params": {
                    "user": "The address that triggered recovery mode"
                }
            },
            "RecoveryModeExitApproved(address)": {
                "params": {
                    "user": "The address signalling they are happy with the state"
                }
            },
            "RecoveryModeExited(address)": {
                "params": {
                    "user": "The address that left recovery mode"
                }
            },
            "RecoveryRoleSet(address,bool)": {
                "params": {
                    "setTo": "The boolean indicating whether the role is being granted or revoked",
                    "user": "The address being modified"
                }
            },
            "RecoveryStorageSlotSet(address,uint256,bytes32,bytes32)": {
                "params": {
                    "fromValue": "The value the storage slot had before this transaction",
                    "slot": "The storage slot being modified",
                    "toValue": "The value the storage slot has after this transaction",
                    "user": "The address that set the storage slot"
                }
            },
            "RegistrarInitialised(address,bytes32)": {
                "params": {
                    "ens": "Address of ENS registrar",
                    "rootNode": "Namehash of the root node for the domain"
                }
            },
            "ReputationMiningCycleComplete(bytes32,uint256)": {
                "params": {
                    "hash": "The root hash of the newly accepted reputation state",
                    "nLeaves": "The number of leaves in the reputation state"
                }
            },
            "ReputationMiningInitialised(address)": {
                "params": {
                    "inactiveReputationMiningCycle": "Address of the newly created ReputationMiningCycle used in logging reputation changes"
                }
            },
            "ReputationMiningRewardSet(uint256)": {
                "params": {
                    "amount": "Amount of the reward"
                }
            },
            "ReputationRootHashSet(bytes32,uint256,address[],uint256)": {
                "params": {
                    "newHash": "The reputation root hash",
                    "newNLeaves": "The updated leaves count value",
                    "reward": "Amount of CLNY distributed as reward to miners",
                    "stakers": "Array of users who submitted or backed the hash accepted"
                }
            },
            "SkillAdded(uint256,uint256)": {
                "details": "Emitted from `IColonyNetwork.addSkill` function",
                "params": {
                    "parentSkillId": "The id of the parent skill under which this new skill is added",
                    "skillId": "The skill id"
                }
            },
            "TokenAuthorityDeployed(address)": {
                "params": {
                    "tokenAuthorityAddress": "The address of the token authority deployed"
                }
            },
            "TokenDeployed(address)": {
                "params": {
                    "tokenAddress": "The address of the token deployed"
                }
            },
            "TokenLockingAddressSet(address)": {
                "params": {
                    "tokenLocking": "Address of the TokenLocking contract"
                }
            },
            "TokenWhitelisted(address,bool)": {
                "params": {
                    "status": "The whitelist status",
                    "token": "The token being set"
                }
            },
            "UserLabelRegistered(address,bytes32)": {
                "params": {
                    "label": "The label registered",
                    "user": "The user address registered"
                }
            }
        },
        "kind": "dev",
        "methods": {
            "addColonyVersion(uint256,address)": {
                "params": {
                    "_resolver": "Address of the `Resolver` contract which will be used with the underlying `EtherRouter` contract",
                    "_version": "The new Colony contract version"
                }
            },
            "addExtensionToNetwork(bytes32,address)": {
                "details": "Can only be called by the MetaColony.The extension version is queried from the resolver itself.",
                "params": {
                    "_extensionId": "keccak256 hash of the extension name, used as an indentifier",
                    "_resolver": "The deployed resolver containing the extension contract logic"
                }
            },
            "addSkill(uint256)": {
                "details": "Errors if the parent skill does not exist or if this is called by an unauthorised sender.",
                "params": {
                    "_parentSkillId": "Id of the skill under which the new skill will be added. If 0, a global skill is added with no parent."
                },
                "returns": {
                    "_skillId": "Id of the added skill"
                }
            },
            "addr(bytes32)": {
                "params": {
                    "_node": "The namehash of the ENS address being requested"
                },
                "returns": {
                    "_address": "The address the supplied node resolves to"
                }
            },
            "appendReputationUpdateLog(address,int256,uint256)": {
                "details": "Errors if it is called by anyone but a colony or if skill with id `_skillId` does not exist or.",
                "params": {
                    "_amount": "The amount of reputation change for the update, this can be a negative as well as a positive value",
                    "_skillId": "The skill for the reputation update",
                    "_user": "The address of the user for the reputation update"
                }
            },
            "burnUnneededRewards(uint256)": {
                "details": "Only callable by the active reputation mining cycle",
                "params": {
                    "_amount": "The amount of CLNY to burn"
                }
            },
            "calculateMinerWeight(uint256,uint256)": {
                "params": {
                    "_submissonIndex": "Index of reputation hash submission (between 0 and 11)",
                    "_timeStaked": "Amount of time (in seconds) that the miner has staked their CLNY"
                },
                "returns": {
                    "_minerWeight": "The weight of miner reward"
                }
            },
            "checkNotAdditionalProtectedVariable(uint256)": {
                "details": "No return value, but should throw if protected.This is external, but is only expected to be called from ContractRecovery; no need toexpose this to any users.",
                "params": {
                    "_slot": "The storage slot number to check."
                }
            },
            "claimMiningReward(address)": {
                "details": "Can be called by anyone, not just _recipient",
                "params": {
                    "_recipient": "The user whose rewards to claim"
                }
            },
            "createColony(address)": {
                "details": "This is now deprecated and will be removed in a future versionFor the colony to mint tokens, token ownership must be transferred to the new colony",
                "params": {
                    "_tokenAddress": "Address of an ERC20 token to serve as the colony token."
                },
                "returns": {
                    "_colonyAddress": "Address of the newly created colony"
                }
            },
            "createColony(address,uint256,string)": {
                "details": "For the colony to mint tokens, token ownership must be transferred to the new colony",
                "params": {
                    "_colonyName": "The label to register (if null, no label is registered)",
                    "_tokenAddress": "Address of an ERC20 token to serve as the colony token",
                    "_version": "The version of colony to deploy (pass 0 for the current version)"
                },
                "returns": {
                    "_colonyAddress": "Address of the newly created colony"
                }
            },
            "createColony(address,uint256,string,string)": {
                "details": "For the colony to mint tokens, token ownership must be transferred to the new colonyWe expect this function to only be used by the dapp",
                "params": {
                    "_colonyName": "The label to register (if null, no label is registered)",
                    "_metadata": "The metadata associated with the new colony",
                    "_tokenAddress": "Address of an ERC20 token to serve as the colony token",
                    "_version": "The version of colony to deploy (pass 0 for the current version)"
                },
                "returns": {
                    "_colonyAddress": "Address of the newly created colony"
                }
            },
            "createColony(address,uint256,string,string,bool)": {
                "details": "This is now deprecated and will be removed in a future versionFor the colony to mint tokens, token ownership must be transferred to the new colony",
                "params": {
                    "_colonyName": "The label to register (if null, no label is registered)",
                    "_orbitdb": "DEPRECATED Currently a no-op",
                    "_tokenAddress": "Address of an ERC20 token to serve as the colony token",
                    "_useExtensionManager": "DEPRECATED Currently a no-op",
                    "_version": "The version of colony to deploy (pass 0 for the current version)"
                },
                "returns": {
                    "_colonyAddress": "Address of the newly created colony"
                }
            },
            "createColonyForFrontend(address,string,string,uint8,uint256,string,string)": {
                "details": "We expect this function to only be used by the dapp",
                "params": {
                    "_colonyName": "The label to register (if null, no label is registered)",
                    "_decimals": "The number of decimal places that 1 user-facing token can be divided up in to (optional) In the case of ETH, and most tokens, this is 18.",
                    "_metadata": "The metadata associated with the new colony",
                    "_name": "The name of the token (optional)",
                    "_symbol": "The short 'ticket' symbol for the token (optional)",
                    "_tokenAddress": "Address of an ERC20 token to serve as the colony token (optional)",
                    "_version": "The version of colony to deploy (pass 0 for the current version)"
                },
                "returns": {
                    "colony": "colony",
                    "token": "The address of the token - this may just be the passed _tokenAddress"
                }
            },
            "createMetaColony(address)": {
                "params": {
                    "_tokenAddress": "Address of the CLNY token"
                }
            },
            "deployTokenAuthority(address,address,address[])": {
                "details": "This is more expensive than deploying a token directly, but is able to be done via a metatransaction",
                "params": {
                    "_allowedToTransfer": "An array of addresses that are allowed to transfer the token even if it's locked",
                    "_colony": "The address of the colony in control of the token",
                    "_token": "The address of the token"
                },
                "returns": {
                    "_tokenAuthority": "The address of the newly deployed TokenAuthority"
                }
            },
            "deployTokenViaNetwork(string,string,uint8)": {
                "details": "This is more expensive than deploying a token directly, but is able to be done via a metatransaction",
                "params": {
                    "_decimals": "The number of decimal places that 1 user-facing token can be divided up in to In the case of ETH, and most tokens, this is 18.",
                    "_name": "The name of the token",
                    "_symbol": "The short 'ticket' symbol for the token"
                },
                "returns": {
                    "_token": "The address of the newly deployed token"
                }
            },
            "deprecateExtension(bytes32,bool)": {
                "params": {
                    "_deprecated": "Whether to deprecate the extension or not",
                    "_extensionId": "keccak256 hash of the extension name, used as an indentifier"
                }
            },
            "deprecateSkill(uint256)": {
                "details": "This function is deprecated and will be removed in a future release",
                "params": {
                    "_skillId": "Id of the skill"
                }
            },
            "deprecateSkill(uint256,bool)": {
                "params": {
                    "_deprecated": "Deprecation status",
                    "_skillId": "Id of the skill"
                },
                "returns": {
                    "_changed": "Whether the deprecated state was changed"
                }
            },
            "executeMetaTransaction(address,bytes,bytes32,bytes32,uint8)": {
                "params": {
                    "payload": "The transaction data that will be executed if signature valid",
                    "sigR": "The 'r' part of the signature",
                    "sigS": "The 's' part of the signature",
                    "sigV": "The 'v' part of the signature",
                    "userAddress": "The address of the user that signed the metatransaction"
                }
            },
            "getChildSkillId(uint256,uint256)": {
                "params": {
                    "_childSkillIndex": "Index of the `skill.children` array to get",
                    "_skillId": "Id of the skill"
                },
                "returns": {
                    "_childSkillId": "Skill Id of the requested child skill"
                }
            },
            "getColony(uint256)": {
                "params": {
                    "_id": "Id of the colony to get"
                },
                "returns": {
                    "_colonyAddress": "The colony address, if no colony was found, returns 0x0"
                }
            },
            "getColonyCount()": {
                "returns": {
                    "_count": "The colony count"
                }
            },
            "getColonyVersionResolver(uint256)": {
                "params": {
                    "_version": "The Colony contract version"
                },
                "returns": {
                    "_resolverAddress": "Address of the `Resolver` contract"
                }
            },
            "getCurrentColonyVersion()": {
                "returns": {
                    "_version": "The current / latest Colony contract version"
                }
            },
            "getENSRegistrar()": {
                "returns": {
                    "_address": "The address the ENSRegistrar resolves to"
                }
            },
            "getExtensionInstallation(bytes32,address)": {
                "params": {
                    "_colony": "Address of the colony the extension is installed in",
                    "_extensionId": "keccak256 hash of the extension name, used as an indentifier"
                },
                "returns": {
                    "_installation": "The address of the installed extension"
                }
            },
            "getExtensionResolver(bytes32,uint256)": {
                "params": {
                    "_extensionId": "keccak256 hash of the extension name, used as an indentifier",
                    "_version": "Version of the extension"
                },
                "returns": {
                    "_resolver": "The address of the deployed resolver"
                }
            },
            "getFeeInverse()": {
                "returns": {
                    "_feeInverse": "The inverse of the network fee"
                }
            },
            "getMetaColony()": {
                "returns": {
                    "_colonyAddress": "The Meta colony address, if no colony was found, returns 0x0"
                }
            },
            "getMetatransactionNonce(address)": {
                "params": {
                    "userAddress": "The address of the user that will sign the metatransaction"
                }
            },
            "getMiningDelegator(address)": {
                "params": {
                    "_delegate": "The address that wants to mine"
                },
                "returns": {
                    "_delegator": "The address they are allowed to mine on behalf of"
                }
            },
            "getMiningResolver()": {
                "returns": {
                    "miningResolverAddress": "The address of the mining cycle resolver currently used by new instances"
                }
            },
            "getMiningStake(address)": {
                "params": {
                    "_user": "The user to query"
                },
                "returns": {
                    "_info": "The amount staked and the timestamp the stake was made at."
                }
            },
            "getParentSkillId(uint256,uint256)": {
                "params": {
                    "_parentSkillIndex": "Index of the `skill.parents` array to get Note that not all parent skill ids are stored here. See `Skill.parents` member for definition on which parents are stored",
                    "_skillId": "Id of the skill"
                },
                "returns": {
                    "_parentSkillId": "Skill Id of the requested parent skill"
                }
            },
            "getPayoutWhitelist(address)": {
                "params": {
                    "_token": "The token being queried"
                },
                "returns": {
                    "_status": "Will be `true` if token is whitelisted"
                }
            },
            "getProfileDBAddress(bytes32)": {
                "params": {
                    "_node": "The Namehash of the account being queried."
                },
                "returns": {
                    "_orbitdb": "A string containing the address of the orbit database"
                }
            },
            "getReplacementReputationUpdateLogEntry(address,uint256)": {
                "params": {
                    "_id": "The log entry number we wish to see if there is a replacement for",
                    "_reputationMiningCycle": "The address of the reputation mining cycle we are asking about"
                },
                "returns": {
                    "_reputationLogEntry": "ReputationLogEntry instance with the details of the log entry (if it exists)"
                }
            },
            "getReplacementReputationUpdateLogsExist(address)": {
                "params": {
                    "_reputationMiningCycle": "The reputation mining cycle address we want to know if any entries have been replaced in."
                },
                "returns": {
                    "_exists": "Boolean indicating whether there is a replacement log"
                }
            },
            "getReputationMiningCycle(bool)": {
                "params": {
                    "_active": "Whether the user wants the active or inactive reputation mining cycle"
                },
                "returns": {
                    "_repMiningCycleAddress": "address of active or inactive ReputationMiningCycle"
                }
            },
            "getReputationMiningCycleReward()": {
                "returns": {
                    "_amount": "The CLNY awarded per mining cycle to the miners"
                }
            },
            "getReputationMiningSkillId()": {
                "returns": {
                    "_skillId": "The `skillId` of the reputation mining skill."
                }
            },
            "getReputationRootHash()": {
                "returns": {
                    "rootHash": "The current Reputation Root Hash"
                }
            },
            "getReputationRootHashNLeaves()": {
                "details": "I cannot see a reason why a user's client would need to call this - only stored to help with some edge cases in reputation mining dispute resolution.",
                "returns": {
                    "nLeaves": "uint256 The number of leaves in the state tree"
                }
            },
            "getReputationRootHashNNodes()": {
                "details": "Deprecated, replaced by getReputationRootHashNLeaves which does the same thing but is more accurately named.will be removed in a later version.",
                "returns": {
                    "nNodes": "uint256 The number of leaves in the state tree"
                }
            },
            "getSkill(uint256)": {
                "params": {
                    "_skillId": "Id of the skill"
                },
                "returns": {
                    "_skill": "The Skill struct"
                }
            },
            "getSkillCount()": {
                "returns": {
                    "_count": "The skill count"
                }
            },
            "getTokenLocking()": {
                "returns": {
                    "_lockingAddress": "Token locking contract address"
                }
            },
            "initialise(address,uint256)": {
                "details": "Only allowed to be run once, by the Network owner before any Colony versions are added.",
                "params": {
                    "_resolver": "Address of the resolver for Colony contract",
                    "_version": "Version of the Colony contract the resolver represents"
                }
            },
            "initialiseRootLocalSkill()": {
                "returns": {
                    "_rootLocalSkillId": "The root local skill"
                }
            },
            "installExtension(bytes32,uint256)": {
                "params": {
                    "_extensionId": "keccak256 hash of the extension name, used as an indentifier",
                    "_version": "Version of the extension to install"
                }
            },
            "isColony(address)": {
                "params": {
                    "_colony": "Address of the colony"
                },
                "returns": {
                    "_addressIsColony": "true if specified address is a colony, otherwise false"
                }
            },
            "isInRecoveryMode()": {
                "returns": {
                    "inRecoveryMode": "Return true if recovery mode is active, false otherwise"
                }
            },
            "lookupRegisteredENSDomain(address)": {
                "params": {
                    "_addr": "The address we wish to find the corresponding ENS domain for (if any)"
                },
                "returns": {
                    "_domain": "A string containing the colony-based ENS name corresponding to addr"
                }
            },
            "multicall(bytes[])": {
                "details": "The `msg.value` should not be trusted for any method callable from multicall.",
                "params": {
                    "data": "The encoded function data for each of the calls to make to this contract"
                },
                "returns": {
                    "results": "The results from each of the calls passed in via data"
                }
            },
            "numRecoveryRoles()": {
                "returns": {
                    "numRoles": "Number of users with the recovery role."
                }
            },
            "punishStakers(address[],uint256)": {
                "details": "While external, it can only be called successfully by the current ReputationMiningCycle.",
                "params": {
                    "_amount": "Amount of stake to slash",
                    "_stakers": "Array of the addresses of stakers to punish"
                }
            },
            "registerColonyLabel(string,string)": {
                "params": {
                    "_colonyName": "The label to register.",
                    "_orbitdb": "The path of the orbitDB database associated with the colony name"
                }
            },
            "registerUserLabel(string,string)": {
                "params": {
                    "_orbitdb": "The path of the orbitDB database associated with the user profile",
                    "_username": "The label to register"
                }
            },
            "removeRecoveryRole(address)": {
                "params": {
                    "_user": "User we want to remove recovery role from"
                }
            },
            "reward(address,uint256)": {
                "details": "Only callable by the active reputation mining cycle",
                "params": {
                    "_amount": "The amount of CLNY to be awarded",
                    "_recipient": "The address receiving the award"
                }
            },
            "setFeeInverse(uint256)": {
                "params": {
                    "_feeInverse": "The inverse of the network fee to set"
                }
            },
            "setMiningDelegate(address,bool)": {
                "params": {
                    "_allowed": "Whether they are allowed (true) or not (false) to mine on your behalf",
                    "_delegate": "The address you're giving or removing permission from"
                }
            },
            "setMiningResolver(address)": {
                "params": {
                    "_miningResolverAddress": "The address of the Resolver contract with the functions correctly wired."
                }
            },
            "setPayoutWhitelist(address,bool)": {
                "params": {
                    "_status": "The whitelist status",
                    "_token": "The token being set"
                }
            },
            "setRecoveryRole(address)": {
                "params": {
                    "_user": "User we want to give a recovery role to"
                }
            },
            "setReplacementReputationUpdateLogEntry(address,uint256,address,int256,uint256,address,uint128,uint128)": {
                "details": "Note that strictly, `_nUpdates` and `_nPreviousUpdates` don't need to be set - they're only used during dispute resolution, which these replacement log entries are never used for. However, for ease of resyncing the client, we have decided to include them for now.",
                "params": {
                    "_amount": "The amount of reputation being earned / lost",
                    "_colony": "The address of the colony being updated",
                    "_id": "The number of the log entry in the reputation mining cycle in question.",
                    "_nPreviousUpdates": "The number of updates in the log before this entry",
                    "_nUpdates": "The number of updates the log entry corresponds to",
                    "_reputationMiningCycle": "The address of the reputation mining cycle that the log was in.",
                    "_skillId": "The id of the origin skill for the reputation update",
                    "_user": "The address of the user earning / losing the reputation"
                }
            },
            "setReputationMiningCycleReward(uint256)": {
                "details": "Can only be called by the MetaColony.",
                "params": {
                    "_amount": "The CLNY awarded per mining cycle to the miners"
                }
            },
            "setReputationRootHash(bytes32,uint256,address[])": {
                "params": {
                    "_newHash": "The reputation root hash",
                    "_newNLeaves": "The updated leaves count value",
                    "_stakers": "Array of users who submitted or backed the hash, being accepted here as the new reputation root hash"
                }
            },
            "setStorageSlotRecovery(uint256,bytes32)": {
                "details": "certain critical variables are protected from editing in this function",
                "params": {
                    "_slot": "Uint address of storage slot to be updated",
                    "_value": "word of data to be set"
                }
            },
            "setTokenLocking(address)": {
                "params": {
                    "_tokenLockingAddress": "Address of the locking contract"
                }
            },
            "setupRegistrar(address,bytes32)": {
                "params": {
                    "_ens": "Address of ENS registrar",
                    "_rootNode": "Namehash of the root node for the domain"
                }
            },
            "stakeForMining(uint256)": {
                "params": {
                    "_amount": "Amount of CLNY to stake for the purposes of mining"
                }
            },
            "startTokenAuction(address)": {
                "params": {
                    "_token": "Address of the token held by the network to be auctioned"
                }
            },
            "supportsInterface(bytes4)": {
                "details": "Interface identification is specified in ERC-165.",
                "params": {
                    "_interfaceID": "The interface identifier, as specified in ERC-165"
                },
                "returns": {
                    "_status": "`true` if the contract implements `interfaceID`"
                }
            },
            "uninstallExtension(bytes32)": {
                "params": {
                    "_extensionId": "keccak256 hash of the extension name, used as an indentifier"
                }
            },
            "unstakeForMining(uint256)": {
                "params": {
                    "_amount": "Amount of CLNY staked for mining to unstake"
                }
            },
            "updateColonyOrbitDB(string)": {
                "params": {
                    "_orbitdb": "The path of the orbitDB database to be associated with the colony"
                }
            },
            "updateUserOrbitDB(string)": {
                "params": {
                    "_orbitdb": "The path of the orbitDB database to be associated with the user"
                }
            },
            "upgradeExtension(bytes32,uint256)": {
                "params": {
                    "_extensionId": "keccak256 hash of the extension name, used as an indentifier",
                    "_newVersion": "Version of the extension to upgrade to (must be one greater than current)"
                }
            }
        },
        "version": 1
    },
    "userdoc": {
        "events": {
            "AuctionCreated(address,address,uint256)": {
                "notice": "Event logged when a new auction is created and started"
            },
            "ColonyAdded(uint256,address,address)": {
                "notice": "Event logged when a new colony is added"
            },
            "ColonyLabelRegistered(address,bytes32)": {
                "notice": "Event logged when a \"colony.joincolony.eth\" label is registered"
            },
            "ColonyNetworkInitialised(address)": {
                "notice": "Event logged when the colony network is intialised. This is only ever emitted once in a network's lifetime"
            },
            "ColonyVersionAdded(uint256,address)": {
                "notice": "Event logged when a new colony contract version is set"
            },
            "ExtensionAddedToNetwork(bytes32,uint256)": {
                "notice": "Event logged when a new extension resolver is added to the network"
            },
            "ExtensionDeprecated(bytes32,address,bool)": {
                "notice": "Event logged when an extension is (un)deprecated in a colony"
            },
            "ExtensionInstalled(bytes32,address,uint256)": {
                "notice": "Event logged when an extension is installed in a colony"
            },
            "ExtensionUninstalled(bytes32,address)": {
                "notice": "Event logged when an extension is uninstalled from a colony"
            },
            "ExtensionUpgraded(bytes32,address,uint256)": {
                "notice": "Event logged when an extension is upgraded in a colony"
            },
            "MetaColonyCreated(address,address,uint256)": {
                "notice": "Event logged when the MetaColony is created"
            },
            "MiningCycleResolverSet(address)": {
                "notice": "Event logged when the Colony Network ReputationMiningCycleResolver contract address is set"
            },
            "NetworkFeeInverseSet(uint256)": {
                "notice": "Event logged when the network fee inverse is set"
            },
            "RecoveryModeEntered(address)": {
                "notice": "Event logged when recovery mode is triggered."
            },
            "RecoveryModeExitApproved(address)": {
                "notice": "Event logged when someone with recovery mode signals they are happy with the state and wish to leave recovery mode"
            },
            "RecoveryModeExited(address)": {
                "notice": "Event logged when recovery mode is left"
            },
            "RecoveryRoleSet(address,bool)": {
                "notice": "Event logged when user gets/loses the recovery role."
            },
            "RecoveryStorageSlotSet(address,uint256,bytes32,bytes32)": {
                "notice": "Event logged when in recovery mode a storage slot is set"
            },
            "RegistrarInitialised(address,bytes32)": {
                "notice": "Event logged when the ENS registrar is initialised"
            },
            "ReputationMiningCycleComplete(bytes32,uint256)": {
                "notice": "Event logged when a reputation mining cycle completes"
            },
            "ReputationMiningInitialised(address)": {
                "notice": "Event logged when the Reputation mining process is initialised"
            },
            "ReputationMiningRewardSet(uint256)": {
                "notice": "Event logged when the mining reward is set"
            },
            "ReputationRootHashSet(bytes32,uint256,address[],uint256)": {
                "notice": "Event logged when a new reputation root hash is set by the reputation mining process"
            },
            "SkillAdded(uint256,uint256)": {
                "notice": "Event logged when a new skill is added"
            },
            "TokenAuthorityDeployed(address)": {
                "notice": "Event logged when a token authority is deployed via transaction through the colony network"
            },
            "TokenDeployed(address)": {
                "notice": "Event logged when a token is deployed via transaction through the colony network"
            },
            "TokenLockingAddressSet(address)": {
                "notice": "Event logged when the Colony Network TokenLocking contract address is set"
            },
            "TokenWhitelisted(address,bool)": {
                "notice": "Event logged when the payout whitelist is updated"
            },
            "UserLabelRegistered(address,bytes32)": {
                "notice": "Event logged when a \"user.joincolony.eth\" label is registered"
            }
        },
        "kind": "user",
        "methods": {
            "addColonyVersion(uint256,address)": {
                "notice": "Adds a new Colony contract version and the address of associated `_resolver` contract. Secured function to authorised members. Allowed to be called by the Meta Colony only."
            },
            "addExtensionToNetwork(bytes32,address)": {
                "notice": "Add a new extension resolver to the Extensions repository."
            },
            "addSkill(uint256)": {
                "notice": "Adds a new skill to the global or local skills tree, under skill `_parentSkillId`. Only the Meta Colony is allowed to add a global skill, called via `IColony.addGlobalSkill`. Any colony is allowed to add a local skill and which is associated with a new domain via `IColony.addDomain`."
            },
            "addr(bytes32)": {
                "notice": "Returns the address the supplied node resolves do, if we are the resolver."
            },
            "appendReputationUpdateLog(address,int256,uint256)": {
                "notice": "Adds a reputation update entry to log."
            },
            "approveExitRecovery()": {
                "notice": "Indicate approval to exit recovery mode. Can only be called by user with recovery role."
            },
            "burnUnneededRewards(uint256)": {
                "notice": "Used to burn tokens that are not needed to pay out rewards (because not every possible defence was made for all submissions)"
            },
            "calculateMinerWeight(uint256,uint256)": {
                "notice": "Calculate raw miner weight in WADs."
            },
            "checkNotAdditionalProtectedVariable(uint256)": {
                "notice": "Check whether the supplied slot is a protected variable specific to this contract"
            },
            "claimMiningReward(address)": {
                "notice": "Used by a user to claim any mining rewards due to them. This will place them in their balance or pending balance, as appropriate."
            },
            "createColony(address)": {
                "notice": "Creates a new colony in the network, at version 3"
            },
            "createColony(address,uint256,string)": {
                "notice": "Creates a new colony in the network, with an optional ENS name"
            },
            "createColony(address,uint256,string,string)": {
                "notice": "Creates a new colony in the network, with an optional ENS name"
            },
            "createColony(address,uint256,string,string,bool)": {
                "notice": "Overload of the simpler `createColony` -- creates a new colony in the network with a variety of options, at version 4"
            },
            "createColonyForFrontend(address,string,string,uint8,uint256,string,string)": {
                "notice": "Creates a new colony in the network, possibly with a token and token authority, with an optional ENS name"
            },
            "createMetaColony(address)": {
                "notice": "Create the Meta Colony, same as a normal colony plus the root skill."
            },
            "deployTokenAuthority(address,address,address[])": {
                "notice": "Called to deploy a token authority"
            },
            "deployTokenViaNetwork(string,string,uint8)": {
                "notice": "Called to deploy a token."
            },
            "deprecateExtension(bytes32,bool)": {
                "notice": "Set the deprecation of an extension in a colony. Can only be called by a Colony."
            },
            "deprecateSkill(uint256)": {
                "notice": "Mark a skill as deprecated which stops new tasks and payments from using it."
            },
            "deprecateSkill(uint256,bool)": {
                "notice": "Set deprecation status for a skill"
            },
            "enterRecoveryMode()": {
                "notice": "Put colony network mining into recovery mode. Can only be called by user with recovery role."
            },
            "executeMetaTransaction(address,bytes,bytes32,bytes32,uint8)": {
                "notice": "Executes a metatransaction targeting this contract"
            },
            "exitRecoveryMode()": {
                "notice": "Exit recovery mode, can be called by anyone if enough whitelist approvals are given."
            },
            "getChildSkillId(uint256,uint256)": {
                "notice": "Get the id of the child skill at index `_childSkillIndex` for skill with Id `_skillId`."
            },
            "getColony(uint256)": {
                "notice": "Get a colony address by its Id in the network."
            },
            "getColonyCount()": {
                "notice": "Get the number of colonies in the network."
            },
            "getColonyVersionResolver(uint256)": {
                "notice": "Get the `Resolver` address for Colony contract version `_version`."
            },
            "getCurrentColonyVersion()": {
                "notice": "Returns the latest Colony contract version. This is the version used to create all new colonies."
            },
            "getENSRegistrar()": {
                "notice": "Returns the address of the ENSRegistrar for the Network."
            },
            "getExtensionInstallation(bytes32,address)": {
                "notice": "Get an extension's installation."
            },
            "getExtensionResolver(bytes32,uint256)": {
                "notice": "Get an extension's resolver."
            },
            "getFeeInverse()": {
                "notice": "Return 1 / the fee to pay to the network. e.g. if the fee is 1% (or 0.01), return 100."
            },
            "getMetaColony()": {
                "notice": "Get the Meta Colony address."
            },
            "getMetatransactionNonce(address)": {
                "notice": "Gets the next metatransaction nonce for user that should be used targeting this contract"
            },
            "getMiningDelegator(address)": {
                "notice": "Called to get the address _delegate is allowed to mine for"
            },
            "getMiningResolver()": {
                "notice": "Get the resolver to be used by new instances of ReputationMiningCycle."
            },
            "getMiningStake(address)": {
                "notice": "returns how much CLNY _user has staked for the purposes of reputation mining"
            },
            "getParentSkillId(uint256,uint256)": {
                "notice": "Get the id of the parent skill at index `_parentSkillIndex` for skill with Id `_skillId`."
            },
            "getPayoutWhitelist(address)": {
                "notice": "Get a token's status in the payout whitelist"
            },
            "getProfileDBAddress(bytes32)": {
                "notice": "Retrieve the orbitdb address corresponding to a registered account."
            },
            "getReplacementReputationUpdateLogEntry(address,uint256)": {
                "notice": "Get a replacement log entry (if set) for the log entry `_id` in the mining cycle that was at the address `_reputationMiningCycle`."
            },
            "getReplacementReputationUpdateLogsExist(address)": {
                "notice": "Get whether any replacement log entries have been set for the supplied reputation mining cycle.Used by the client to avoid doubling the number of RPC calls when syncing from scratch."
            },
            "getReputationMiningCycle(bool)": {
                "notice": "Get the address of either the active or inactive reputation mining cycle, based on `active`. The active reputation mining cycle is the one currently under consideration by reputation miners. The inactive reputation cycle is the one with the log that is being appended to."
            },
            "getReputationMiningCycleReward()": {
                "notice": "Called to get the total per-cycle reputation mining reward."
            },
            "getReputationMiningSkillId()": {
                "notice": "Get the `skillId` of the reputation mining skill. Only set once the metacolony is set up."
            },
            "getReputationRootHash()": {
                "notice": "Get the root hash of the current reputation state tree."
            },
            "getReputationRootHashNLeaves()": {
                "notice": "Get the number of leaves in the current reputation state tree."
            },
            "getReputationRootHashNNodes()": {
                "notice": "Get the number of leaves in the current reputation state tree."
            },
            "getSkill(uint256)": {
                "notice": "Get the `nParents` and `nChildren` of skill with id `_skillId`."
            },
            "getSkillCount()": {
                "notice": "Get the number of skills in the network including both global and local skills."
            },
            "getTokenLocking()": {
                "notice": "Get token locking contract address."
            },
            "initialise(address,uint256)": {
                "notice": "Initialises the colony network by setting the first Colony version resolver to `_resolver` address."
            },
            "initialiseReputationMining()": {
                "notice": "Creates initial inactive reputation mining cycle."
            },
            "initialiseRootLocalSkill()": {
                "notice": "Initialise the local skills tree for a colony"
            },
            "installExtension(bytes32,uint256)": {
                "notice": "Install an extension in a colony. Can only be called by a Colony."
            },
            "isColony(address)": {
                "notice": "Check if specific address is a colony created on colony network."
            },
            "isInRecoveryMode()": {
                "notice": "Is colony network in recovery mode."
            },
            "lookupRegisteredENSDomain(address)": {
                "notice": "Reverse lookup a username from an address."
            },
            "multicall(bytes[])": {
                "notice": "Call multiple functions in the current contract and return the data from all of them if they all succeed"
            },
            "numRecoveryRoles()": {
                "notice": "Return number of recovery roles."
            },
            "punishStakers(address[],uint256)": {
                "notice": "Function called to punish people who staked against a new reputation root hash that turned out to be incorrect."
            },
            "registerColonyLabel(string,string)": {
                "notice": "Register a \"colony.joincolony.eth\" label. Can only be called by a Colony."
            },
            "registerUserLabel(string,string)": {
                "notice": "Register a \"user.joincolony.eth\" label."
            },
            "removeRecoveryRole(address)": {
                "notice": "Remove colony recovery role. Can only be called by root role."
            },
            "reward(address,uint256)": {
                "notice": "Used to track that a user is eligible to claim a reward"
            },
            "setFeeInverse(uint256)": {
                "notice": "Set the colony network fee to pay. e.g. if the fee is 1% (or 0.01), pass 100 as `_feeInverse`."
            },
            "setMiningDelegate(address,bool)": {
                "notice": "Called to give or remove another address's permission to mine on your behalf"
            },
            "setMiningResolver(address)": {
                "notice": "Set the resolver to be used by new instances of ReputationMiningCycle."
            },
            "setPayoutWhitelist(address,bool)": {
                "notice": "Set a token's status in the payout whitelist"
            },
            "setRecoveryRole(address)": {
                "notice": "Set new colony recovery role. Can be called by root."
            },
            "setReplacementReputationUpdateLogEntry(address,uint256,address,int256,uint256,address,uint128,uint128)": {
                "notice": "Set a replacement log entry if we're in recovery mode."
            },
            "setReputationMiningCycleReward(uint256)": {
                "notice": "Called to set the total per-cycle reputation reward, which will be split between all miners."
            },
            "setReputationRootHash(bytes32,uint256,address[])": {
                "notice": "Set a new Reputation root hash and starts a new mining cycle. Can only be called by the ReputationMiningCycle contract."
            },
            "setStorageSlotRecovery(uint256,bytes32)": {
                "notice": "Update value of arbitrary storage variable. Can only be called by user with recovery role."
            },
            "setTokenLocking(address)": {
                "notice": "Sets the token locking address. This is only set once, and can't be changed afterwards."
            },
            "setupRegistrar(address,bytes32)": {
                "notice": "Setup registrar with ENS and root node."
            },
            "stakeForMining(uint256)": {
                "notice": "Stake CLNY to allow the staker to participate in reputation mining."
            },
            "startNextCycle()": {
                "notice": "Starts a new Reputation Mining cycle. Explicitly called only the first time, subsequently called from within `setReputationRootHash`."
            },
            "startTokenAuction(address)": {
                "notice": "Create and start a new `DutchAuction` for the entire amount of `_token` owned by the Colony Network."
            },
            "supportsInterface(bytes4)": {
                "notice": "Query if a contract implements an interface"
            },
            "uninstallExtension(bytes32)": {
                "notice": "Uninstall an extension in a colony. Can only be called by a Colony."
            },
            "unstakeForMining(uint256)": {
                "notice": "Unstake CLNY currently staked for reputation mining."
            },
            "updateColonyOrbitDB(string)": {
                "notice": "Update a colony's orbitdb address. Can only be called by a colony with a registered subdomain"
            },
            "updateUserOrbitDB(string)": {
                "notice": "Update a user's orbitdb address. Can only be called by a user with a registered subdomain"
            },
            "upgradeExtension(bytes32,uint256)": {
                "notice": "Upgrade an extension in a colony. Can only be called by a Colony."
            }
        },
        "version": 1
    }
}